资源描述
数据库系统工程师-02实体-联系模型
———————————————————————————————— 作者:
———————————————————————————————— 日期:
8
个人收集整理 勿做商业用途
第二章 实体—联系模型(概念数据库设计)
2.1 数据库设计过程
需求分析
概念数据库设计
逻辑数据库设计
确定存储哪些数据,建立哪些应用,常用的操作及对象有哪些等。
对需求分析所得到数据的更高层的抽象描述。
将概念模型所描述的数据映射为某个特定的DBMS模式数据。将E-R模型转换为关系模型。
ER模型
ODL
物理设计阶段
数据库实施阶段
数据库运行与维护阶段
确定物理结构,选定DBMS。
建立实际数据库结构。调试及运行。
2.2 基本概念
2.2.1 1976年,P。P。S。Chen提出E—R模型(Entity-Relationship Model),用E—R图来描述概念模型。
观点:世界是由一组称作实体的基本对象和这些对象之间的联系构成的。
2.2.2 基本概念
(1)实体(Entity):客观存在并可相互区分的事物叫实体。如学生张三、工人李四、计算机系、数据库概论。
(2)属性(Attribute):实体所具有的某一特性。一个实体可以由若干个属性来刻画。例如,学生可由学号、姓名、年龄、系、年级等组成。
(4)域(Domain):属性的取值范围。例如,性别的域为(男、女),月份的域为1到12的整数。
(5)实体型(Entity Type):实体名与其属性名集合共同构成实体型.例,学生(学号、姓名、年龄、性别、系、年级).注意实体型与实体(值)之间的区别,后者是前者的一个特例。如学生(9808100,王平,21,男,计算机系,2)是一个实体。
(6)实体集(Entity Set):同型实体的集合称为实体集。如全体学生。
联系(Relationship):实体之间的相互关联。如学生与老师间的授课关系,学生与学生间有班长关系.联系也可以有属性,如学生与课程之间有选课联系,每个选课联系都有一个成绩作为其属性。同类联系的集合称为联系集。
(7)元或度(Degree):参与联系的实体集的个数称为联系的元。如学生选修课程是二元联系,供应商向工程供应零件则是三元联系。
主讲老师
学生
课程
选修
学号
姓名
系别
课程名
先修课
成绩
用矩形表示实体集,在框内写上实体名
用椭圆表示实体的属性
用无向边把实体与其属性连接起来
用菱形表示实体间的联系
将参与联系的实体用线段连接
(8)码(Key):
A、候选码:关系中的某一属性或属性组的值能唯一地标识一个元组,称该属性或属性组为候选码.
B、主码:一个关系有多个候选码,从中选定一个用来区别同一实体集中的不同实体,称作主码。一个实体集中任意两个实体在主码上的取值不能相同.
如学号是学生实体的码。通讯录(姓名,邮编,地址,电话,Email,BP)
C、外码:
D、全码:关系模型中所有属性组是这个关系模式的候选码,称为全码。
学生
课程
选修
学号
姓名
系别
课程名
先修课
主讲老师
(9)参与(Participation):实体集之间的关联称为参与,即实体参与联系.如王军选修“数据库基础”,表示实体“王军"与 “数据库基础”参与了联系“选修”。如果实体集E中的每个实体都参与到联系集R中的至少一个联系,则称E全部参与R。如果实体集E中只有部分实体参与到联系集R的联系中,则称E部分参与R。如“职工"与“部门”之间的“管理”联系,“职工”实体集部分参与,而“部门”实体集完全参与。
(10)角色(Role):实体在联系中的作用称为实体的角色。当同一个实体集不止一次参与一个联系集时,为区别各实体的参与联系的方式,需要显式指明其角色.如学生与班长关系,职工与职工之间的经理关系,课程之间的先修关系。
员工
管理
管理
工作
2.2.3 属性类型
(1)简单属性 :不可再分的属性。如学号、年龄、性别.
(2) 复合(Composite)属性:可以划分为更小的属性。可以把相关属性聚集起来,使模型更清晰。如电话号码=区号+本地号码
(3)单值属性:每一个特定的实体在该属性上的取值唯一。如学生的学号,年龄、性别、系别等。
(4)多值属性:某个特定的实体在该属性上的有多于一个的取值.如学生(学号,所选课程,联系电话),的“所选课程”,“联系电话"。
(5)NULL属性:Null表示“无意义”,当实体在某个属性上没有值时设为Null。
如通讯录(姓名,email,电话,BP),若某人没有email地址,则在email属性上取值为null。null表示“值未知”,即值存在,但目前没有获得该信息.
如职工(姓名,部门,工种,身份证),如果目前不知道职工身份证号码,则设身份证值为null.
实体完整性:作为主码的属性上取值不能为null。
(6)派生(Derived)属性与基属性:可以从其他相关的属性或实体派生出来的属性值.如学生(学号,姓名,平均成绩),选课(学号,课程号,成绩),则平均成绩可由学生所选课程的总成绩除以课程总数来得到.称平均成绩为派生属性,而成绩为基属性,或存储属性.数据库中,一般只存基属性值,而派生属性只存其定义或依赖关系,用到时再从基属性中计算出来。
基本表 VS 视图
多值属性用双椭圆表示,或用双线与实体相连。
学生
选修课程
姓名
派生属性用虚椭圆表示,或用虚线与实体相连
学生
平均成绩
姓名
系别
2.3 映射约束
2.3.1 映射的基数(Mapping Cardinalities):
实体之间的联系的数量,即一个实体通过一个联系集能与另一实体集相关联的实体的数目.
可以有一对一的(1:1),一对多的(1:m),多对多的(m:n)几种情况。
在E-R图中,用箭头或线段来表示联系的映射基数.
A
B
R
单方实体集
A
B
R
联系R从A到B是一对一或多对一
联系R从A到B是多对多或一对多
(1)二元联系集的映射基数:一对一、一对多、多对多
(2)一个实体集内的二元联系:一对一、一对多、多对多
(3)多个实体集间联系的情况
2.3.2存在依赖(Existence Dependency)
如果实体x的存在依赖于实体y的存在,则称x存在依赖于y。
y称作支配实体,x称作从属实体。如果y被删除,则x也要被删除。考虑员工亲属的例子
2.3.3 弱实体集(Weak Entity Set)
如果一个实体集的所有属性都不足以形成主码,则称这样的实体集为弱实体集。
弱实体集与其拥有者之间的联系称作标识性联系(identifying relationship)。
弱实体集与强实体集之间是一对多的联系.
弱实体集必然存在依赖于强实体集(Strong Entity Set)。存在依赖并不总会导致一个弱实体集,从属实体集可以有自己的主码。
如实体集信用卡(信用卡号,客户帐号,金额),它存在依赖于客户帐号实体集,但信用卡有自己的主码信用卡号。
2.3.4为什么使用弱实体集
通过为弱实体集加上合适的属性,可转变为强实体集,为什么还要使用弱实体集?
(1)避免数据冗余(强实体集码重复),以及因此带来的数据的不一致性.
(2)弱实体集反映了一个实体对其它实体依赖的逻辑结构。
(3)弱实体集可以随它们的强实体集的删除而自动删除。
(4)弱实体集可以物理地随它们的强实体集存储.
亲属
员工
有
亲属名
名称
2.3.5 复合实体
复合实体的主码一般由两个(或两个以上)联系
2.3.6 实体的超类与子类
举例:飞行员工与普通员工。
超类名称
子类1
子类2
2.4 数据抽象与E—R模型设计步骤
(1)数据抽象
(2)设计局部E-R模型
(3)设计全局E-R模型
A、合并局部E—R图,生成初步E—R图:可能发生的问题,属性冲突,名称冲突,结构冲突.
B、消除冗余生成E-R图
2.5 将E-R模型转换成数据库一般规则
(1)将每一个实体转换成一个关系。
(2)所有主码必须定义非空。
(3)对于二元联系,按照规则定义外码。
A、一对多:将“一”表中的主码作为外码放在“多”表中,外码总是在“多”的一方.
B、弱实体:将父表的主码作为外码放在弱实体中.弱实体的主码由父表的主码与弱实体本身的候选码组成.也可以为弱实体建立新的独立的标识符ID。
C、一对一:将一个表的主码作为外码放在另一个表中,外码通常是放在操作比较频繁的表中.也可以将两个实体合并成一个实体。
D、多对多:建立复合实体,复合实体的主码由两个父实体的主码复合组成。复合实体的主码也是外码.
展开阅读全文