文章目录
Database Design
- entity:可以识别的实体
各种各样的实体间以多种方式相互关联
1.E-R Model:entity-relationshipe
1.1.entity-set
- entity:现实世界中可以区别于其他对象的一个"事物"或"对象"。实体通过一组属性(attribute)来表示,属性是实体集合中每个成员所具有的描述性性质,每个属性都有一个值(value)。
- entity-set:相同类型、具有相同性质(属性)的实体的集合
- 数据库包括一组实体集
1.2.relationshipe-set
- relationship:多个实体间的相互关联
- relationship-set:相同类型联系的集合
- 实体在联系中扮演的功能称为角色(role):可以用于介绍联系的含义
- 联系可以具有描述性属性(descriptive attribute)
- **给定的联系集中的一个联系实例必须是由其参与的实体唯一标识的,而不必使用描述属性。**假如同一组实体的联系实例描述属性有多个值,应当将这个属性设置为多值属性。
- degree:度,参与联系集的实体集的数目
1.3.属性
属性的值的取值范围称为域(domain)
属性类型划分:
- simple / composite:简单和复合
- single-valued / multivalued:单值和多值
- derived 派生
2.约束
2.1.mapping cardinality:映射基数
- 一对一
- 一对多
- 多对一
- 多对多
2.2.参与约束
- total:实体集E的每个实体都参与到联系集R中至少一个联系中
- partial:E的实体只有部分参与到R中
2.3.码
所有实体集的主码的并集一定是超码,因为其一定可以唯一标识一个联系。
二元关系联系集的主码依赖于联系集的映射基数
- 多对多:实体集的主码的并集
- 多对一/一对多:“多”一方的主码
- 一对一:任意一方的主码
3.E-R diagram:实体-联系图
- 两部分矩阵代表实体集(每个矩形分割为实体集名字和实体集属性两部分)
- 菱形代表联系集
- 没有分割的矩形,即只包含属性的矩形代表联系集的描述性属性
- 线段,连接实体集和联系集
- 虚线,连接联系集的描述性属性和联系集
- 双线,显示实体在联系集中的参与度
- 双菱形,连接到弱实体集的标志性联系集
3.1.映射基数
3.2.复杂属性
- 复合属性:直接列出复合值
- 多值属性:给属性加上{}
3.2.角色
在菱形和矩形的连线上标注角色(即对实体的主码重命名)
3.3.弱实体集
- 弱实体集:没有足够的属性形成主码
- 强实体集:有主码
- 弱实体集必须与一个被称为标识实体集的实体集关联才有意义,这样的联系称为标识性联系。
- 弱实体集必须在标识性联系集中必须全部参与,其主码为自身分辨符加上标识实体集的主码。
这样做的目的是强调实体集之间的依赖关系。
4.diagram转化为schemas
4.1.具有复杂属性的强实体集
- 复合属性:在模式中为每个子属性单独创建一个属性
- 多值属性:创建一个新的关系模式,包含原实体集的主码和和这个多值属性。原实体集的关系模式去除这个属性。假如实体集本来就只有两个属性,则不需要这样做。
4.2.弱实体集的表示
- 主码:分辨符加上标识实体集的主码
- 外码约束:标识性实体集的主码,注意级联删除性质
4.3.联系集的表示
二元联系集的主码:
- 多对多:参与的实体集的主码
- 多对一/一对多:"多"的主码
- 一对一:任意一个实体集的主码
关系模式R在相关的每个实体集 E i E_i Ei上都有外码约束
4.4.联系集的合并
考虑从实体集A到实体集B的一个多对一的联系集AB,且A在该联系中全部参与。则我们可以把A和AB两个模式合并成包含两个模式所有属性的并集的模式。主码是AB的主码。
如果是一对一的联系,联系集的关系模式可以跟任意一个实体集的模式合并
5.设计问题
一个非二元的(n元,n>2)联系集总可以用一组不同的二元联系集来替代。