我必须使用SQL Server建立M:1关系,但我一直想知道该列是否代表"很多" side应该是外键,而是代表" one"方应该是主键。 目的是从表中检索信息,其中列表示"一个"使用表格的一侧代表"许多"侧。 你觉得这个想法是否合理并且会成功吗?
答案 0 :(得分:1)
我一直想知道代表“很多”方面的列是否应该 是外键,代表“一”方的列应该是 主键。
表示多方的列确实是表的主键,表示一方的列也是另一表的主键。但是其中一个中有一个新列,是一个连接彼此的外键(此列是使该关系多对一的列,这是您应该关注的列)。
所以,你必须将它们分成两个表。请考虑以下多对一示例:
国家和城市关系:一个国家有许多城市。
这将用两个表格表示:
<强> Countries
强>:
CountryID
主键,Name
。 <强> Cities
强>:
CityID
主键 1 ,CountryId
外键引用Countries(ID)
,Name
。这就是你应该如何创建多对一关系,如下所示:
CountryID
和CityID
是两个表中的主键。CountryID
是多方(cities
表)中的外键。那是你应该 1: 您应该在Cities
中使用复合键而不是主表,除非您想要一个城市同时在多个国家/地区。功能