1

我必须使用 SQL Server 建立 M:1 关系,但我一直想知道表示“多”端的列是否应该是外键,而表示“单”端的列是否应该是主键。目的是使用列表示“多”侧的表从表中检索信息,该列表示“一”侧。你认为这个想法是合理的并且会成功吗?

4

1 回答 1

2

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

表示多面的列确实是一张表的主键,而表示一面的列也是另一张表的主键。但是其中有一个新列,是一个相互连接的外键(该列是使关系成为多对一的列,这是您应该关心的列)。

所以,你必须把它们做成两张桌子。考虑以下多对一示例:

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

这将用两个表表示:

在此处输入图像描述

Countries

  • CountryID首要的关键,
  • Name.

Cities

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

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

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

1:除非您希望一个城市同时位于多个国家/地区,否则您应该有一个复合键而不是主表。Cities

于 2012-11-22T13:09:32.100 回答