将数据模型转换成数据库设计的相关问题:
创建表的联系
强实体联系
把一个表的主键作为另一张表的外键为了强调最大粒度是应该把外键设置成候选键
N强实体联系
把的那一段的表(父表)的键设置成对应N的那一端的表(子表)的外键
NM强实体联系
建立只包含外键的第三张交关系表这个表中每一列都是主键的一部分每一列都对应于其他表外键因此他总是ID依赖于它的两个父表
注意这张交关系表中必须要有父表中的行
使用ID依赖实体联系的其他方法
关联联系
这种联系只针对联系本身而不是实体的属性只需建立一张关联表ID依赖于两张父表并包含父表的联系属性如公司和货物的Price
注意关联表和交关系表的最重要区别是关联表含有用户数据而交关系表则没有
多值属性
用ID依赖实体代表父表所含有的多值组合如CompanyName的(Contact PhoneNumber)PhoneNumber可含有多个值CompanyName在新表中将既是主键又是外键
原型/实例模式
当一个ID依赖实体的父实体使用强制关键字时ID依赖实体也使用自己的强制关键字得到的结果是弱实体担不是ID依赖实体
混合实体联系
这种设计既包含强实体设计也包含ID依赖实体的设计
对HASA联系进行转换时总的原则是把父表的键放到子表中通常把对应的父表放到子表中NM联系先转换成两个N联系而对于标识联系父表的键已经在子表中了所以什么都不用做对于混合联系中的非标识联系父表的键放在子表中
子类型 ISA联系
子表和父表的主键相同且子表的主键也是外键
递归联系
在表中创建一个外键并设为候选键指向父表此表中父表和子表均是其自身
N
通过把父表的键放到子表中来标识N递归联系
NM
创建一个交关系表把它分解成两个N联系