SQL
 Computer >> コンピューター >  >> プログラミング >> SQL

ボイス-コッド正規形(BCNF)


BCNFは、第3正規形(3NF)の拡張であり、3NFよりもわずかに強力です。

P-> Qが自明な関数従属性であり、PがRのスーパーキーである場合、関係RはBCNFにあります。

関係がBCNFにある場合、それは関数従属性に基づく冗長性が削除されていることを意味しますが、いくつかの冗長性はまだ存在しています。

例を見てみましょう-

グラウンド
Begin_Time
End_Time
パッケージ
G01
07:00
09:00
ゴールド
G01
10:00
12:00
ゴールド
G01
10:30
11:00
ブロンズ
G02
10:15
11:15
シルバー
G02
08:00
09:00
シルバー


上記の関係は1NF、2NF、3NFにありますが、BCNFにはありません。これが理由です-

機能従属性{パッケージ->グラウンド}

Groundが依存する行列式属性Packageは、候補キーでも候補キーのスーパーセットでもありません。

<パッケージ>

パッケージ
グラウンド
ゴールド
G01
シルバー
G02
ブロンズ
G01


グラウンド
Begin_Time
End_Time
G01
07:00
09:00
G01
10:00
12:00
G01
10:30
11:00
G02
10:15
11:15
G02
08:00
09:00


現在、上記のテーブルはBCNFにあります。

<パッケージ>の候補キー テーブルはパッケージとグラウンドです

の候補キー テーブルは{Ground、Begin_Time} および{Ground、End_Time}

のキーとしてPackageを使用したため、異常が解消されました 関係。


  1. 第3正規形(3NF)

    3NFとは何ですか? 正規化の3番目のステップは3NFです。 リレーションが2NFにあり、推移的な関数従属性がない場合にのみ、テーブルは3NFにあります 例を見てみましょう- 例(テーブルは3NFに違反しています) Movie_ID Listing_ID Listing_Type DVD_Price ($) 0089 007 コメディ 100 0090 003 アクション 150 0091 007 コメディ 100 上記の表は、推移的な機能依存性

  2. Djangoのフォームウィジェット

    この記事では、Djangoフォームでウィジェットを使用する方法を説明します。ウィジェットは、フロントエンドを改善するのに非常に役立ちます。ウィジェットは、Djangoフォーム、テキストエリア、入力、パスワード入力などからレンダリングされるhtml要素であり、すべてウィジェットです。 まず、Djangoプロジェクトとアプリを作成しましょう。 tutorial14という名前でプロジェクトを作成しました djangoFormWidgetという名前のアプリ 。 settings.pyにアプリを追加します プロジェクトのurls.py。にアプリのURLを含めます テンプレート、 home.