1. 请解释弱实体集和强实体集之前的区别。
没有码的实体集为弱实体集,有码的实体集为强实体集。
2. 将一个弱实体集合(weak entity set)变成一个强实体集合(strong entity set)的方法是将其属性中添加其标识实体集合(identifying entity set)的主码。请描述这样做可能会引入的冗余。
在弱实体集合中,会使用外键连接其它实体。此时,若要查询关联某强实体的该弱实体集合,使用外键便可查询。若给弱实体引入主码,则原本在弱实体中的外键与主码构成冗余。
3. 请描述"主码"、"候选码"和"超码"之间的的区别。
主码是候选码的子集,候选码是超码的子集。主码是人为定义的,从候选码中任取一个即为主码。候选码是所有可以唯一标识元组的最小属性集合,超码是所有可以唯一标识元组的属性集合,区别于候选码,超码允许属性集合冗余。
4. 为一家医院绘制一个实体-关系(E-R)图,包括患者和医生的集合。与每位患者关联一个记录各种测试和检查的日志。
5. 考虑以下的一种包含泛化和特化的格(lattice)结构(属性未显示):
对于实体集合 A、B 和 C,解释属性是如何从更高级别的实体集合 X 和 Y 继承的。讨论当 X 的属性与 Y 的某个属性具有相同的名称时如何处理。
A的属性包括连着A的所有属性加上连着X的所有属性,C的属性包括连着C的所有属性加上连着C的所有属性,B的属性包括连着B的所有属性加上连着X的所有属性加上连着Y的所有属性,若X,Y含有相同属性,则类似于C++的虚继承,B只会继承一份属性。