top of page
アンカー 1

■第2正規形にした関係

“伝票明細”

伝票番号

商品番号

商品名

数量

1001

2001

商品A

5

1001

2002

商品B

10

1002

2001

商品A

7

1002

2003

商品C

20

1002

2004

商品D

8

1003

2005

商品E

30

1004

2005

商品E

50

“伝票”

伝票番号

顧客番号

顧客名

1001

11

顧客A

1002

13

顧客B

1003

29

顧客C

1004

29

顧客C

■第2正規形の問題点

 1.タプル挿入時異状

  顧客番号15、顧客名が顧客Dのデータを伝票が発生する前に、(NULL、15、顧客D)を登録しようとすると、主キーの伝票番号がNULL不可のため、登録できません。

 2.タプル更新時異状

  顧客番号29の顧客Cを更新しようとすると、顧客番号29の列が2行があるため、両方を一度修正する必要があります。1行だけを更新すると、データに矛盾が生じてしまいます。

 3.タプル削除時異状

  伝票番号1001のタプルを削除すると、顧客番号11の情報も消えてしまいます。そのため顧客情報が保持できなくなります。

■推移的関数従属性

 関係Rの異なる属性または属性の集合であるX、Y、Zについて、X→Y、Y (not)→X、Y→Zの三つの制約が成立している関数従属性です。


この関係は、「Xが決まるとYが決まる」、「Yが決まるとZが決まる」、「Yが決まってもXは決まらない」という関係です。

■第3正規形

第2正規形を第3正規形にするために、推移的関数従属性を排除します。

具体的には、X→Y→Zの関係において、Y→Zを別の関係とします。またYの元関係にも外部キーとして残しておきます。


第3正規形にした関係“伝票”

伝票番号

顧客番号

1001

11

1002

13

1003

29

1004

29

第3正規形にした関係“顧客”

顧客番号

顧客名

11

顧客A

13

顧客B

29

顧客C

■まとめ

 1.第3正規形では、すべての非キー属性に推移的な関係従属性が存在しない。

 2.第3正規形にするために、〇→△→□といった形の推移的関数従属性を排除する。

bottom of page