数据库系统(四)---关系型数据库设计及E-R图
1、关系型数据库:
关系型数据库是一类采用关系模型作为逻辑数据模型的数据库系统,遵从数据库设计的基本步骤,包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行和维护等阶段。 概念结构设计与逻辑结构设计是关系数据库整个设计过程的关键。
2、关系数据库设计过程与各级模式
在关系数据库设计的不同阶段,会形成数据库的各级模式。
1)需求分析阶段,综合各个用户的应用需求;
2)概念结构设计阶段,形成独立于机器特点、独立于各个关系数据库管理系统产品的概念模式;
3)逻辑结构设计阶段,将 E-R 图转换成具体的数据库产品支持的关系数据模型,形成数据库逻辑模式,然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图,形成数据的外模式;
4)物理结构的设计阶段,根据关系数据库管理系统的特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
注:详细了解,请参考数据模式https://www.cnblogs.com/huyangshu-fs/p/11620600.html
3、 概念结构设计方法
关系数据库的概念结构设计通常采用自顶向下法,它通过两个步骤来完成概念设计,首先建立局部信息结构,然后将局部信息结构合成为全局信息结构并优化,使用 E-R 图作为概念模型的描述工具。
1)局部信息结构设计
局部信息结构设计:根据需求分析报告中标明的不同用户视图范围所建立的满足该范围内用户需求的信息结构,称为局部信息结构。
局部信息结构设计的步骤包括:确定局部范围;选择实体;选择实体关键字; 确定实体间联系;确定实体的属性。
2)E-R 图的表示方法
概念结构设计就是将需求分析得到的用户需求抽象为信息结构的过程,通常使用 E-R 图来作为描述现实世界的建模工具。E-R 图提供了表示信息世界中实体、属性和联系的方法。
1.实体型,用矩形表示,写明实体的名称;
2.属性,用椭圆形表示,并用无向边将其与其相应的实体连接起来。
3.联系,用菱形表示,写明联系的名称,用无向边分别与有关实体连接起来,同时在无向边旁标注联系的类型(1:1、1:N 或 M:N),如果一个联系具有属性, 则这些属性也要用无向边与该联系连接起来。
两个实体型之间、两个以上的实体型之间以及单个实体型内的联系,都会存在如下关系: 一对一联系(1:1) 一对多联系(1:N) 多对多联系(M:N)
3)全局信息结构设计
全局信息结构设计是将上述步骤中产生的所有局部信息结构合并成为一个全局信息结构。 各局部 E-R 图之间的冲突主要表现在三个方面:
3.1).属性冲突:属性域冲突和属性取值单位冲突。
3.2).命名冲突:同名异义和异名同义。
3.3).结构冲突:
① 同一对象在一个局部 E-R 图中作为实体,而在另一个 局部 E-R 图中作为属性;
② 同一实体在不同的 E-R 图中属性个数和类型不同;
③ 实体之间的联系在不同的 E-R 图中是不同的类型。
eg:
【例】设有如下实体:
学生:学号,姓名,性别
课程:课程号,课程名,学分
班级:班号,班名,
其中,每个班有若干学生,每个学生只可以在—个班级学习;每个学生可选修多门课程,每门课程可被多个学生选修,学生选修课程要记录成绩。
1. 试画出反映上述实体关系的 E-R 图(不必画实体的属性)。
注意:学生选修课程之后才能有成绩,故成绩是选修(联系)的属性。
4、逻辑结构设计方法
逻辑结构设计的任务是把在概念结构设计产生的概念模型转换为具体的 DBMS 所支持的逻辑数据模型,也就是导出特定的 DBMS 可以处理的数据库逻辑结构。 通常包括三项工作:将 E-R 图转换为关系模型、对关系数据模型进行优化、设计面向用户的外模式。
1)E-R 图向关系模型的转换 遵循原则如下:
1. 一个实体型转换为一个关系模式。
2. 一个一对一联系可以转换为一个独立的关系模式。
3. 一个一对多联系可以转换为一个关系模式。
4. 一个多对多联系转换为一个关系模式。
5. 具有相同码的关系模式可合并。
eg:
使用3中的示例,将E-R图转化为关系模式,并说明主外键
(1)一个实体型对应一个关系模式:
R学生(学号,姓名,性别)
R课程(课程号,课程名,学分)
R班级(班号,班名)
(2)一个一对多联系可转化为一个关系模式(中间表)
R属于(学号、班号)外键 学号 和 班号
(3)一个多对多联系可转化为一个关系模式(中间表)
R选修(学号、课程号、成绩)外键 学号 和 课程号
(4)R学生和R属于可合并成一张表
R学生(学号、姓名、性别、班号)外键 班号
2)数据模型的优化 方法如下:
1.确定各属性间的函数依赖关系。
2.对于各个关系模式的范式,根据实际需要确定最合适的范式。
3.判断每个关系模式的范式,根据实际需要确定最合适的范式。
4.按照需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否 合适,确定是否要对某些模式进行合并或分解。
5.对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率。
3)设计用户子模式 定义用户模式具体包括以下几个方面:
1.可以通过视图机制在设计用户视图时,重新定义某些属性的别名,使其更符合用户的习惯,以方便使用。
2.可以对不同级别的用户定义不同的视图,以保证系统的安全性。
3.简化用户对系统的使用。
5、物理设计方法
关系数据库系统的优点之一是用户通常不需要进行数据存储结构和存取方法的设计。
物理设计的任务主要是通过对关系建立索引和聚集来实现与应用相关数据的逻辑连接和物理聚集,以改善对数据库的存取效率。
1)建立索引
索引的建立是通过 DBMS 提供的有关命令来实现的。 用以建立索引的那些属性也应是其所在关系中使用频率较高的属性。 建立索引的方式通常有静态和动态两种。 静态建立索引是指应用人员预先建立索引,一旦建立,后续的应用程序均可直 接使用该索引存取数据,它多适合于用户较多且使用周期相对较长的数据;动 态建立索引是指应用人员在程序内外临时建立索引,它多适合于单独用户或临 时性使用要求情况。
2) 建立聚集
聚集是将相关数据集中存放的物理存储技术,借以提高 I/O 的数据命中率而改 善存取速度,其功能由具体的 DBMS 所提供,如 MySQL。 数据聚集结构的一种有效方式是块结构方式,块与块之间由指针连接,一个块对应于一个物理分区。
数据库系统(四)---关系型数据库设计及E-R图的更多相关文章
- Python3编写网络爬虫11-数据存储方式四-关系型数据库存储
关系型数据库存储 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表保存的,所以它的存储方式就是行列组成的表.每一列是一个字段,每一行是一条记录.表可以看作某个实体的集合,而实体之间存在联系, ...
- 基于E-R模型的关系型数据库设计方法
摘要 在管理信息系统开发中,数据库设计的目标是建立DBMS能识别的关系数据模型.而关系数据模型建立的基础是首先建立E-R模型,通过E-R模型才能转换为关系数据模型.如何建立E-R模型以及如何将E-R模 ...
- 一、MySQL中的索引 二、MySQL中的函数 三、MySQL数据库的备份和恢复 四、数据库设计和优化(重点)
一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放 ...
- 关系型数据库设计——E-R图
一.数据管理技术的三个发展阶段: 1)人工管理阶段(20世纪50年代中期) 特点:数据不保存:应用程序管理数据:数据不共享:数据没有独立性: 2)文件系统阶段(20世纪50年代后—60年代)特点:数据 ...
- Mysql第四天 数据库设计
不考虑主备.集群等方案,基于业务上的设计主要是表结构及表间关系的设计. 而关于表中字段主要是依据业务来进行定义,我们能够指定的大概有这么几项: 存储引擎 一般用InnoDB,特殊需求特殊选用 字符集和 ...
- 数据库设计系列之四--ER图
逻辑设计是做什么? 1.将需求转化为数据库的逻辑模型 2.通过ER图的型式对逻辑模型进行展示 3.同所选用的具体的DBMS系统无关
- 初识关系型数据库(SQL)与非关系型数据库(NOSQL)
一.关系型数据库(SQL): Mysql,oracle 特点:数据和数据之间,表和字段之间,表和表之间是存在关系的 例如:部门表 001部分, 员工表 001 用户表,用户名.密码 分类表 和 商 ...
- 非关系型数据库Nosql的优缺点分析
Nosql的全称是Not Only Sql,Nosql指的是非关系型数据库,而我们常用的都是关系型数据库.就像我们常用的mysql,oralce.sqlserver等一样,这些数据库一般用来存储重要信 ...
- [MySQL] 关系型数据库的设计范式 1NF 2NF 3NF BCNF
一.缘由: 要做好DBA,就要更好地理解数据库设计范式.数据库范式总结概览: 为了更好地理解数据库的设计范式,这里借用一下知乎刘慰老师的解释,很通俗易懂.非常感谢! 二.具体说明: 首先要明白”范 ...
随机推荐
- JDOJ 1770 埃及分数
JDOJ 1770: 埃及分数 https://neooj.com/oldoj/problem.php?id=1770 Description 分子均为1的分数叫做埃及分数,因为古代埃及人在进行分数运 ...
- LG5200 「USACO2019JAN」Sleepy Cow Sorting 树状数组
\(\mathrm{Sleepy Cow Sorting}\) 问题描述 LG5200 题解 树状数组. 设\(c[i]\)代表\([1,i]\)中归位数. 显然最终的目的是将整个序列排序为一个上升序 ...
- 单交换机VLAN划分(基于Cisco模拟器)
实验目的: (1)掌握交换机配置的几种模式及基本配置命令. (2)掌握VLAN的原理及基于交换机端口的VLAN划分方法. 实验设备: 交换机一台,主机四台,直通线四根 实验步骤: 1.给交换机划分VL ...
- 4.Go-结构体、结构体指针和方法
4.1.结构体 结构体:将一个或多个变量组合到一起形成新的类型,这个类型就是结构体,结构体是值类型 定义结构体和赋值 //Learn_Go/main.go package main import &q ...
- TCP/UDP通信中server和client是如何知道对方IP地址的
在TCP通信中 client是主动连接的一方,client对server的IP的地址提前已知的.如果是未知则是没办法通信的. server是在accpet返回的时候知道的,因为数据包中包含客户端的IP ...
- [LeetCode] 234. Palindrome Linked List 回文链表
Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false ...
- Idea用maven给springboot打jar包
一.准备工作 1.工具:Idea2018,maven3.5 2.首先得保证pom有maven插件 <plugin> <groupId>org.springframework.b ...
- (十六)golang--匿名函数
Go支持匿名函数,如果我们某个函数只是使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用: 匿名函数的使用方式:(1)在定义匿名函数的时候就直接调用,这种方式匿名函数只调用一次: (2)将匿名 ...
- swiper轮播,添加鼠标移入事件停止轮播,移出重新开启轮播
已测过无问题.
- python]用eval强制将字符串转换为字典变量时候出错:NameError: name 'null' is not defined[python]用eval函数 字符串转dict
本博客已搬家至个人网站 在路上 - On the way 下面的 技术 分类. 你可以通过点击 更新帖子 [已解决]Python中,用eval强制将字符串转换为字典变量时候出错:NameError: ...