戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2018年 秋期 午前(科目A)26


問題文

UMLを用いて表した図のデータモデルのa, bに入れる多重度はどれか。 〔条件〕  (1) 部門には1人以上の社員が所属する。  (2) 社員はいずれか一つの部門に所属する。  (3) 社員が部門に所属した履歴を所属履歴として記録する。
基本情報技術者 2018年 秋期 午前(科目A) 問26の問題画像基本情報技術者 2018年 秋期 午前(科目A) 問26の選択肢の画像

選択肢

(正解)

UMLを用いて表した図のデータモデルのa, bに入れる多重度はどれか。【午前2 解説】

要点まとめ

  • 結論:a, b はともに 1..* である(各部門・各社員に対して所属履歴が一件以上存在するため)。
  • 根拠:条件(1)で部門は少なくとも一人の社員を持ち、条件(2)で社員は必ず一つの部門に所属するので履歴は双方に1件以上紐づく。
  • 差がつくポイント:線上の「1」がどちらのクラスに対する多重度を示すかを誤読せず、履歴(履歴テーブル)の役割を踏まえて読み取ること。

正解の理由

UMLの多重度は、線上で示された数値が近傍のクラス(すなわちそのクラスに対する多重度)を表します。図では、
  • 部門側近傍に「1」がある → 所属履歴から見た部門は必ず1つ(所属履歴レコードは1つの部門に属する)。
  • 社員側近傍に「1」がある → 所属履歴から見た社員は必ず1人(所属履歴レコードは1人の社員に属する)。 一方、部門に対しては複数の所属履歴(過去の履歴や複数社員分)が存在し得るため、部門→所属履歴の多重度 a は 1..、同様に社員→所属履歴の多重度 b も 1.. となります。したがって a:1..、b:1.. が正答です。

よくある誤解

  • 「線の近くの '1' が反対側の多重度を示す」と誤解して逆に読むミス。UMLでは文字が置かれた近傍のクラスに関する多重度です。
  • 履歴を「オプション(0件可)」と考えてしまう誤り。条件(2)の「社員はいずれか一つの部門に所属する」は少なくとも1件の履歴が存在することを意味します。
  • 履歴と「現在の所属」を混同すること。履歴テーブルは過去・現在の履歴を記録するので一人当たり複数レコードが存在し得ます。

解法ステップ

  1. 図の各多重度表記がどのクラスに対するものかを確認する(近傍に置かれた数がそのクラスの多重度)。
  2. 条件文を「クラス間の1対多・多対1・必須か任意か」に翻訳する。
  3. 所属履歴が「履歴」を兼ねる点を考慮し、部門・社員それぞれに対して履歴が1件以上あるか検討する。
  4. 選択肢と照合して一致する多重度を選ぶ。

選択肢別の誤答解説

  • ア(a:0..、b:0..
    → 誤り。部門・社員いずれも「少なくとも1件の所属」が条件であるため、0..*(ゼロ許容)は条件に反します。
  • イ(a:0..、b:1..
    → 誤り。社員側は1..*と合うが、部門側が0..*となっており、条件(1)「部門には1人以上の社員が所属する」に反します。
  • ウ(a:1..、b:0..
    → 誤り。部門側は1..*で合っているが、社員側が0..*であり、条件(2)「社員はいずれか一つの部門に所属する」を満たしません。
  • (a:1..、b:1..
    → 正解。部門も社員も少なくとも1件の所属履歴が存在するため、双方とも 1..* が適切です。

補足コラム

所属履歴は「アソシエーションを表す独立したクラス(連結エンティティ)」として扱われており、履歴管理や時系列データの保存に適したモデリングです。UMLではこのような中間エンティティを用いることで、同一社員が過去に複数部門を渡り歩いた履歴や、部門ごとの複数社員を自然に表現できます。実装時は「開始日」「終了日」をキーに時点検索や現在所属の抽出(終了日がNULLまたは未来日)を行います。

FAQ

Q1: 所属履歴が1件もない社員は許されますか?
A1: 問題の条件では許されません。条件(2)により「社員は必ずいずれか一つの部門に所属する」ため、少なくとも1件の所属履歴が必要です。
Q2: 「現在の所属」だけを管理する場合、多重度は変わりますか?
A2: 現在の所属のみを1対1で保持する属性にするならば別設計になりますが、履歴として扱うなら過去分を含めて1..*が妥当です。
Q3: UMLで「0..」と「」は同義ですか?
A3: はい。省略形で「」は「0..」と同じ意味です。

関連キーワード: UML、多重度、所属履歴、アソシエーション、履歴管理、リレーショナルモデリング、正規化
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について