E-R模型
1.建立模型
数据库可以被定义为实体的集合和实体间的关系。
实体集:相同类型的实体的集合
属性类型:实体集都拥有的描述性的属性
域domain:每个属性允许值的集合
简单simple属性:不可分割的属性
复合composite属性:可拆分
单值属性:一个实体只有一个值
多值属性:一个实体可以有多个值
派生derived属性:通过一个属性的值生成出另一个属性的值
联系集:联系之间的所有实体的集合,所有实体集的子集,也可以有属性。
度degree:联系集里有多少实体集。ternary relationship三元联系。二元binary。
二元联系的映射基数Mapping Cardinality:一对一、一对多、多对一、多对多。
2.参与约束Participation Constraints
全部参与total:所有实体都参加至少一个关系
部分参与partial:只有一些实体参与关系
一对多:
超码:一个或多个属性能区别实体
候选码:超码去掉冗余
联系集包括实体集的主码和属性。所有主码作为联系集的主码。
a是联系集的属性。
选择候选码时需要注意映射关系。对于都可以选择的主码根据语义进行选择。
3.ER图
矩形Rectangles表示实体集。
菱形Diamonds表示关系集。
线将属性连接到实体集,将实体集连接到关系集。
椭圆Ellipse表示属性
双椭圆表示多值属性。
虚线Dashed椭圆表示派生属性。
下划线表示主键属性
基数约束:Cardinality Constraints
—>表示1、—表示多,箭头指向1
===表示全部参与
基数限制表示参与度
顾客最少可以不借或者无限借,loan参与度最小最大都是1,0…*部分参与,1…1全部参与
三元关系最多只有一个箭头。
表示任何职员在任何支行只能有一个岗位
可以表示:每个A都有唯一B和C、每个AB都有唯一C而且每个AC都有唯一B
可以使用角色role指定实体如何通过关系集进行交互
4.设计
不要用一个实体的主码作为另一个实体集的属性
多个客户拥有同一笔贷款,需要单独建立属性,避免loan产生复制。
三元组转化,三元组只能有一个箭头。
在一对多的情况下A->B,可以将AB的关系转换成B(一)是A(多)的属性。
一对一可以放在任意一侧。多对多只能放在关系集中。
三元转换成二元:创建集合E,放置特殊标识符,将R的属性交给E,对R中每一个关系(a,b,c),创建E中一个新实体ei,把(ei,a)、(ei,b)、(ei,c)添加到Ra,Rb,Rc中
缺点:需要为E创建标识符,n元关系集可能展示的更清晰,三元关系的约束不一定能转换成二元关系的约束。
5.弱实体集
弱实体集week entity set:没有主码的实体集(所有属性都无法形成主码)
弱实体集依赖于标识实体集。
标识实体就是弱实体集和强实体集关联。
表示为双菱形。
分辨符:用于区分弱实体集的实体的一组属性
虚线下划线是分辨符(弱实体集中),分辨符与强实体集主码构成弱实体集的主码
弱实体集必须通过多对一并且全部参与到强实体集,中间的关系集就是标识实体集。
payment的主码就是(loan_number、payment_number)
6.其他ER
特殊化specialization:属性继承,通过ISA(三角形)特殊化为其他实体集。
一般化Generalization:自底向上将多个实体结合合并成更高的实体集。
ISA可以作为超类superclass和子类subclass。
实体可以通过约束进行分类,条件condition-defined(判断是否符合某个条件),不相交Disjoint和重叠Overlapping,total必须属于低层实体集合和partial不必属于低层实体(高层实体的属性是否需要属于低层实体)。
高层实体high-level entity:父类实体
底层low实体:子类
聚合:两个实体集之间
10个实体集,7个联系,3个m:n,4个n:1, : 一共13个表(10+3)
7.模式
模式schema:主码将实体集和关系集表示为数据库内容的关系模式
E-R图可以使用一组模式表示
每个实体集和关系集都有唯一的指定名称的模式,每个模式都有许多列(有唯一列名)
强实体集减少为相同属性的模式,弱实体集变成一个包含强实体集主码的列的表
多对多关系表示为两个实体集的主码的属性以及关系集描述性属性。
多对一和一对多关系集可以向多的一侧添加一的主键
对一对一关系集,选择任意一方作为多来添加到其他表中
如果多是partial的,多的一端可能为空
对应于将弱实体集与其标识的强实体集连接起来的关系集的模式是冗余的
对于复合属性需要将属性进行展开
实体E的多值属性M通过单独模式EM表示。EM具有E的主码和M的属性。多值属性的每个值映射到EM上关系的独立元组。
8.特殊化表示成模式
1.方法1
高层实体建立一个模式,底层实体用高层实体的主码和自己的属性作为模式
缺点:获取需要访问两个模式
2.方法2
每个实体都形成一个模式,包含自己的属性和继承的属性
如果所有特殊化是total的,那么person模式就不需要了。
3.聚合的表示
创建包含聚合关系的主键、关联实体集的主键、任何描述性属性。
manages (employee_id, branch_name, title, manager_name)