解答例 - 実習課題1 - 16.3 正規化
実習課題1
四次元図書館 (仮名) では、会員が図書を借りるときには、必ず次のような図書貸出カードを発行している。
この図書貸出カードをテーブルにし、正規化しなさい。第一正規形、第二正規形、第三正規形、ボイスコッド正規形を示して、正規化した流れがわかるようにすること。
解答例
貸出カード毎に一意に定まる貸出番号を割り振ることにします。
非正規形
+=========+---------+-------+-------+----------+---------+-------+------+---------+-------
| 貸出番号 | 会員番号 | 会員名 | 貸出日 | 返却予定日| 書籍番号 | 書籍名 | 著者 | 書籍番号 | ‥‥
+=========+---------+-------+-------+----------+---------+-------+------+---------+-------
第一正規形
重複して現れる部分(書籍番号, 書籍名, 著者)を分離して第一正規形にします。
+============+------------+------------+------------+------------+
| 貸出番号 | 会員番号 | 会員名 | 貸出日 | 返却予定日 |
+============+------------+------------+------------+------------+
+============+============+------------+------------+
| 貸出番号 | 書籍番号 | 書籍名 | 著者 |
+============+============+------------+------------+
第二正規形
部分関数従属関係 (書籍番号) → (書籍名, 著者) を分離して第二正規形にします。
+============+------------+------------+------------+------------+
| 貸出番号 | 会員番号 | 会員名 | 貸出日 | 返却予定日 |
+============+------------+------------+------------+------------+
+============+============+
| 貸出番号 | 書籍番号 |
+============+============+
+============+------------+------------+
| 書籍番号 | 書籍名 | 著者 |
+============+------------+------------+
第三正規形
推移的関数従属関係 (貸出番号) →(会員番号)、(会員番号) → (会員名)
を分離して第二正規形にします。
+============+------------+------------+------------+
| 貸出番号 | 会員番号 | 貸出日 | 返却予定日 |
+============+------------+------------+------------+
+============+------------+
| 会員番号 | 会員名 |
+============+------------+
+============+============+
| 貸出番号 | 書籍番号 |
+============+============+
+============+------------+------------+
| 書籍番号 | 書籍名 | 著者 |
+============+------------+------------+
ボイスコッド正規形
第三正規形と同じです。