目录
将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计,它是整个数据库设计的关键
一:E-R模型
(1)两个实体之间的联系
前面的文章中就说过:在现实世界中,事物内部以及事物之间是有联系的。实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体型的实体集之间的联系
一般地,把参与联系的实体型的数目称为联系的度
- 两个实体型之间的联系度为2,也称为二元联系
- 三个实体型之间的联系度为3,称为三元联系
- N个实体型之间的联系|度为N,也称为N元联系
①:一对一联系(1:1)
一对一联系(1:1):如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1
- 例如,学校里一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与班长之间是1:1关系
②:一对多联系(1:n)
一对多联系(1:n):如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。
- 例如,一个班级中有若干名学生,而每个学生只在一个班级中学习, 则班级与学生之间具有一对多联系
③:多对多联系(m:n)
多对多联系(m:n):如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系;反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系,记为m:n
- 例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系。
(2)两个以上实体型之间的联系
两个以上实体型之间也存在着一对一、一对多或多对多的联系
- 例如,对于课程、教师与参考书三个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多的
- 又如,有三个实体型:供应商、项目、零件,一个供应商可以供给多个项目多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,由此看出供应商、项目、零件三者之间是多对多的联系
(3)单个实体型内的联系
同一个实体集内的各实体之间也可以存在一对一、一对多和多对多的联系
- 例如,职工实体型内部具有领导与被领导的联系,即某一职工 (干部)“领导”若干名职工,而一个职工仅被另外一个职工直接领导,因此这是一对多的联系
二:E-R图
(1)定义
使用实体联系图可以建立数据模型,利用E-R图描绘的数据模型称之为E-R模型
- 实体: 描述的数据对象
- 属性: 描述数据对象的性质
- 联系: 描述数据对象之间的交互方式
(2)符号表示
(3)E-R模型的优点
- E-R模型比较接近人的思维习惯方式
- E-R模型使用简单的图形符号表达,便于用户理解
(4)示例
一个学生可选修多门课,一门课有若干学生选修;一个教师可讲授多门课,一门课只有一个教师讲授;学生选修一门课,产生成绩;学生的属性有学号、姓名等;教师的属性有教师编号,教师姓名等;课程的属性有课程号、课程名等。请画出该系统E-R图
三:概念结构设计
(1)实体与属性的划分原则
概念结构设计的第一步就是对需求分析阶段收集到的数据进行分类、 组织,确定实体、实体的属性、实体之间的联系类型,形成E-R图。由于实体与属性之间并没有形式上可以划分的界限,所以这个看似简单的问题也时长困扰着设计人员
划分原则:为了简化E-R图的处置,现实世界的事物能作为属性对待的尽量作为属性对待。如果能满足下述两条原则,一般均可作为属性对待
- ① 作为属性,不能再具有需要描述的性质,也即属性必须是不可分的数据项,不能包含其他属性
- ② 属性不能与其他实体具有联系,也即E-R图中所表示的联系是实体之间的联系
【例如】职工是一个实体,职工号、姓名、年龄是职工的属性,职称如果没有与工资、岗位津贴、福利挂钩,换句话说,没有需要进一步描述的特性,则根据准则①可以作为职工实体的属性;但如果不同的职称有不同的工资、岗位津贴和不同的附加福利,则职称作为一个实体看待就更恰当
【例如】在医院中一个病人只能住在一个病房,病房号可以作为病人实体的一个属性;但如果病房还要与医生实体发生联系,即一个医生负责几个病房的病人的医疗工作,则根据准则②病房应作为一个实体
(2)E-R图的集成
A:什么是E-R图的集成
E-R图的集成:在开发一个大型信息系统时,最经常采用的策略是自顶向下地进行需求分析,然后再自底向上地设计概念结构。即首先设计各子系统的分E-R图,然后将它们集成起来,得到全局E-R图。E-R图的集成一般需要两步
- 合并:解决各分E-R图之间的冲突,将分E-R图合并起来生成初步E-R图
- 修改和重构:消除不必要的冗余,生成基本E-R图
B:第一步——合并E-R图,生成初步E-R图
冲突:各个局部应用所面向的问题不同,且通常是由不同的设计人员进行局部视图设计,这就导致各个子系统的E-R图之间必定会存在许多不一致的地方,称之为冲突。冲突主要有三类
- 属性冲突
- 命名冲突
- 结构冲突
①:属性冲突
主要包含以下两类冲突
- 属性域冲突:即属性值的类型、取值范围或取值集合不同。例如零件号,有的部门把它定义为整数,有的部门把它定义为字符型,不同部门对零件号的编码也不同。又如年龄,某些部门以出生日期形式表示职工的年龄,而另一些部门用整数表示职工的年龄
- 属性取值单位冲突:例如,零件的重量有的以公斤为单位,有的以斤为单位,有的以克为单位
②:命名冲突
命名冲突可能发生在实体、联系一级上,也可能发生在属性一级上。其中属性的命名冲突更为常见
主要包含以下两类冲突
- 同名异义:即不同意义的对象在不同的局部应用中具有相同的名字
- 异名同义:即同一意义的对象在不同的局部应用中具有不同的名字
③:结构冲突
主要包含以下三类冲突
-
同一对象在不同应用中具有不同的抽象:例如,职工在某一 局部应用中被当作实体,而在另一局部应用中则被当作属性。解决方法通常是把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象
-
同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同(常见):原因是不同的局部应用关心的是该实体的不同侧面。解决方法是使该实体的属性取各子系统的E-R图中属性的并集,再适当调整属性的次序
-
实体间的联系在不同的E-R图中为不同的类型:如实体E1与E2在一个E-R图中是多对多联系,在另一个E-R图中是一对多联系。解决方法是根据应用的语义对实体联系的类型进行综合或调整
C:第二步——消除不必要的冗余,设计基本的E-R图
冗余数据和冗余联系:在初步E-R图中可能存在一些冗余的数据和实体间冗余的联系
- 冗余的数据:可由基本数据导出的数据
- 冗余的联系:可由其他联系导出的联系