在不使用主键的情况下在两个表之间创建关系

时间:2016-04-30 15:56:48

标签: sql sql-server relational-database

我希望在菜单表和WinePrice表之间的SSMS中创建关系。我试图通过链接表(MenuContents)来做到这一点。但是我无法弄清楚MenuContents表中的MenuContentsId(因为它不是唯一的)和Menu表中的MenuContentsId之间的关系。我已将我的其他表格从图片中删除,以使事情更加清晰。

Menu:                  WinePrice:            MenuContents:

MenuId(PK)             WinePriceId(PK)       MenuContentsId
PubId                  WineId                WinePriceId
MenuContentsId         Size
MenuName               Price 

这个想法是菜单可以包含同一种葡萄酒的许多变化(基于其价格和大小),每种变体都由WinePriceId标识 - 与另一个未示出的表中的特定葡萄酒相关。我无法将MenuContentsId设为PK,因为许多MenuContentsIds会有很多WinePriceIds。

1 个答案:

答案 0 :(得分:0)

对我而言,您似乎想要一个菜单​​上有很多葡萄酒。许多葡萄酒可以存在于许多菜单中。

链接表是正确的,您需要做的就是使MenuContents的PK成为两个字段的组合。这样,只要MenuContents :: WindPriceId不同,任何MenucContents :: MenuId字段都可能出现很多次。

这意味着可以针对多个MenuId显示相同的WindPriceId。