标识关系,实线表示
非标识关系,虚线表示
实心圆端所在的那端为一对多关系中的多的那端

erwin.jpg
        PASSENGER:                    乘客表
        FLIGHT:                             航班
        SEAT-RESERVATION:    座位预定
        
    标识关系贡献父实体的键给子实体,所有
键变成子实体的键,成为了子实体的键的一部分,意思是子标识依赖于父,也就是子实体的存在依赖于父,在SEAT-RESERVATION中,flight-number变成SEAT-RESERVATION座位的外键属性,它和seat-number一起标识座位,是不能为空的,如果不指定flight-number,seat-number和passenger-name都是无意义的。
    非标识关系贡献父实体的键给子实体,但是,由定义知,一些 (或所有)键不变成子实体的键,意思是子不标识依赖于父,允许这样的情形,关系中多”端的实体没有父”而可能存在,即它不是存在依赖。

从子实体看,如果关系是强制mandatory的,那么子存在依赖于父。如果可选,那么子既不存在也不标识依赖于关系 (虽然它也许依赖于其他关系)ERwin菱形为表示可选的情况,菱形只存在于非标识关系中(因为标识关系贡献主关键字,而主关键字部分不能为NULL)。带菱形的非标识关系是零或一对多”的关系。这儿有个简单例子。

5.13,属性 “passenger-name”变成SEAT-RESERVATION座位的外键属性,它不标识座位,它标识占用座位的乘客,因为没有乘客座位仍然存在,关系是可选的,应使用菱形符号。

我们已经定义,在一次飞行中乘客可占零或一个座位。

座位可以空 (不被任何乘客占有),当座位空时,”passenger-name”属性将是空 (NULL)

由业务政策知道,这是允许发生的 (因为航空公司不能迫使乘客填满每次飞行的每个座位),从子实体看,关系是可选的,关系父端的菱形就意味着这个。

posted on 2007-03-29 16:06  gjung  阅读(8168)  评论(0编辑  收藏  举报