我的数据库包括一个客户和一个子类别表
客户可以属于一个或多个子类别(当然,任何子类别都有一个或多个客户)。
我想知道哪个是连接这些共享多对多关系的表的最佳解决方案:
有什么建议吗?
干杯,Corbex
答案 0 :(得分:2)
我不认为联结表上的额外PK会增加任何值。您是否需要查找该表中的值,而无法通过Customer和/或SubCategoryID识别它们? CustomerSubCategoryDetailID值是否可以在其他任何地方使用?
当我complained about folks knee-jerking an IDENTITY column onto every single table时,我的博客上发生了一个有趣的讨论。有些人为OrderDetails表上的OrderDetailID列做了一些很好的论据。这些情况是否适用于您?
答案 1 :(得分:1)
我认为不需要带有customersubcategoryid的第三列;因此,我会选择第一个选项。额外的列不会在任何连接中为您提供任何优势。你甚至不会使用它。
答案 2 :(得分:1)
选择你的第一选择。确保您创建包含两列的密钥并强制实施唯一性。这样你就不需要一个单独的主键来区分其他相同的行。
在唯一键中包含两个列还有一个额外的好处。需要通过第一列执行查找的查询可以使用索引,但它们永远不需要读取数据行,因为索引已经包含第二列。