SQL Server を使用して M:1 の関係を作成する必要がありますが、「多」側を表す列を外部キーにし、「一」側を表す列を主キーにする必要があるかどうか疑問に思っていました。目的は、「多」側を表す列を持つテーブルを使用して、「一」側を表す列を持つテーブルから情報を取得することです。このアイデアは合理的であり、うまくいくと思いますか?
質問する
1141 次
1 に答える
2
「多」側を表す列を外部キーにし、「一」側を表す列を主キーにするべきかどうか疑問に思っていました。
多面を表す列は確かにテーブルの主キーであり、一面を表す列は別のテーブルの主キーでもあります。しかし、そのうちの1つに新しい列があり、相互に接続する外部キーです(この列は関係を多対1にする列であり、それはあなたが気にするべき列です)。
したがって、それらを 2 つのテーブルにする必要があります。次の多対一の例を考えてみましょう。
国と都市の関係: 1 つの国には多くの都市があります。
これは、次の 2 つのテーブルで表されます。
Countries
:
CountryID
主キー、Name
.
Cities
:
CityID
主キー1 ,CountryId
外部キー参照Countries(ID)
,Name
.
これが、次のように多対 1 の関係を作成する方法です。
- 列
CountryID
と列CityID
は、2 つのテーブルの主キーです。 CountryID
一方を表す列は、多面(cities
テーブル)の外部キーです。それはあなたがすべき列です
1:都市を同時に複数の国に配置する場合を除き、主テーブルの代わりに複合キーを使用する必要があります。Cities
于 2012-11-22T13:09:32.100 に答える