令和3年度 秋期 午前Ⅱ 問2
データベース設計
UMLに関する問題
部,課,係の階層関係から成る組織のデータモデルとして,モデル A ~ C の三つの案が提出された。これらに対する解釈として,適切なものはどれか。組織階層における組織の位置を組織レベルと呼ぶ。組織間の階層関係は,親子として記述している。親と子は循環しないものとする。ここで,モデルの表記には UML を用い,{階層}は組織の親と子の関連が循環しないことを指定する制約記述である。
モデルA~C:
モデルA
部(部コード) 1 親 ―― 子 * 課(課コード)
課(課コード) 1 親 ―― 子 * 係(係コード)
モデルB
組織(組織コード,組織レベル)
組織から組織自身への関連(自己関連):親側 0..1 ―― 子側 *
関連に制約 {階層} を付記
モデルC
組織(組織コード,組織レベル)
組織構造(親組織コード,子組織コード)
組織 1 親 ―― * 組織構造
組織 1 子 ―― * 組織構造- ア新しい組織レベルを設ける場合,どのモデルも変更する必要はない。
- イどのモデルも,一つの子組織が複数の親組織から管轄される状況を記述できない。
- ウモデル B を関係データベース上に実装する場合,親は子の組織コードを外部キーとする。
- エモデル C では,組織の親子関係が循環しないように制約を課す必要がある。
答えと解説を見る
✓ これが正解エモデル C では,組織の親子関係が循環しないように制約を課す必要がある。
解説
親子の組を別に持つモデル C は、循環を防ぐ制約を別に課す必要があります。
モデル C は、組織とは別に組織構造というクラスを置き、親組織コードと子組織コードの組で親子関係を一つずつ記録する形です。この形は一つの子に複数の親を持たせることもできる柔軟さがある反面、ある組織の子孫がその組織自身の親になるような組を登録することも、構造だけでは防げません。モデル B には {階層} という制約記述が付いていて循環しないことが明示されていますが、モデル C には付いていません。そのため、親子関係が循環しないように制約を課す必要がある、という解釈が適切です。見分ける軸は、各モデルがどの状況を記述でき、どの状況を構造だけでは防げないかです。親子の組を別のクラスに持たせるモデルは、自由度が高いぶん制約を自分で足す必要がある、と押さえておくと判断しやすくなります。
ほかの選択肢はなぜ違うのか
- ア新しい組織レベルを設ける場合,どのモデル…:モデル A は部・課・係をそれぞれ別のクラスとして固定しているので、たとえば係の下に新しい組織レベルを設けるには、クラスと関連を追加しなければなりません。組織レベルを属性で持つモデル B、C とは違い、どのモデルも変更不要とはいえません。
- イどのモデルも,一つの子組織が複数の親組織…:モデル C の組織構造は、親組織コードと子組織コードの組を何行でも持てるため、同じ子組織コードに異なる親組織コードを持つ行を登録できます。一つの子組織が複数の親から管轄される状況も記述できるので、この解釈は誤りです。
- ウモデル B を関係データベース上に実装す…:モデル B では親側の多重度が 0..1、子側が * なので、一つの子が持つ親は高々一つです。関係データベースに実装するときは、子の行に親の組織コードを外部キーとして持たせます。親が子の組織コードを持つ形では、一つの親に複数の子を記録できません。
この問題の用語
- 組織目的を果たすために、人が役割を分けて集まったまとまりのことです。分け方には機能別、事業部制、マトリックスなどの形があります。
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。データの定義や操作にはSQLを使います。
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問2
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問11:参照制約に関する問題(関係データベース)
- 令和6年度 秋期 午前Ⅱ 問6:クラス図に関する問題(組織)
- 令和6年度 秋期 午前Ⅱ 問5:主キーに関する問題(関係データベース)
- 令和4年度 秋期 午前Ⅱ 問23:アクセス透過性の説明(組織)
- 平成31年度 春期 午前Ⅱ 問3:UMLに関する問題(組織)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)