平成30年秋 午後 第6問データベース

dumpさん  
(No.1)
平成30年秋 午後 第6問データベース
この問題で、主キーの記載はないですが、
どのようにその列が主キーだと判断してるのでしょうか。
仮で考えているのでしょうか。
2022.03.08 15:20
さん 
(No.2)
「その表でデータを一意に絞るにはどれをキーとすれば良いのかを」論理的に考えます。

仮で主キーを設定しながら考察していくのも、主キーを探し出す方法として別に間違ってはいません。

主キーを特定するヒントとして、
①DML文のWhere句である特定の値が指定されていること
②文章から推測
が挙げられます。

表3のユースケースで
'''
既に実表''入室許可"に同じ社員ID,室ID,入室許可開始年月日の行が存在する場合は,入札許可終了年月日を更新する
'''
とあるので、入室許可表でデータを特定してupdateするにはwhere句で社員ID,室ID,入室許可開始年月日を指定すれば良いということになります。

というふうに考えます。


確かに、文章中に
主キーはこれです!
と明言されていないので文章などから導き出した主キーが本当に主キーなのか?という疑問はあるかもしれませんが、このように文章や仕様から主キーを導き出すのは実務でもかなり重要な事なので、慣れておくと良いかもしれません。

これで答えになっていればよいですが、、
2022.03.09 08:14
dumpさん  
(No.3)
わさん

ご丁寧な回答、ありがとうございます。
この「平成30年秋 午後 第6問データベース」設問1は、ER図を作成する問題となっています。
主キーの明記はないので、一般的な知識として主キーは一つで、外部キーは多になるという考えをもとに、その表の性質?から読み取って、判断していく、ということになりますか。例えば、社員表の社員IDは一つであることに対して、部署表にある社員IDは複数ある、という常識のようなところを推測する、ということになるのでしょうか。
2022.03.09 16:12
GinSanaさん 
AP プラチナマイスター
(No.4)
>主キーの明記はないので、一般的な知識として主キーは一つで、外部キーは多になるという考えをもとに、その表の性質?から読み取って、判断していく、ということになりますか。

主キーが1つとは限らないし、外部キーが多、というのもどこか足をすくわれる考え方な気がしますねえ。
明細があったら、IDと連番が主キーのメジャーじゃないですか。
表の性質というか、当たり(IDが一般的に一意にするから、それだけで足りるかどうか?とかそういう考えで振ってみる)をつけて、
外部キーは参照元の主キーから参照先のテーブルの列(主キーでも外部キーを兼ねているケースもある。ヘッダと明細のように)に引く
(一意でないと外部参照を張った際にエラーが発生する)

ほんとは主キーってのは、候補キーって言って一意になる組み合わせを全部出して、その最小の組み合わせから選ぶわけですね
(この辺は高度区分でやります)

入退室ログなんかは、実際にログを想像してみれば、特定したけりゃIDと時間だよな、みたいな一般常識の発想で
本文に書いていなくともまああたりはつくと思います。
2022.03.09 19:05
さん 
(No.5)
> 主キーの明記はないので、一般的な知識として主キーは一つで、外部キーは多になるという考えをもとに、その表の性質?から読み取って、判断していく、ということになりますか。
→ここでいう主キーは一つというのは、その表の主キーとなる値は重複しないという意味ですよね?一応いうと、2つの列をキーとする場合もあるので(複合キー)
その表の性質=表2と表3のユースケースだとするのであれば、その考え方で合っています。

>常識のようなところを推測する
→とありますが、表3のユースケースから表の使われ方を読み取るという言い回しが正しいかもしれません。実際の運用の仕方が表3のユースケースに全て書かれているので正しく読み解けば自ずと答えが出てくると思います。

たとえば、
ユースケース名=入室許可登録の
「管理者は、申請書が届いたら~」
という説明の部分で「社員IDを入力し」とあるため、社員IDのみでデータが一意に絞り込めることがわかるため、入室管理用社員表の主キーは社員IDであることがわかるし、

入室許可表の更新キーが社員ID,室ID,入室許可開始年月日であることから、社員ID,室ID,入室許可開始年月日がどれか一つでも一致しなければ更新では無く新規登録されるため、入室許可表に同じ社員IDのデータは複数存在する可能性があることもわかると思います。

表3のユースケースを読み取り、その上で正しく推測するという考え方ですね。

ちょっと長くなってしまったので分かりにくいでしょうか。

具体的なデータを自分で作ってみて考えるというのも良いかもしれません。
2022.03.09 19:27
さん 
(No.6)
GinSanaさんの説明の方がわかりやすいですね、、失礼いたしました、、、


質問を見る限り、とにかくデータベースを意識してシステムに触れていない感じがするので、AppSheetなどノーコードでアプリ作成できるツール使って何かアプリ作ってみると良いかもしれません。
と、少し思いました。
2022.03.09 20:01
dumpさん  
(No.7)
わさん、GinSanaさん

主キーと外部キーの考え方から復習しようと思います。
ご丁寧にありがとうございました。
2022.03.10 17:05

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop