Download presentation
Presentation is loading. Please wait.
Published byAri-Pekka Lattu Modified 5年之前
1
第二章 实体-联系模型 数据库设计过程 基本概念 映射约束 弱实体集 扩展ER特性 ER模型设计要点 概念数据库设计实例
2
数据库设计过程 需求分析 概念数据库设计 逻辑数据库设计 确定存储哪些数据,建立哪些应用,常用的操作及对象有哪些等。 ER模型 ODL
对需求分析所得到数据的更高层的抽象描述。 概念数据库设计 逻辑数据库设计 将概念模型所描述的数据映射为某个特定的DBMS模式数据。
3
基本概念(Ⅰ) 1976年,P.P.S.Chen提出E-R模型(Entity-Relationship Model),用E-R图来描述概念模型。 观点:世界是由一组称作实体的基本对象和这些对象之间的联系构成的。
4
基本概念(Ⅱ) 实体(Entity): 属性(Attribute): 域(Domain): 客观存在并可相互区分的事物叫实体。
如学生张三、工人李四、计算机系、数据库概论。 属性(Attribute): 实体所具有的某一特性。一个实体可以由若干个属性来刻画。 例如,学生可由学号、姓名、年龄、系、年级等组成。 域(Domain): 属性的取值范围。 例如,性别的域为(男、女),月份的域为1到12的整数。
5
基本概念(Ⅲ) 实体型(Entity Type): 实体集(Entity Set): 实体名与其属性名集合共同构成实体型。
例,学生(学号、姓名、年龄、性别、系、年级)。 注意实体型与实体(值)之间的区别,后者是前者的一个特例。 如( ,王平,21,男,计算机系,2)是一个实体。 实体集(Entity Set): 同型实体的集合称为实体集。 如全体学生。
6
基本概念( Ⅳ ) 联系(Relationship): 元或度(Degree): 实体之间的相互关联。
如学生与老师间的授课关系,学生与学生间有班长关系。 联系也可以有属性,如学生与课程之间有选课联系,每个选课联系都有一个成绩作为其属性。 同类联系的集合称为联系集。 元或度(Degree): 参与联系的实体集的个数称为联系的元。 如学生选修课程是二元联系,供应商向工程供应零件则是三元联系。
7
基本E-R图要点 学生 选修 课程 例:学生选修课程 用椭圆表示实体的属性 姓名 学号 系别 课程名 先修课 主讲老师
用无向边把实体与其属性连接起来 将参与联系的实体用线段连接 成绩 用矩形表示实体集,在框内写上实体名 用菱形表示实体间的联系
8
基本概念( Ⅴ ) 码(Key): 能唯一标识实体的属性或属性组称作超码。 超码的任意超集也是超码。
其任意真子集都不能成为超码的最小超码称为候选码。 从所有候选码中选定一个用来区别同一实体集中的不同实体,称作主码。 一个实体集中任意两个实体在主码上的取值不能相同。 如学号是学生实体的码。 通讯录(姓名,邮编,地址,电话, ,BP)
9
码在E-R图中的表示 学生 选修 课程 表示要点: 实体集属性中作为主码的一部分的属性用下划线来标明。 姓名 学号 系别 课程名 先修课
主讲老师 学生 选修 课程
10
基本概念(Ⅵ) 参与(Participation): 实体集之间的关联称为参与,即实体参与联系。
如王军选修“数据库基础”,表示实体“王军”与 “数据库基础”参与了联系“选修”。 如果实体集E中的每个实体都参与到联系集R中的至少一个联系,则称E全部参与R。 如果实体集E中只有部分实体参与到联系集R的联系中,则称E部分参与R。 如“职工”与“部门”之间的“经理”联系,“职工”实体集部分参与,而“部门”实体集完全参与。
11
基本概念(Ⅶ) 角色(Role): 实体在联系中的作用称为实体的角色。
当同一个实体集不止一次参与一个联系集时,为区别各实体的参与联系的方式,需要显式指明其角色。 如学生与学生间的班长关系,职工与职工之间的经理关系,课程之间的先修关系。
12
角色在E-R图中的表示 表示要点: 当需要显式区分角色时,在连接菱形和矩形的线上加上说明性标注以区别不同的角色。 管理 职员 雇佣 工作
13
属性的类型(Ⅰ) 简单属性 : 复合(Composite)属性: 1NF Vs 嵌套关系 不可再分的属性。 如学号、年龄、性别。
可以划分为更小的属性。 可以把相关属性聚集起来,使模型更清晰。 如电话号码=区号+本地号码 出生日=年+月+日 1NF Vs 嵌套关系
14
属性的类型(Ⅱ) 单值属性: 多值属性: 每一个特定的实体在该属性上的取值唯一。 如学生的学号,年龄、性别、系别等。
某个特定的实体在该属性上的有多于一个的取值。 如学生(学号,所选课程,联系电话)。
15
属性的类型(Ⅲ) NULL属性: null表示“无意义”,当实体在某个属性上没有值时设为null。
如通讯录(姓名, ,电话,BP),若某人没有 地址,则在 属性上取值为null。 null表示“值未知”,即值存在,但目前没有获得该信息。 如职工(姓名,部门,工种,身份证),如果目前不知道职工身份证号码,则设身份证值为null。 实体完整性:作为主码的属性上取值不能为null。
16
属性的类型(Ⅳ) 派生(Derived)属性与基属性: 可以从其他相关的属性或实体派生出来的属性值。
如学生(学号,姓名,平均成绩),选课(学号,课程号,成绩),则平均成绩可由学生所选课程的总成绩除以课程总数来得到。称平均成绩为派生属性,而成绩为基属性,或存储属性。 数据库中,一般只存基属性值,而派生属性只存其定义或依赖关系,用到时再从基属性中计算出来。 基本表 VS 视图
17
属性在E-R图中的表示 表示要点: 多值属性用双椭圆表示。 派生属性用虚椭圆表示。 姓名 选修课程 学生 姓名 平均成绩 系别 学生
18
映射约束 映射的基数 存在依赖
19
映射的基数(Ⅰ) A R B A R B 单方实体集 联系R从A到B是一对一或多对一的 联系R从A到B是多对多或一对多的 多方实体集
映射的基数(Mapping Cardinalities): 实体之间的联系的数量,即一个实体通过一个联系集能与另一实体集相关联的实体的数目。 可以有一对一的(1:1),一对多的(1:m),多对多的(m:n)几种情况。 在E-R图中,用箭头或线段来表示联系的映射基数。 A R B A R B 单方实体集 联系R从A到B是一对一或多对一的 联系R从A到B是多对多或一对多的 多方实体集
20
映射的基数(Ⅱ) 二元联系集的映射基数 设有两个实体集E1, E2 , 一对一: 职工 管理 部门
如“职工”与“部门”之间的“管理”联系(假定每个部门只有一个经理,一个职工不能兼任两个部门经理。 注:一对一不是一一对应。 职工 管理 部门
21
映射的基数(Ⅲ) 一对多: 教师 班主任 学生 E1中的一个实体与E2中n(n≥0)个实体相联系,并且
如“教师”和“学生”之间的“班主任”联系。 教师 班主任 学生
22
映射的基数(Ⅳ) 多对多: 学生 选修 课程 E1中的一个实体与E2中n(n≥0)个实体相联系,并且
E2中的一个实体与E1中m(m≥0)一个实体相联系。 如“学生”和“课程”之间的“选修”联系。 学生 选修 课程
23
映射的基数(Ⅴ) 一个实体集内的二元联系 一对一:ei E,至多存在一个ej E,与之相联系(j≠i)。 一对多: 多对多: 职工
如“职工”之间的“配偶”联系。 一对多: 如“职工”内部的“领导”联系 多对多: 如“零件”之间的“构成”联系 妻子 职工 配偶 丈夫 属下 职工 领导 领导 母零件 零件 构成 子零件
24
映射的基数(Ⅵ) 多个实体集间联系的情况 一对多: 课程 教员 讲课 参考书
设有n个实体集E1 , E2 , … , En ,若对于 E1 , … , Ei-1, Ei+1 , … , En ,分别给定实体e1 , … , ei-1 , ei+1 , … , en 时,至多有一个实体ei ∈ Ei与之相联系,则称有一个从Ei到E1 , … , Ei-1 , Ei+1 , … , En的一对多联系。 如“课程”,“教员”,“参考书”之间的“讲课”联系。 课程 教员 讲课 参考书
25
存在依赖(Ⅰ) 存在依赖(Existence Dependency) 如果实体x的存在依赖于实体y的存在,则称x存在依赖于y。
考虑分期付款的例子,对每一个“贷款”实体,有若干个“还款”实体与之关联,“还款”实体存在依赖于“贷款”实体。
26
存在依赖(Ⅱ) 全部参与与存在依赖 参照完整性: 设有A R B,若A存在依赖于B,则A全部参与联系R。
一个实体集的属性是另一实体集的主码属性,
27
弱实体集(Ⅰ) 弱实体集(Weak Entity Set) 如果一个实体集的所有属性都不足以形成主码,则称这样的实体集为弱实体集。
贷款(贷款号,金额),还款(还款号,还款日期,金额),每个“贷款”的各个“还款”不同,但不同“贷款”之间的“还款”却可能相同,因此“还款”是一个弱实体集。 = 用户名 + Logins(passwd文件)实体集记录本机用户名及其口令,用户名在不同主机上可以相同。 Logins是一个弱实体集。 产品(名称,价格),公司(名称,地址,联系电话),“产品”与“公司”之间有“制造”联系,“产品”是一个弱实体集。
28
弱实体集(Ⅱ) 弱实体集与存在依赖 弱实体集与其拥有者之间的联系称作标识性联系(identifying relationship)。
弱实体集与强实体集之间是一对多的联系。 弱实体集与存在依赖 弱实体集必然存在依赖于强实体集(Strong Entity Set)。 存在依赖并不总会导致一个弱实体集,从属实体集可以有自己的主码。 如实体集信用卡(信用卡号,客户帐号,金额),它存在依赖于客户帐号实体集,但信用卡有自己的主码信用卡号。
29
弱实体集(Ⅲ) 分辨符(Discriminator):
弱实体集中用于区别依赖于某个特定强实体集的属性集合。也称作部分码(partial key)。 如“还款”中的还款号,Logins中的用户名。 弱实体集的主码由该弱实体集所存在依赖的强实体集的主码和该弱实体集的分辨符组成。 如“还款”主码=贷款号+还款号 Logins主码 = 用户名(在所在主机上唯一)+ 主机IP地址(在全球唯一)。 “产品”主码 = 产品名称 + 公司名称。
30
弱实体集(Ⅳ) 为什么使用弱实体集? 通过为弱实体集加上合适的属性,可转变为强实体集,为什么还要使用弱实体集?
避免数据冗余(强实体集码重复),以及因此带来的数据的不一致性。 弱实体集反映了一个实体对其它实体依赖的逻辑结构。 弱实体集可以随它们的强实体集的删除而自动删除。 弱实体集可以物理地随它们的强实体集存储。
31
弱实体集(Ⅳ) 弱实体集的引入 作为层次结构的一部分。 实体集的一些多值、复合属性可以抽取出来作为弱实体集。
如果弱实体集不但参与和强实体集之间的标识性联系,而且参与和其它实体集的联系,或者弱实体集本身含有很多属性,则将其表述为弱实体集。 如果弱实体集只参与和强实体集之间的标识性联系,或者弱实体集本身属性不多,则将其表述为属性。
32
弱实体集(Ⅴ) 弱实体集在E-R图中的表示 弱实体集以双边框的矩形表示。 标识性联系以双边框的菱形表示。
从联系集用双线(全部参与)连接弱实体集,用箭头(一对多联系)指向强实体集。 弱实体集的分辨符用下划虚线标明。
33
弱实体集(Ⅵ) 用户名 名称 Logins @ Host
34
弱实体集(Ⅶ) 还款号 还款金额 贷款号 贷款金额 还款 隶属 贷款
35
弱实体集(Ⅷ) 产品名 价格 公司名 地址 联系电话 产品 制造 公司
36
扩展E-R特性 特殊化(Specialization) 概括(Generalization)
属性继承(Attribute Inheritance) 聚集(Aggregation)
37
扩展E-R特性——特殊化(Ⅰ) 特殊化: 实体集中某些子集具有区别于该实体集内其它实体的特性,可以根据这些差异特性对实体集进行分组,这一分组的过程称作特殊化。 自顶向下、逐步求精。 父类子类。 子类=特例=更小的实体集=更多的属性。 一个银行帐号可以有存款帐号、贷款帐号。 学生可以有研究生、本科生。
38
扩展E-R特性——特殊化(Ⅱ) 特殊化在E-R图中的表示: 特殊化用标记为ISA的三角形来表示。
ISA = “isa”,表示高层实体和低层实体之间的“父类-子类”联系。 姓名 学号 学生 Dissertation ISA 本科生 研究生 Papers ISA 军训 硕士 博士
39
扩展E-R特性——概括 概括: 概括 Vs 特殊化
各个实体集根据共有的性质,合成一个较高层的实体集。概括是一个高层实体集与若干个低层实体集之间的包含关系。 自底向上、逐步合成。 概括 Vs 特殊化 概括与特殊化是个互逆的过程,在E-R图中的表示方法是相同的。 特殊化强调同一实体集内不同实体之间的差异,概括强调不同实体集之间的相似性。 反映了数据库设计的不同方法。
40
扩展E-R特性——属性继承(Ⅰ) 属性继承 层次结构(Hierarchy) 格结构(Lattice) 高层实体集的属性被低层实体集自动继承。
低层实体集特有的性质仅适用于某个特定的低层实体集。 如“Dissertation”属性只适用于“研究生”实体集。 层次结构(Hierarchy) 实体集作为低层实体集只能参与到一个ISA联系中。 格结构(Lattice) 低层实体集可以参与到多个ISA联系中。 如“博士”算参加工作,会继承“职工”实体集的一些属性。
41
扩展E-R特性——属性继承(Ⅱ) 姓名 学号 姓名 工龄 学生 职工 Dissertation 本科生 研究生 Papers 军训 硕士
ISA 本科生 研究生 Papers ISA ISA 军训 硕士 博士 “博士”继承了“研究生”与“职工”的所有属性。如果“研究生”与“职工”有相同名称的属性,如“姓名”,则在“博士”中用“研究生.姓名”,“职工.姓名”区别开来。
42
扩展E-R特性——约束设计(Ⅰ) 成员资格: 确定哪些实体能成为给定低层实体集的成员。 条件定义的(Condition-Defined):
一个实体成员资格的确定基于该实体是否满足一个显式的条件或谓词。 假定“学生”实体集具有属性“学生类型”,则所有的学生实体根据“学生类型”进行成员资格认定,如一个学生的“学生类型”=“本科生”,则他就可以归入低层“本科生”实体集中。 系统可以自动检查条件定义的约束。 用户定义的(User-Defined): 由数据库用户来指定一个实体归入哪个低层实体集。 如一个学生被老师分配到某个项目组。
43
扩展E-R特性——约束设计(Ⅱ) 成员身份 同一个概括中,一个实体是否可以属于多个不同低层实体集。 不相交的(Disjoint):
一个实体至多属于一个低层实体集。 如一个学生只能参加一个项目组。 有重叠的(Overlapping): 同一实体可以同时属于同一概括的多个低层实体集。 如一个老师可以参加多个项目组。
44
扩展E-R特性——约束设计(Ⅲ) 全部性约束: 确定高层实体集中的一个实体是否必须属于某个概括的至少一个低层实体集。 全部的(Total):
每个高层实体必须属于一个低层实体集。 如学生必须属于“本科生”或“研究生”的一种。 部分的(Partial): 允许一些高层实体不属于任何低层实体集。 如学生可以不属于任何项目组。
45
扩展E-R特性——聚集(Ⅰ) 聚集 方案1 方案2 如何表达联系之间的联系? 实例:职工参加项目,并在此过程中使用若干机器。 参加 职工
姓名 工种 工时 名称 类型 姓名 工种 名称 类型 参加 职工 项目 职工 参加 项目 使用 工时 机器名 型号 机器名 机器 型号
46
扩展E-R特性——聚集(Ⅱ) 聚集是一种抽象,通过它联系被作为高层实体集。实体集A与B以及它们的联系可被看成另一实体集C。 参加 职工 项目
姓名 工种 工时 名称 类型 参加 职工 项目 使用 机器名 机器 型号
47
扩展E-R特性——聚集(Ⅲ) 名称 地址 时间 名称 地址 联营 制造商 批发商 分送 产品名 产品 价格
48
E-R模型设计要点(Ⅰ) 实体集 Vs 属性 姓名 电话 职工 姓名 号码 地址 联系 电话 职工 电话 适于一个员工只有一部电话的情况
适于多个员工共有一部电话,一个员工多个电话,电话本身具有多个属性的情况。 联系 电话 职工 电话
49
E-R模型设计要点(Ⅱ) 实体有多方面性质,属性没有。 名称 城市 项目 名称 名称 面积 人口 项目 位于 城市
50
E-R模型设计要点(Ⅲ) 若实体中除了多值属性之外还有其它若干属性,则将该多值属性定义为另一实体。 姓名 零件 供应商 名称 姓名 地址
供应商可以供应多种零件 供应商除零件属性外只有一个作为主码的姓名属性 姓名 零件 供应商除零件属性外另有其它很多属性 供应商 名称 姓名 地址 电话 零件 供应商 供应
51
E-R模型设计要点(Ⅳ) 实体集 Vs 联系集 姓名 名称 教师 开课 课程 单纯表示“教师”实体与“课程”实体之间的行为联系
52
E-R模型设计要点(Ⅴ) 实体与联系:静态与动态 时间 地点 人数 开课 姓名 名称 教师 开课 课程 时间 地点 人数
弊端:若多个老师开同一门课,则每个老师与该课程的联系都需重复记录很多相同的信息。 教师 开课 课程 时间 地点 人数
53
E-R模型设计要点(Ⅵ) 二元 Vs 多元 方式: A A RA R B C RB E RC C B
新构建一个实体集E,若R有属性,则将其赋予E,为E添加一个标识属性作为主码,构造三个新联系集RA , RB , RC ,对每个( ai , bi , ci )R,在E中创建一个新实体ei ,然后在RA , RB , RC中分别加入联系(ei , ai ),(ei , bi ),(ei , ci )。 A A RA R B C RB E RC C B
54
E-R模型设计要点(Ⅶ) 缺点: 浪费存储空间。 语义不清晰,难于体现参与联系的各方。 A B C 1 2 3 4 7 8 E A 1 2
55
E-R模型设计要点(Ⅷ) R1 A R2 A R B C R3 C B 上述转换会有信息丢失 (4,2,3) ABC? A B C 1
7 8 A B 1 2 4 8 B C 2 3 7 8 A C 1 3 4 7
56
概念数据库设计实例(Ⅰ) E-R方案选择 对现实世界概念要作出准确而有效的表达。 用实体集还是属性。 用实体集还是联系集。
用二元联系还是多元联系。 用强实体集还是弱实体集。 是否要用概括。 是否要用聚集。
57
概念数据库设计实例(Ⅱ) 实例: 为医院建E-R图,包括病人和医生,病人有病历记录。 姓名 保险号 身份证号 病人 门诊记录 治疗 病历
名称 日期 结果 姓名 专长
58
课堂练习 哪一个更合适? 选修 E-R 1 学生 课程 助教 E-R 2 选修 学生 课程 课程 助教 学生
Similar presentations