2018年06月04日 16:35:57 阅读数:322更多
个人分类: 数据库设计
设计数据表,遇到一个很常见的情况。
一、中间表-多对多关系的转化
实际中,经常存在多对多关系。以订单和商品为例,一个订单对应多个商品,一个商品也对应多个订单。此时在将E-R图转化为关系模型时,需要引入中间表(也叫做连接表)。
中间表包含两个实体表的主键,建立两张表沟通。中间表也可以有普通字段。例如商品数量,和每种商品总和。注意:要把他们与实体表中字段含义区分开。
参考连接:https://zhidao.baidu.com/question/1732427061119828187.html
二、中间表主键
中间表的主键,可以是两个外键作为联合主键,也可以是再增加一个主键字段。
由于我的表中除了两个外键,还有普通字段,增加一个主键后,逻辑更清楚,所以我建议再增加一个主键字段。
三、三个实体间均存在多对多的关系
三个实体存在多对多关系有以下三种情况:
1.有一个实体与剩下两个实体存在N:M关系,剩下两个实体没有N:M关系。
图1
2.三个实体间均存在多对多关系。以下这两种情况搞不清楚有什么区别,实际应用时哪种方式更好一点?个人感觉由于图2生成的中间表包含所有的关系,一张表可以连接三个表,查询会更快捷,所以采用了图2。哪位大佬若是了解透彻,还请不吝赐教,指点一二奋斗奋斗
图2
参考链接:http://www.cnblogs.com/huangfr/archive/2011/10/10/2206706.html