7.1 数据库设计概述
(1) 数据库设计:是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
- 信息管理要求:在数据库中应该存储和管理哪些数据对象 。
- 数据操作要求:对数据对象需要进行哪些操作,如查询、增、删、改、统计等操作。
(2)数据库设计的目标:是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境 。
- 高效率的运行环境
l数据库数据的存取效率高
l数据库存储空间的利用率高
l数据库系统运行管理的效率高
7.1.1 数据库设计的特点
7.1.3 数据库设计的基本步骤
数据库设计分6个阶段
其中:
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施
- 数据库运行和维护
- 需求分析和概念设计独立于任何数据库管理系统
- 逻辑设计和物理设计与选用的数据库管理系统密切相关
7.2 需求分析
一、数据字典
v数据字典是关于数据库中数据的描述,即元数据,不是数据本身
v数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善
v数据字典是进行详细的数据收集和数据分析所获得的主要结果
v数据字典的内容
- 数据项:数据的最小组成单位
- 数据结构:若干个数据项可以组成一个数据结构
- 数据流
- 数据存储
- 处理过程
※ 数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容
7.3 概念结构设计
将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计
7.3.1 概念模型
7.3.2 E-R模型:描述概念模型的工具
1. 实体之间的联系
(1)两个实体型之间的联系:
①一对一联系(1∶1)
②一对多联系(1∶n)
③多对多联系(m∶n)
详解②一对多联系(1∶n)
- 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1∶n。
- 例如,一个班级中有若干名学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多联系。
③多对多联系(m∶n)
- 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系,记为m∶n。
- 例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系。
2. E-R图
E-R图提供了表示实体型、属性和联系的方法:
①实体型:用矩形表示,矩形框内写明实体名。
②属性:用椭圆形表示,并用无向边将其与相应的实体型连接起来。
Ø例如,学生实体具有学号、姓名、性别、出生年份、系、入学时间等属性,用E-R图表示如图所示
③联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1∶1,1∶n或m∶n)。
- 联系可以具有属性
一个实例:某个工厂物资管理的概念模型。
①物资管理涉及的实体有:
l仓库:属性有仓库号、面积、电话号码
l零件:属性有零件号、名称、规格、单价、描述
l供应商:属性有供应商号、姓名、地址、电话号码、账号
l项目:属性有项目号、预算、开工日期
l职工:属性有职工号、姓名、年龄、职称
②这些实体之间的联系如下:
(1) 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,因此仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量。
(2) 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,因此仓库和职工之间是一对多的联系。
(3) 职工之间具有领导与被领导关系。即仓库主任领导若干保管员,因此职工实体型中具有一对多的联系。
(4) 供应商、项目和零件三者之间具有多对多的联系。即一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供应的零件,每种零件可由不同供应商供给。
③实体-联系图
7.3.3 概念结构设计
1. 实体与属性的划分原则
- 为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待。
- 两条准则:
(1)作为属性,不能再具有需要描述的性质。属性必须是不可分的数据项,不能包含其他属性。
(2)属性不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系。
2. E-R图的集成
E-R图的集成一般需要分两步
①合并。解决各分E-R图之间的冲突,将分E-R图合并起来生成初步E-R图。
②修改和重构。消除不必要的冗余,生成基本E-R图。
(1)合并E-R图,生成初步E-R图
l各个局部应用所面向的问题不同,各个子系统的E-R图之间必定会存在许多不一致的地方,称之为冲突。
l子系统E-R图之间的冲突主要有三类:①属性冲突 ②命名冲突 ③结构冲突
①属性冲突
- 属性域冲突,即属性值的类型、取值范围或取值集合不同。
Ø例如零件号,有的部门把它定义为整数,有的部门把它定义为字符型。
- 属性取值单位冲突。
Ø例如 零件的重量有的以公斤为单位,有的以斤为单位,有的以克为单位。
②命名冲突
- 同名异义,即不同意义的对象在不同的局部应用中具有相同的名字。
- 异名同义(一义多名),即同一意义的对象在不同的局部应用中具有不同的名字。
- 命名冲突
③结构冲突
- 同一对象在不同应用中具有不同的抽象。
Ø例如,职工在某一局部应用中被当作实体,而在另一局部应用中则被当作属性。
Ø解决方法:把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。
- 同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同。
Ø解决方法:使该实体的属性取各子系统的E-R图中属性的并集,再适当调整属性的次序。
- 实体间的联系在不同的E-R图中为不同的类型。
Ø实体E1与E2在一个E-R图中是多对多联系,在另一个E-R图中是一对多联系
Ø解决方法是根据应用的语义对实体联系的类型进行综合或调整。
(2)消除不必要的冗余,设计基本E-R图
l所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。
l消除冗余主要采用分析方法,即以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余。
7.4 逻辑结构设计
逻辑结构设计的任务:把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构
7.4.1 E-R图向关系模型的转换:将实体型、实体的属性和实体型之间的联系转化为关系模式
转换原则
1. 一个实体型转换为一个关系模式。
①关系的属性:实体的属性;②关系的码:实体的码
2. 实体型间的联系的转换
(1) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
①关系的属性:与该联系相连的各实体的码以及联系本身的属性 ②关系的候选码:每个实体的码均是该关系的候选码
- 转换为一个独立的关系模式
- 与某一端实体对应的关系模式合并
①合并后关系的属性:加入对应关系的码和联系本身的属性 ②合并后关系的码:不变
(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
- 转换为一个独立的关系模式
①关系的属性:与该联系相连的各实体的码以及联系本身的属性 ②关系的码:n端实体的码
- 与n端对应的关系模式合并
①合并后关系的属性:在n端关系中加入1端关系的码和联系本身的属性 ②合并后关系的码:不变
(3)一个m:n联系转换为一个关系模式
①关系的属性:与该联系相连的各实体的码以及联系本身的属性 ②关系的码:各实体码的组合
(4)三个或三个以上实体间的一个多元联系转换为一个关系模式。
①关系的属性:与该多元联系相连的各实体的码以及联系本身的属性 ②关系的码:各实体码的组合
(5)具有相同码的关系模式可合并
l目的:减少系统中的关系个数
l合并方法:
Ø 将其中一个关系模式的全部属性加入到另一个关系模式中
Ø 然后去掉其中的同义属性(可能同名也可能不同名)
Ø 适当调整属性的次序
7.5 小结
1.数据库各级模式的形成
2.
- 需求分析阶段:综合各个用户的应用需求(现实世界的需求)。
- 概念设计阶段:概念模式(信息世界模型),用E-R图来描述。
- 逻辑设计阶段:逻辑模式、外模式。
- 物理设计阶段:内模式。
- 在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型如关系模型,形成数据库逻辑模式。
- 然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图,形成数据的外模式
- 在物理设计阶段根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式