データベースの基本的なパラダイムを明確にするためのいくつかの言葉

第一正規形 1NF: 属性を分割できなくなりました。

  • 人物(ID番号、氏名、性別、連絡先)が1NFを満たしていない
  • 連絡先情報には電話番号、メールアドレス、WeChat、QQなどが含まれるためです。
  • 人物(ID番号、名前、性別、電話番号)が1NFを満たす

第 2 正規形 2NF: 主キーに対する非主属性の部分的な機能依存関係はありません。

  • R(A, B, C, D, E) の主キーは (A, B) であり、関数の依存関係 { A,B → C, B → D, C → E } があります。
  • 部分的な関数依存関係 B → D があるため、R は 2NF を満たしません。
  • B → D を殺して { A, B → C, C → E } になる手段を使えば十分です

C → E、E は主キーと何の関係もないことに気づいたかもしれませんが、これは存在するのでしょうか? 答えは、2NF では許可されているということですが、2NF の範囲はそれほど広くなく、主キーに関連する関数の依存関係のみを考慮します。

第 3 正規形 3NF: 主キーに対する非主属性の伝達関数依存性はありません。

  • 上の例では、 { A,B → C, C → E } が得られます。
  • ただし、 { A,B → C, C → E } は 3NF を満たさない
  • A、B → C → E があるため、E は主キーに対する推移関数の依存関係を持ちます。
  • C → E を殺して { A, B → C } になる手段を使用すれば十分です

BCNF:非主属性に依存するオブジェクトは主キーである必要があり、部分的な関数依存関係にすることはできません

個人的には、BCNF は 1-2-3 パラダイムのように完全にアップグレードされているわけではないと感じていますが、定義によると、実際には BCNF は最初のパラダイムに基づいていれば十分です。ただし、データベースの正規化を改善するために、第 3 正規形に基づいて BCNF を満たすこともできます。

  • 2NF は主キーに関係のない関数の依存関係を考慮しません。
  • BCNF はすべての機能の依存関係を考慮しますが、
  • すべての関数の依存関係の矢印の左側が主キーである必要があります。
  • { A,B → C, C → E } は 2NF を満たしますが、BCNF を満たしません
  • { A,B → C、A,B → E } に変更しない限り

したがって、BCNF は 2NF のアップグレード版に似ており、一部の機能の依存関係を禁止するだけでなく、この関係を満たすためにすべての機能の依存関係も必要とします。


間違いがある場合は、修正してください。

あくまで大学生向けの試験対策です!

おすすめ

転載: blog.csdn.net/m0_64140451/article/details/131050368