IPA過去問ドリル

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

テクノロジ/データベース

複数の事業部,部,課及び係のような組織階層の概念データモデルを,第3正規形の表, 組織(組織ID,組織名,…) として実装した。組織の親子関係を表示するSQL文中のaに入れるべき適切な字句はどれか。ここで,“組織”表記述中の下線部は,主キーを表し,追加の属性を想定する必要がある。また,モデルの記法としてUMLを用いる。{階層}は組織の親子関係が循環しないことを指示する制約記述である。 SELECT 組織1.組織名 AS 親組織, 組織2.組織名 AS 子組織 FROM 組織 AS 組織1, 組織 AS 組織2 WHERE a

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

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

正解:ウ

解説

組織の親子関係は,組織表の自己結合(自己参照)で表現します。組織1を親組織側,組織2を子組織側とみなすと,子組織である組織2から見た親組織のID(組織2.親組織ID)が,親組織である組織1自身のID(組織1.組織ID)と一致する行を結合すればよいことになります。図の“{階層}”のUML表記でも,組織は0..1個の親組織と*個(0以上)の子組織をもつ自己参照の関連として表されています。

選択肢ごとの解説

  • 誤り。組織1.親組織IDと組織2.子組織IDという,どちらも実際には存在しない属性名同士を比較する条件であり,親子関係を正しく結合する条件になっていない。
  • 誤り。組織1.親組織ID=組織2.組織IDでは,組織1(親組織側のつもりの表)に親組織IDを参照させており,組織1と組織2の役割(どちらが親でどちらが子か)が逆になってしまう。
  • 正しい。組織1.組織ID=組織2.親組織IDとすることで,組織2(子組織)の親組織IDが組織1(親組織)自身の組織IDと一致する行を結合でき,親組織名と子組織名を正しく対応付けられる。
  • 誤り。組織1.組織ID=組織2.子組織IDでは,組織2に存在しない“子組織ID”という属性を参照しており,親子関係の結合条件として成立しない。
データベーススペシャリストの過去問を演習モードで解く