応用情報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)申請書番号、明細書番号