令和3年度 春期 応用情報技術者試験 午前 問29
テクノロジデータベースシステム開発技術データモデル・E-R/UML・キーモデリング記法(UML・DFD・状態遷移)
商品の注文を記録するクラス(顧客,商品,注文,注文明細)の構造を概念データモデルで表現する。a〜dに入れるべきクラス名の組合せはどれか。ここで,顧客は何度も注文を行い,一度に一つ以上の商品を注文でき,注文明細はそれぞれ1種類の商品に対応している。また,モデルの表記にはUMLを用いる。

図の説明テキスト
商品の注文を記録するクラスの構造を概念データモデルで表現するUML図。4つの四角形(クラス)が横一列に並んでおり、左から順に「a」、「b」、「c」、「d」と空欄になっている。四角形同士は実線で結ばれており、線の両端には多重度が記されている。aとbの間:a側が「1」、b側が「」。bとcの間:b側が「1」、c側が「」。cとdの間:c側が「*」、d側が「1」。
解答・解説
正解: ア. a: 顧客, b: 注文, c: 注文明細, d: 商品
商品の注文を記録する概念データモデルにおいて、各クラス間の多重度(1対多などの関係性)を問題文の条件から読み解きます。
- 「顧客は何度も注文を行い」
1人の顧客は複数の注文を行います。逆に、1つの注文は必ず1人の顧客に紐づきます。したがって、「顧客」と「注文」は *1対多(1 : ) の関係になります。 - 「一度に一つ以上の商品を注文でき」かつ「注文明細はそれぞれ1種類の商品に対応している」
1つの注文の中には、複数の商品が含まれるため、注文ごとに「注文明細」が複数存在します。したがって、「注文」と「注文明細」は 1対多(1 : )* の関係になります。
また、各注文明細にはそれぞれ1種類の商品が記載されますが、同じ商品は異なる注文明細(異なる注文)に何度も登場します。したがって、「注文明細」と「商品」は *多対1( : 1) の関係になります。
これらの関係を整理すると、以下のようにつながります。
- 顧客 (1) — (*) 注文
- 注文 (1) — (*) 注文明細
- 注文明細 (*) — (1) 商品
添付された図表(UMLのクラス図)の多重度を確認すると、以下のようになっています。
aとbの間は1対*bとcの間は1対*cとdの間は*対1
これらを上記の整理した関係に当てはめると、以下のクラス名が入ります。
a= 顧客b= 注文c= 注文明細d= 商品
よって、正しい組み合わせはアです。
各選択肢の解説
- ア: 正解です。
- イ:
aを商品、bを注文とした場合、dが顧客となります。c(注文明細)とd(顧客)が* : 1の関係で結ばれることになり、注文明細が直接顧客に紐づく不自然なモデルになります。また、「顧客は何度も注文を行い」という関係が直接表現されていません。 - ウ:
aを注文、bを注文明細とした場合、cが顧客となります。このとき、図のbとcの間の1 : *の関係より「1つの注文明細が複数の顧客に対応する」ことになってしまい、誤りです。 - エ:
aを注文明細、bを商品とした場合、図のaとbの間の1 : *の関係より「1つの注文明細に複数の商品が含まれる」ことになります。これは「注文明細はそれぞれ1種類の商品に対応している」という問題文の条件に反します。