過去問解きまくり研究所 ホーム

平成30年度 春期 午前Ⅱ 問7

データ操作

一意性制約に関する問題

商品情報に価格,サイズなどの管理項目を追加する場合でもスキーマ変更を不要とするために,“管理項目”表を次のSQL文で定義した。“管理項目”表の“ID”は商品ごとに付与する。このとき,同じIDの商品に対して,異なる商品名を定義できないようにしたい。aに入れる字句はどれか。

管理項目

ID項目名データ型値
1商品名文字列ライト01
1商品番号文字列L001
1価格数値400
2商品名文字列ノート02
2⋮⋮⋮

〔商品情報〕

ID商品名商品番号価格サイズ
1ライト01L001400
2ノート02N001120A4
⋮

〔SQL文〕

CREATE TABLE 管理項目 (
    ID          INTEGER NOT NULL,
    項目名      VARCHAR(20) NOT NULL,
    データ型    VARCHAR(10) NOT NULL,
    値          VARCHAR(100) NOT NULL,
  [          a          ]
)
答えと解説を見る

✓ これが正解イUNIQUE(ID,項目名)

解説

IDと項目名の組を一意にすれば、1商品に商品名は1行しか持てません。

管理項目表は、商品情報の各項目を、IDと項目名と値の行に分けて縦に持たせる形です。見分ける軸は、どの列の組を一意にすれば、同じIDの商品に商品名が2つ入るのを防げるかです。商品名は、項目名が商品名である行の値として登録されます。そこで、IDと項目名の組にUNIQUEを付けると、ID1の商品名の行は1行しか作れず、異なる商品名を二つ定義することができなくなります。この制約は、商品番号や価格など他の項目にも同じく働き、1商品に各項目の値は一つずつになります。項目を行に分けた表では、IDと項目名の組が元の表の1つの欄にあたる、と考えると選べます。

ほかの選択肢はなぜ違うのか

出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問7

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)