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

平成21年度 春期 午前Ⅱ 問6

データ操作

外部キーに関する問題

複数の事業部,部,課及び係のような組織階層の概念データモデルを,第 3 正規形の表,

組織(組織ID,組織名,…)

として実装した。組織の親子関係を表示する SQL 文中の a に入れるべき適切な字句はどれか。ここで,“組織”表記述中の下線部は,主キーを表し,追加の属性を想定する必要がある。また,モデルの記法として UML を用いる。{階層}は組織の親子関係が循環しないことを指示する制約記述である。

概念データモデル:

クラス 組織(属性:組織名,…)
組織から組織自身への関連(自己関連)
  子組織 側の多重度 *
  親組織 側の多重度 0..1
  関連に制約 {階層} を付記
SELECT 組織1.組織名 AS 親組織,組織2.組織名 AS 子組織
    FROM 組織 AS 組織1,組織 AS 組織2
    WHERE [   a   ]
答えと解説を見る

✓ これが正解ウ組織1.組織ID = 組織2.親組織ID

解説

子の行が持つ親組織ID を、親の行の組織ID と結び付けます。

UML の図では、子組織の側の多重度が*、親組織の側が 0..1 です。一つの組織に親は高々一つなので、第 3 正規形の“組織”表には、各行に自分の親を指す親組織ID を外部キーとして持たせるのが自然な実装です。子は複数あり得るので、子組織ID という列を一つの行に持たせることはできません。SQL では組織1 を親、組織2 を子として出力しているので、子の行の親組織ID が親の行の組織ID と一致する組を結べばよく、条件は 組織1.組織ID = 組織2.親組織ID となります。同じ表を二つの別名で結ぶときは、別名ごとの役割を SELECT 句の見出しから読み取ってから条件を組むと取り違えません。

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

この問題の用語

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

同じ用語が出る問題

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