HOME»基本情報技術者平成20年秋期»午前問57
基本情報技術者平成20年秋期 午前問57
問57
次のような繰返し構造をもったデータを,第3正規形に正規化したものはどれか。ここで,下線部分は主キーを表す。また,単位と単価は商品コードごとに決まるものとする。

- [出題歴]
- ソフトウェア開発技術者 H18春期 問62
分類
テクノロジ系 » データベース » データベース設計
正解
イ
解説
関係データベースの正規化は次のように3段階に分けて行います。
1つの紙に複数の商品が記載された伝票をイメージすると、
第2正規化では主キーの一部によって一意に決まる項目を別表に移します。表を見ると「伝票番号」から「日付」「顧客コード」「顧客名」「住所」の4つ、「商品コード」から「単位」「単価」の2つが一意に定まることがわかるのでこれらの関係を別表に分離します。
第3正規化では主キー以外の項目によって一意に決まる項目を別表に移します。主キー以外の項目をみると、「顧客コード」から「顧客名」「住所」が一意に定めることがわかるためこの関係を別表に分離します。
以上より、設問のデータを第3正規化まで完了すると「イ」のデータベース構造となります。
- 第1正規化
- 繰り返し項目をなくす
- 第2正規化
- 主キーの一部によって一意に決まる項目を別表に移す
- 第3正規化
- 主キー以外の項目によって一意に決まる項目を別表に移す

(伝票番号1234, …,商品コード111, …)
(伝票番号1234, …,商品コード222, …)
というように、同じ伝票番号を持つレコードが複数存在することになるので、表中のレコードを一意に特定するためには「伝票番号」+「商品コード」の複合主キーにしなければならないことがわかります。(伝票番号1234, …,商品コード222, …)
第2正規化では主キーの一部によって一意に決まる項目を別表に移します。表を見ると「伝票番号」から「日付」「顧客コード」「顧客名」「住所」の4つ、「商品コード」から「単位」「単価」の2つが一意に定まることがわかるのでこれらの関係を別表に分離します。

