データベース設計 (全38問中2問目)
No.2
出典:令和6年春期 問81
分類
テクノロジ系 » データベース » データベース設計
正解
エ
解説
データベースの正規化は、データベースを構築する際にデータの重複や矛盾を排除する目的で、データ同士の関連を保ったまま複数の表に分解していく作業です。正規化は次のように3段階の手順を踏んで行います。
受注データ表は、既にすべての項目の値が単一値なので第1正規形の条件を満たしています。
【第2正規化】
受注データの主キーは、各行を一意に特定できる属性である"受注番号"です。主キーが単一属性の場合、主キーの一部というものが存在しないため、すでに第2正規形になっています。
【第3正規化】
受注データ表の項目を見ると、非主キー列である"商品番号"により"商品名"が一意に決まります。また設問にある「同一商品で単価が異なるときは商品番号も異なる」を逆から考えれば、"商品番号"が同じ商品は"単価"が同じということです。このため、"商品番号"により"単価"が一意に決まることになります。したがって、この2つの関係を別表に移します。このように分離していくと、正規化後の会員表の項目は以下のようになります。
{受注番号、発注者名、商品番号、個数}
{商品番号、商品名、単価}
したがって「エ」が正解です。
- 第1正規化
- 属性値に含まれる繰り返し項目をなくす
- 第2正規化
- 主キーが複数の項目の組合せから成る複合主キーのときに、主キーの一部の項目によって一意に決まる項目を別表に移す
- 第3正規化
- 主キー以外の項目によって一意に決まる項目を別表に移す
受注データ表は、既にすべての項目の値が単一値なので第1正規形の条件を満たしています。
【第2正規化】
受注データの主キーは、各行を一意に特定できる属性である"受注番号"です。主キーが単一属性の場合、主キーの一部というものが存在しないため、すでに第2正規形になっています。
【第3正規化】
受注データ表の項目を見ると、非主キー列である"商品番号"により"商品名"が一意に決まります。また設問にある「同一商品で単価が異なるときは商品番号も異なる」を逆から考えれば、"商品番号"が同じ商品は"単価"が同じということです。このため、"商品番号"により"単価"が一意に決まることになります。したがって、この2つの関係を別表に移します。このように分離していくと、正規化後の会員表の項目は以下のようになります。
{受注番号、発注者名、商品番号、個数}
{商品番号、商品名、単価}
したがって「エ」が正解です。
- "個数"を別表に移していること、2つの表に共通の属性がなく関連付けが行われていないことの2点で不適切です。
- "個数"は商品番号によって一意に決まらないので、別表に移してはいけません。
- "単価"を別表に移していないので不適切です。
- 正しい。適切な正規化をした表です。