2016-04-19 15 views
0

良い日-2NFデータベース正規化

私は次の情報に基づいてデータモデルを作成する必要があります。

あなたの仕事は、次の 情報を格納するためのモデルを作成することです:アルバムのリストと 各(画像ファイル)のためのアルバムアート、1点のアルバム、バンドのレコードレーベルやラベルの曲、彼らの ジャンル、バンドメンバー。

これまでに5つのテーブルを作成しました。そして、私は正規化部分をカバーする必要がありますが、私はそれと混同しています。私が作成した表の1つには、次の列とデータがあります。

bandMember

  1. bandMemberId - 自動インクリメント
  2. bandladelId - FK
  3. 本名
  4. ニックネーム
  5. memberphoneNo
  6. memberRole
  7. memberActive
  8. memberdob
  9. memberAge

と、このテーブルには、これまでに以下のデータを持っています。これを解決するため

enter image description here

Iは、カンマ区切り値を除去し、データのためのそれぞれの行を追加しています。今、このように見えます。

enter image description here

(正規化が存在する場合)誰かが私は、このテーブルを分割して、この問題を削除することができますどのように私を案内していただけますか?私はここでもプライマリキーと混同しているからです。インターネットで参照されている例は、Ageカラムに基づいています。しかし、私はそれらの例を得ていない。前もって感謝します。

+0

特に2NFレイアウトを作成する必要がありますか?そうでない場合、3NFは一般的に目標とする正規化の「最良の」レベルであり、対処が最も簡単です。 –

+0

@MarcB具体的には、3層の正規化をすべて作成する必要があります。ありがとう –

+1

@MarcB 3NFは、第3のギアがドライブするのに最適なギアではなく、正規化の最高レベルではありません。通常の形式でハープするのではなく、依存関係と異常を理解してください。 – reaanb

答えて

0

多値属性を持つ行を複数の行に分割する手順は、繰り返しグループを解決して1NFを達成する手順とほぼ同じです。ただし、その変換では、新しい各行に対応する値のコピーが元のものとなります。あなたの自動インクリメント列は、新しい行に対してインクリメントされます。したがって、2番目のテーブルは別の問題です。最初の1NFバージョンではありません。

1NFに変換された第1のテーブルは、bandMemberIdの値が1であり、(bandMemberId, memberRole)を候補キーとする2つの行を持ちます。非プライム属性はすべてbandMemberIdのみに依存するため、これは部分的な依存関係です。 (bandMemberId, memberRole)を別のテーブルにコピーし、bandMemberテーブルからmemberRoleを削除すると、2NFスキーマが得られます。スキーマが3NFでもあるかどうかわからないので、機能的な依存関係はありません。

関連する問題