假设我们有以下表格:
公司
类别
category_company
现在,对于公司所属的每个类别,我们需要存储他们为该类别提供的产品。我想知道将自动递增主键添加到数据透视表是否是个好主意,然后在产品表上使用该ID,如下所示。
category_company
产品
有没有更好的方法来解决这个问题?在我正在研究的真正的项目中,我还有5个表依赖于公司类别的关系。
答案 0 :(得分:1)
您的问题还有其他方法,但您的问题也是正确的。您可能会或可能不会在category_company表中拥有该ID,具体取决于您是使用某个特定框架还是ORM,但正如@AndrewShmig所说,您不需要它。
重要提示:请记住,您正在建立多对多关系,因此您需要将一个主键或唯一的复合索引添加到' category_company'列上的表' category_id'和' company_id',即使你保持' id'柱。您不希望同一公司在类别中列出两次,反之亦然。
在MVC模型ORM中,您的方法(在category_company / pivot中使用&id;#)最好,因为您可以为关系本身分配其他信息,像对待另一个对象一样处理数据透视表。
不一样,但想到这两种情况:
如果你是一个更加面向对象的程序员,那么第二个选项可能符合你的需求(这就是你所拥有的),而且你可以为关系添加额外的信息,比如' classifiedized_by',&#39 ; date_of_categorization'或类似的东西。
*如果您有5个以上依赖于该关系的表格(例如'产品'),当然在中间表格中处理关系比使用&category; category_id'更好。和' company_id'他们每个人的领域。
来源: