SQL M:1关系

时间:2012-11-22 12:53:01

标签: sql sql-server database-design many-to-one

我必须使用SQL Server建立M:1关系,但我一直想知道该列是否代表"很多" side应该是外键,而是代表" one"方应该是主键。 目的是从表中检索信息,其中列表示"一个"使用表格的一侧代表"许多"侧。 你觉得这个想法是否合理并且会成功吗?

1 个答案:

答案 0 :(得分:1)

  

我一直想知道代表“很多”方面的列是否应该   是外键,代表“一”方的列应该是   主键。

表示多方的列确实是表的主键,表示一方的列也是另一表的主键。但是其中一个中有一个新列,是一个连接彼此的外键(此列是使该关系多对一的列,这是您应该关注的列)。

所以,你必须将它们分成两个表。请考虑以下多对一示例:

  

国家和城市关系:一个国家有许多城市。

这将用两个表格表示:

enter image description here

<强> Countries

  • CountryID主键,
  • Name

<强> Cities

  • CityID主键 1
  • CountryId外键引用Countries(ID)
  • Name

这就是你应该如何创建多对一关系,如下所示:

  • CountryIDCityID是两个表中的主键。
  • 表示一侧的列CountryID是多方(cities表)中的外键。那是你应该
  • 的专栏

1: 您应该在Cities中使用复合键而不是主表,除非您想要一个城市同时在多个国家/地区。功能