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