实体:现实中可区别与其他对象的事物。实体可以是任何实际或抽象的。
实体集是相同类型的实体的集合。
实体是实体集的外延。
联系集是实体(非实体集)之间的联系。
实体集参与联系集。并且特定的实体间的关联称为联系实例。
角色:当一个实体多次参与一个联系集中,则会有不同的角色。例如员工和工作之间,员工可能既是员工也是经理。
联系集的描述性属性:用来描述联系集。当一对多时,描述性属性可以放入多的属性里。可以通过多值属性来解决匹配问题。
度:联系集关联的实体集个数。
域:属性的可取值的集合。
复合属性:可再划分的属性。简单属性:不可再划分的属性。
多值属性:能取多个值。需要时,可以对多值属性的数量限制。
派生属性:可以由其他属性推导得。虚线
映射基数:一个实体集与多少实体相连。
超码,候选码(最小超码),主码。
联系集的超码是所关联的实体集的主码的并。
联系集的主码与映射基数关联。多对一,是“多”实体集的主码。 一对一,是任意实体集的主码选一。
全部参与:实体集的每个属性都与联系集相连。
非二元联系集中,只能有一个箭头。
l...h表明一个实体最少与l个实体相连,最多与h个实体相连。
当描述发生实体间联系的行为采用联系集。
非二元联系可以用多个二元联系替代。
多对一联系集标识属性可以放入“多”的实体集中。一对一则任意。
弱实体集:没有足够的属性标识形成主码。否则为强实体集。
弱实体集需要与标识性实体集通过标识性联系集关联才有意义,弱实体集是多对一的。弱实体集要全部参与。
弱实体集只需要规定一个属性作为分配符,分配符可以区分依赖于特定强实体集的弱实体集中的实体。
弱实体集存在依赖于标识实体集。弱实体集的主码是弱实体集的分配符和标识实体的主码。
如果弱实体集参与到其他标识性联系中,则用弱实体集而不用多值属性。
特殊化,一般化。
高层实体集和低层实体集。
属性继承。
多继承:由多个实体继承。
一般化约束:
1.成员资格:(1)条件定义的:满足谓词。(2)用户定义的:由用户自定义。
2.同一一般化:(1)不相交。一个实体至多属于一个底层实体集。(2)有重叠的。同一实体可以属于多个低层实体集。
默认是有重叠的,在三角旁加disjoint表示不相交。
3.完全性约束。(1)全部一般化。每个高层实体都属于其中一个低层实体集。(2)部分一般化。允许某些高层实体不属于低层实体。
部分一般化是默认。全部一般化用双线表示。
由于完全性约束,因此更新需要同时更新。
ER模型不能表现联系间的联系,因此有聚集。将一个联系抽象成虚拟实体。
转换为关系模式
实体集和联系集都是一个表。
强实体集略。
弱实体集:弱实体集的主码是弱实体集的分配符和对应的强实体集的主码; 弱实体集的属性为强实体集的主码(外码约束)+原来属性。
联系集:联系集的属性是有关联的实体集的主码+描述性属性。联系集的主码的选择采用“多”的那边。如果多对一则取多的那边的主码为主码。
如果n元联系集,有箭头,则联系集主码为实体集的主码并去除箭头的实体集的主码。
冗余:
连接弱和强实体集的标识性联系集是冗余的,不用表示出来。因为按照前面的,标识性属性的主码且全部属性是强实体集的主码+分配集。但是这些tuple都在弱实体集中有,所以不必给出,没有起到联系的作用。
合并:如果有个实体集对于联系集是全部参与,则实体集和联系集合并。
不用把复合属性创建一个独立的关系,只需要用子属性即可。
对于多值属性,为他重新分一个关系,属性有多值属性+所在实体集或联系集的主码属性。主码由所有属性组成。
一般化:低层实体集属性包含特有属性+高层实体主码。
当一般化是全部的并且不相交的,则可以不用创建高层实体集表,为每个低层实体集创建表,列出高层实体集的每个属性。但是有个缺点,就是如果有个联系集与高层实体集相关联,则需要用一般的一般化方法变成关系模型。
聚集:联系集的全部属性包括将虚拟实体中的联系集的主码(多的那边的主码)+另一个实体的主码。