数据表(中间表)的设计:多对多关系

中间表-多对多关系的转化:

在表的使用中,经常存在多对多的关系,以订单和商品为例,一个订单对应多个商品,一个商品也对应多个订单,此时把E-R图(E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型)转化为关系模型时,需要引入中间表。

中间表包含两个实体类的主键,建立两张表沟通。

中间表也可以有普通字段,例如商品数量,每种商品总和(需要把他们与实体表中字段含义区分开)。

中间表主键:

中间表的主键可以是两个外键作为联合主键( 联合主键就是说,当一个字段可能存在重复值,无法确定这条数据的唯一性时,再加上一个字,两个字段联合起来确定这条数据的唯一性。比如你提到的id和name为联合主键,在插入数据时,当id相同,name不同,或者id不同,name相同时数据是允许被插入的,但是当id和name都相同时,数据是不允许被插入的),也可以是再增加一个主键字段。

三个实体间存在多对多的关系:

有一个实体与剩下两个实体存在N:M关系,剩下两个实体没有
数据表(中间表)的设计:多对多关系_第1张图片
三个实体间存在多对多关系
数据表(中间表)的设计:多对多关系_第2张图片
数据表(中间表)的设计:多对多关系_第3张图片

中间表简述:

中间表是业务逻辑中的概念,就是将计算结果先保存在一个临时的表中,然后再从这个表中计算,减少程序的复杂度。临时表是中间表多采用的一种技术,使用 Oracle临时表功能可以免去中间表数据的维护工作。

中间表举例:

分析表1(tableOne),找到唯一的业务主键,这是一个班级课程表,存储了课程的信息,主键就id。
数据表(中间表)的设计:多对多关系_第4张图片
分析表2(tableTwo)找到唯一的业务主键,这是一个课程单元表,存储了所有课程单元。
数据表(中间表)的设计:多对多关系_第5张图片
因为课程表和单元表没有关联信息,所以无法关联查询,这时需要中间表把两个表进行关联。
数据表(中间表)的设计:多对多关系_第6张图片
建立索引。
数据表(中间表)的设计:多对多关系_第7张图片
查询测试。
数据表(中间表)的设计:多对多关系_第8张图片
检验测试查询结果。
数据表(中间表)的设计:多对多关系_第9张图片

你可能感兴趣的:(后端,数据库)