实体-联系(E-R)模型是基于如下的一种认识:世界由一组实体和实体之间的相互联系组成。E-R模型是一种语义模型, 前面也提到过,这种模型经常作为关系数据库模型的基础。 很多数据库设计工具也都使用了E-R模型的概念。
下面是几个核心概念
有了实体集合,有了联系集合,自然而然的就产生出来约束,约束描述的是实体集和实体集之间的关系,而这种关系就具现为一个联系集。 我们要讨论的是映射基数和参与约束这两类最重要的约束。
映射基数是指一个实体集和另一个实体集之间的实体对应关系。有如下的四种
具体的解释可以看书,映射基数在描述二元联系集的时候,特别有用。
参与约束只是讲实体集和联系集的关系,实体集E中的任意一个实体e如果都参与到了联系集R中,那么就说E对R是完全参与的;相对来说就有部分参与。
码是在实体集中唯一表示某一个实体的属性集合,按照超码中包含的属性数量分可以分为“超码”,“候选码”,“主码”三种。
候选码应该选择那些从不或者极少变化的属性。
书中给的例子是很明显的,employee-name本身不能作为一个实体,尽管employee-name可能会有first-name,会有 middle-name 和last-name,但是把它们做成employee 的属性更加的合理。而把telephone做成一个实体就很有道理了,因为我们可以存储telephone的额外信息。而有两种错误一定要注意一下。
如果一个实体集的属性可能不足以形成主码,这样的实体集就成为弱实体集。反之就叫做强实体集。而作为设计的目标之一,一个弱实体集必须要依赖 于一个强实体集,标识性联系是从弱实体集到标识实体集的多对一的联系,并且弱实体集全部参与联系。
另外,我们还有一些关于实体的特性,比如继承,说的是实体集之间的继承关系,但是这样的关系只是在设计的时候适用,在真正建立 table的时候,会造成一些实现上的困难。还有聚集,这是非常有用的,说明了联系集和其他集的联系集,具体的例子参考书,就是employee, branch,job和manager之间的关系(论述非常的经典)。
强实体集被对应成数据库里面的一张表,有多少个属性就有多少列。并且主码做主键
弱实体集也被对应成一张表,这张表一定要包含所依赖的强实体集的主码。
联系集被翻译成一张表,整个表里面要包含所有参与联系的实体的主码。并且附加描述性属性。
性为每一个子属性创建一个单独的属性。
必须为多值属性创建一个表。
通常都为子实体集合创建一个单独的表,如果还有实体属于父实体集合,那么也要为父实体创建表