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