カーディナリティ(多重度)とは?
カーディナリティ(多重度)とは、エンティティ間の関連が「1対1」「1対多」「多対多」のいずれかを示す度合い。あわせて関連への参加が必須か任意か(オプショナリティ、最小多重度0か1か)も定める。業務ルールをモデル上で正確に表現できているかを判定する基準になる。
システムアーキテクト試験の過去問では1回出題されています。
かーでぃなりてぃ
カーディナリティ(多重度)の意味
エンティティ間の関連が「1対1」「1対多」「多対多」のいずれかを示す度合い。あわせて関連への参加が必須か任意か(オプショナリティ、最小多重度0か1か)も定める。業務ルールをモデル上で正確に表現できているかを判定する基準になる。
カーディナリティ(多重度)の具体例
「顧客は0件以上の受注をもつ」「受注は必ず1人の顧客に属する」と定義すると、受注テーブルの顧客IDはNOT NULLの外部キーになる。逆に「担当者は割り当てられない場合がある」なら担当者IDはNULL許容とし、集計時の欠損の扱いを設計で決める。
カーディナリティ(多重度)は試験でどう引っ掛けられる?
多重度は「多いか少ないか」ではなく上限と下限の組。0対多と1対多はどちらも「多」だが、下限0か1かでNULL許容や必須入力チェックの設計が変わる。多対多はそのままでは関係データベースに実装できない点も頻出。UMLのクラス図では 1、0..1、1..\*、\* と書き、多重度は関連の「向こう側」の個数を書く(手前のクラス側に書く誤りが多い)。
カーディナリティ(多重度)と関連する用語
カーディナリティ(多重度)が出た過去問
図は"顧客が商品を注文する"を表現したUMLのクラス図である。"顧客が複数の商品をまとめて注文する"を表現したクラス図はどれか。ここで、注文明細は注文に含まれる…
正解:顧客1―0..*注文。注文の側に黒ひし形(多重度1)を置き、注文明細(多重度1..*)をコンポジションで束ねる。注文明細0..*―1商品。
要点:一括注文は注文が明細1..*を束ねる構造で表す
複数商品をまとめて注文する構造は、注文が複数の注文明細を束ね、各注文明細が一つの商品に対応する形で表現する。したがって注文と注文明細はコンポジション(注文が全体、注文明細が部分)で、注文側の多重度が1、注文明細側が1..*になる。顧客と注文は1対0..*、注文明細と商品は0..*対1が正しい。この関係を全て満たすのはアである。
出典:平成29年度 秋期 システムアーキテクト試験 am2 問3(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。