0

以下が1NF/2NF/3NFに有効であると考えられるかどうか疑問に思います。複数の「ロケーションID」を単一のテーブルに格納する必要があります(複数のロケーションをリストする必要があるリンクテーブルの場合)。about.com(ここ)の記事を読んだ後、重複する列、IE、を使用できないようです。

LinkedLocationID (referenced from another table)  
LocationID1 
LocationID2  
LocationID3

そして、私は非原子フィールド、IEを使用することはできません、

LinkedLocationID
LocationIDs

では、1NFを壊さずに、3つの重複する列を含めるにはどうすればよいでしょうか。Locationに複数の値を格納することと、データベースを3NFに準拠させることの両方が必要です。ありがとう。

4

4 に答える 4

0

LinkedLocationLocationsには、組み合わせごとに1つの行を持つ個別のテーブルが必要です。

したがって、最初の例を使用します

LinkedLocationID | LocationIDs
1                | A,B
2                | B,C

になります

LinkedLocationID | LocationID
1                | A
1                | B
2                | B
2                | C
于 2012-09-26T14:15:52.260 に答える
0

次のように、2つのエンティティ間で交差テーブルを使用します。

Item
=====
ItemID
...


ItemLocation
============
ItemID
LocationID
...



Location
========
LocationID
...
于 2012-09-26T14:15:58.673 に答える
0

あなたの質問はあなたがリンクしているものを欠いていますが、古典的な解決策は

Thingies
ThingyID
...

Locations
LocationID
...

ThingyLocations
ThingyID FK to Thingies
LocationID to Locations
于 2012-09-26T14:17:34.470 に答える
0

「有効」はそれを考える正しい方法ではないかもしれません。多くの問題があり、正規化しないのが理にかなっているものもあります。私の意見では、データがどのように使用されるかがより重要です。

ここで、正規化が唯一の懸念事項である場合は、3つのLocationIDを1つのテーブルに格納しないでください。LocationIDをLinkedLocationIDにリンクするテーブルが必要です。そのため、テーブルは次のようになります。

LocationLinkedLocationId - LinkedLocationID - LocationID
1                          1                  1
2                          1                  2
3                          2                  1
4                          3                  1
于 2012-09-26T14:18:20.927 に答える