応用情報23年 秋 午後 問6 設問1

【問題を解く前に】
技術要素→データベースの問題

【解き方】

設問1

今回は、「設問1のこの手の問題は、全文読まなくてもわかる」
ということを示すために、
あえて、全体像を描きません(次回以降に書きます)

この問題は、図2、表2だけで解けます。

(1)について

 カーディナリティ(1対多とか)を考える場合、

同じ項目が、
 あるテーブルでは主キー(=かつ主キー項目は1つ)
 別のテーブルでは、主キーでない普通の項目
という関係の場合、

 主キーのほうのテーブルが1です。
 なぜならば、1にするように、主キーを振っているわけです。
 同じ値はないはずです。主キーなんですから。
 だから1です。
→なので、複数の項目で主キーになっている場合は、
 その1項目をとりあげて「主キーだから1」とはいえない。
 あくまでも、主キーが1個のとき

そのように考えると、
  申請書と申請明細は
   申請書番号がどちらにも入っているので、
   申請書のほうが1
   申請明細は、明細番号をいくつもつくれるので、多
    1対多  →

  申請明細と費用種別は
   費用種別コードがどちらにも入っているので、
   費用種別が1
   申請明細は、おなじ費用種別のものは、たぶんあるので多
    多対1  ←


(2)について
  申請書が紙になっているところを想像すると、
  その紙には表があって、その表の1行1行が申請明細
  だから、明細をさすには、
   どの紙の(申請書の)表の
   何行目(明細行)
  といわないと決まらないはず。よって
   申請書番号と
   明細行番号
  が主キー


【答え】

設問1
(1) a →
   b ←

(2)申請書番号、明細書番号