组成另一个元素的多个外键

时间:2016-03-04 14:05:15

标签: sql foreign-keys many-to-many

我正在尝试为某些箱子列表创建数据库。这些盒子包含不同数量的不同产品。我该如何实现保存每个框内容的表?

我是MySql的新手,这就是为什么这听起来像是一个如此愚蠢的问题,但我不明白一张桌子如何容纳每个盒子的不同产品和数量。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

因为框和产品会有多对多的关系,所以可以使用关联实体来解决这个问题:https://en.wikipedia.org/wiki/Associative_entity

你有一个表'框',一个表'产品'和一个表'box_product'

  • Box与box_product有一对多关系。

  • 产品与box_product

  • 有一对多的关系

在box_product中,您只有3列:'id','box_id'和'product_id'。 (如果使用复合主键,也可以是2列,并省略'id')

示例: 假设一个盒子有3个产品:A,B和C.它有一个A,2个B和3个C.

对于这个例子,会有:

  • 框中的一行
  • 产品中的3行(您不需要在产品表中复制行,每个产品只需要一行,无论有多少个盒子或数量)。
  • a的box_product中的一行,B的box_product中的2行,以及C的box_product中的3行(因此,关联实体总数中为6行)。