0

私がやっている評価作業のために、エンティティアルバムには自己参照属性であるalso_boughtという属性があります。ただし、この1つの属性には、1つのアルバムに対して複数のエントリがあります。これは、also_boughtの推奨事項が推奨されることはめったにないため、正規化に関する疑問符です。私は1NFかどうかは分からない。自己参照

明確にするために、エンティティ全体の集合は

アルバム(also_bought album_id、タイトル、再生時間、ジャンル、RELEASE_DATE、価格、)

+0

「1NF」の定義はどういう意味ですか? (私の答えのリンクを参照してください) "複数のエントリ"とはどういう意味ですか?そのalso_bought値はalbum_idsのリストですか?あなたの列の種類は何ですか? – philipxy

答えて

0

"こんな商品も買っています" の項目が別々のテーブルに格納されるべきであり、何かのようなもの。

AlsoBought (table) 
    album_id 
    also_bought_album_id 

次に、両方の列の外部キーをAlbum.album_idを参照するように構成します。

0

あなたがアルバムは「自己参照テーブル」であることを意味し、それは同じテーブルに別の列リストからFK(外部キー)を持っているので? (列リストのサブロー値を別の場所に表示する必要がある場合は、FK制約が適用されます。)また、also_boughtのタイプがalbum_idsのリストであることを意味する場合は、前者の値ids)は後者(ids)の値ではありません。あなたにFKを思い出させる制約があります。

とにかく正規化は1つのテーブルに対して行われ、FKに依存しません。

いつでもあなたが"normalizing to 1NF" eliminating "non-atomic columns"であるときは、「テーブル」の「列」に含まれるものを決めることから始めなければなりません。ある行の列のセルに「多くの値」が含まれていると判断した場合、リレーショナル表はなく、1つの列を考え出す必要があります。最も簡単な方法は、値を設定する列を仮定してリレーションを取得し、次にstandard rules for elimination of too-complex column typesに従うことです。