【问题标题】:On the relationship of database tables to a pivot/junction table关于数据库表与枢轴/联结表的关系
【发布时间】:2010-09-03 21:39:54
【问题描述】:
在数据库中,可以通过创建第三个表来创建表之间的多对多关系,该表使用外键将两者映射在一起。第三张表和原来的两张表是什么关系?
例如,如果表 A 和表 B 具有多对多关系并且表 AB 是数据透视表,那么 A->AB 关系是否始终是多对一关系,并且 B-> AB关系也总是多对一的关系?
【问题讨论】:
标签:
database
relational-database
foreign-key-relationship
database-theory
【解决方案1】:
我相信简短的回答是“是”。 :)
简单地说,外键关系必须将AB列映射到A中的单个列或B中的单个列。但是由于AB的内容代表了A和B之间的多对多关系,因此可以定义是 AB 中 A 键或 B 键的多个实例。同时,AB中出现重复记录,即。多次表示相同的 A-B 关系,会出错。
所以,是的:AB 两侧的一对多。
【解决方案2】:
挑剔,A->AB和B->AB是一对多的关系,不是多对一的:A中的实体应该在A中出现一次,但在AB中可以出现多次(链接它到几个 B 实例); B 中的实体应该在 B 中出现一次,但在 AB 中可能再次出现多次(将其链接到多个 A 实例)。