1.Subject Area
Ancestors 祖先 Descendants 后裔
2.主键,外键
标识和非标识关系
在标识关系中,外键迁移到键区(线上)。
![clip_image004 clip_image004](https://i-blog.csdnimg.cn/blog_migrate/6bebb4bd78f9a34c7f1a5f237430b21f.jpeg)
Figure 3.12: Identifying relationship.
![clip_image006 clip_image006](https://i-blog.csdnimg.cn/blog_migrate/dade9008fa3c8ef18e26261573d858ae.jpeg)
关系被称为 标识,是因为父实体的键成了子实体标识的一部分,即子实体的标识 依赖于父实体。标识关系用连接两个实体间的带点实线来表示,到目前为止,我们见到的所有关系都是标识关系。
Figure 3.13: Identifying relationship.
在这个例子中,PLAYERs由”team name”和”player name”两个来标识,这必须的,因为有时,同一个球员可以参加不同球队,并且有时,业务 (比如说管理的棒球统计)需要区分球队成员。
标识关系运用其业务规则,即通过父实体的标识符来标识子实体。在3.8中电影和电影-拷贝例子中,通过它拥有的唯一编号来标识拷贝,相反,我们决定用电影的标识符和增加第二部分(拷贝-编号)来区分每一个拷贝。
非标识关系 (虚线)也连接父实体和子实体,由非标识关系迁移的非空外键子集被置于数据区(线下)。
Figure 3.14: Non-identifying relationship.
既然在非标识关系中一些 (或所有)迁移的键不是子实体主关键字的一部分,那么子就不能由父来标识。正如我们将在第5和 6章所要了解的,当我们在插入、删除和更新操作下需要保持的父子关系完整性时,这个差别非常重要。这被称作参照完整性问题。
在乘客-座位例子中,航空公司已挑选”seat number”来标识座位-预留的实例。
Figure 3.15: PASSENGER-SEAT example.
由于相同座位占有者在每一次飞行中是变化的,目前乘客PASSENGERi不是键的一部分。然而,这个模型仍然不恰当,只用 “seat number”不能充分地标识当前乘客所预订的座位。在下面的模型中,我们扩展了座位-保留SEAT-RESERVATION的键,增加了”flight-number”来申明FLIGHT和SEAT-RESERVATION关系。(更多的非标识关系见第5章)
Figure 3.16: SEAT-RESERVATION example.
![clip_image013 clip_image013](https://i-blog.csdnimg.cn/blog_migrate/8adcd426555625dc2dc7b3bfede745c2.gif)
线说明
![clip_image014 clip_image014](https://i-blog.csdnimg.cn/blog_migrate/ad06d3edf3263e2605c074d640a3bf75.gif)
非标识关系贡献父实体的键给子实体,但是,由定义知,一些 (或所有)键不变成子实体的键,意思是子不标识依赖于父,允许这样的情形,关系中”多”端的实体没有”父”而可能存在,即它不是存在依赖。
从子实体看,如果关系是强制mandatory的,那么子存在依赖于父。如果可选,那么子既不存在也不标识依赖于关系 (虽然它也许依赖于其他关系)。ERwin用菱形为表示可选的情况,菱形只存在于非标识关系中(因为标识关系贡献主关键字,而主关键字部分不能为NULL)。带菱形的非标识关系是”零或一对多”的关系。
实体主键迁移給子实体作为部分主键(PK)
实体須由父实体决定,其存在亦需依附父实体
实体主键迁移給子实体作为非键属性(非PK) , 其表示並不能由父实体來决定子实体为何
子实体不須由父实体决定,但其存在仍需依附父实体 (mandatory)