实体-联系建模
统一建模语言(Unified Modeling Language,UML):图形化符号集
实体类型
实体类型(entity type) | 现实世界中具有具有相同属性的一组对象
既可以是物理存在的对象,也可以是概念存在的对象
实体出现(entity occurrence) | 实体类型中可唯一标识(uniquely identifiable)的一个对象
实体类型的图形化表示
实体类型用标有名字的矩形表示,在UML中,实体名字首字母大写
联系类型
联系类型 | 实体类型间的一组有意义的关联
联系出现 | 由参与该联系的各个实体类型的一个出现组成的可被唯一标识的关联
eg:Has是Branch和Staff之间的一种关联,Branch Has Staff
可以使用语义网(semantic net)来表示联系Has的实例出现的个体(复杂难理解)
联系模型的图形化表示
- 联系类型表现为用线将相关的实体类型联系起来
- 联系名字的首字母大写
- 尽可能保证同一个ER模型中的联系的名字是唯一的
- 一个联系还应标记一个方向$\blacktriangleleft$或者$\blacktriangleright$
eg:
联系类型的度
-->参与联系的实体类型个数,上述Staff和Branch是二元联系
binary(2)——ternary(3)——quaternary(4)(>2即为complex)
图形化表示时使用菱形(diamond)来表示度大于2的联系(箭头可省略)
Ternary relationship
Quaternary relationship
递归关系
递归(recursive)关系 | 同一实体类型以不同角色多次参与同一联系类型(也被称作一元联系unary relationships)
可以添加角色名称表明每个实体类型的意义
两实体间存在多种联系时也可用角色名称
属性
属性 | 实体或联系类型所具有的某一特性
属性域 | 单个或多个属性所允许的取值集合
简单属性和组合属性
简单:由独立存在的单个部分组成的属性
组合:由多部分组成的属性,每个部分都可独立存在
单值属性和多值属性
单值:在实体类型的每个实例出现都只取一个单值的属性
多值:对于实体类型的某些实例出现可能取多个值的属性
导出属性
属性的值是从相关的一个或一组属性的值导出来的属性
关键字
候选关键字 | 能够唯一标识每个实体的实例出现的最小属性组
eg:身份证号没有相同的,可以作为候选关键字
合成关键字 | 包括两个或两个以上属性的候选关键字
主关键字 | 被指定用来唯一标识实体类型的每个实例出现的候选关键字
多个候选关键字中选取其一作为主关键字,eg:ID和birth(精确到秒)选其一,这里我们选取属性长度短的为主关键字,另一个被视为可替换关键字(alternate key)
外关键字 | 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对
应,则称这个属性组为R的外键
属性的图形化表示
将实体的矩形分为两部分,上部分是实体名,下部分是属性名(第一个是主键,使用{PK}标记)
强实体类型和弱实体类型
强:实体类型的存在不依赖于其他实体类型,使用该实体类型的主键唯一标识每个实体的实例出现
弱:实体类型的存在依赖于其他的实体类型,仅使用该实体类型的属性无法标识每个实体的实例出现
联系的属性
图形化表示
表示联系属性的矩形使用虚线与联系相连
结构化约束
多重性(multiplicity) | 指一个参与实体类型通过某一联系与另一参与实体类型的某个出现发生关联的出现的数目
二元关系
- 一对一 (1:1)
- 一对多 (1:*)
- 多对多 (*:*)
复杂联系的多重性
基数约束(cardinality):一个实体可能参与的联系出现的最大数目
参与性约束(participation):所有实体是否都参与了联系