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