トップページ > コンテンツ > データベース関連メモ > 正規形 > Boyce-Codd正規形

Boyce-Codd正規形(BCNF,3.5F)とは

定義

  • リレーションRの自明でない関数従属(※1)の決定項がスーパーキー(※2)であること。

(※1)自明な関数従属と自明でない関数従属とは
 自明な関数従属の例:{社員番号,部署番号}->{社員番号}のような部分集合に相当する関数従属。
 自明でない関数従属の例:{社員番号}->{性別}などの上記以外の関数従属。

(※2)
 スーパーキーとはキーを含む任意の属性集合。キー自体も可。

概要

  • 主キー属性{B,C}両方が特定されると、非キー属性Aを導き出せる(BC->A)
  • 非キー属性Aが主キー属性の一部のBを特定できる(A->B)
が同時に発生している状態はBCNFでない。

上記の状態から{AB}と{AC}に分解すると、全ての関数従属の決定項がスーパーキーになり、BCNFとなる。

その他

  • 概要のように分解すると(BC->A)の関数従属の情報が失われてしまう。
    関数従属性を保存するわけではない点は注意が必要。

  • 第3正規形で候補キーが1種類の場合はBCNFと一致する。
    以下のケースは、全ての自明でない関数従属(顧客番号→顧客名、顧客番号→住所)の決定項がスーパーキー(顧客番号)の状態になっているため。既にBCNFな第3正規形。
顧客番号 顧客名 住所

  • 第3正規形で候補キーが複数ある場合に、非キー属性からキー属性の関数従属性を取り除くとBCNFになる。

Boyce-Codd正規形(BCNF,3.5F)の正規化例

BCNFでない第3正規系

氏名 部署名 オフィスエリア名
佐藤 営業部 3F-00Aエリア
鈴木 経理部 4F-00Bエリア

  • {氏名,部署名}->{オフィスエリア名}
  • {オフィスエリア名]->{部署名}
の関係にある。

BCNFの形に変更した第3正規系

氏名 オフィスエリア名
佐藤 3F-00Aエリア
鈴木 4F-00Bエリア

オフィスエリア名 部署名
3F-00Aエリア 営業部
4F-00Bエリア 経理部

最終更新:2023年07月30日 22:04