R5 午後2 問2 論理設計 入荷 対 発注明細・直納品発注

お絵描き勉強中さん  
(No.1)
問題文:
入荷では、入荷ごとに入荷番号を付与し、どの発注明細または直納品発注が対応付くかを記録し、併せて入荷年月日を記録する。

入荷は発注が起こった後に発生する認識なので、入荷側に外部キーとして発注明細と直納品発注の主キーを持たせましたが、回答では発注明細と直納品発注側に入荷番号を外部キーとして持たせてあります。
これはなぜだか教えていただけないでしょうか?
2025.09.21 03:19
GinSanaさん 
DB ゴールドマイスター
(No.2)
この投稿は投稿者により削除されました。(2025.09.21 11:03)
2025.09.21 11:03
GinSanaさん 
DB ゴールドマイスター
(No.3)
>入荷側に外部キーとして発注明細と直納品発注の主キーを持たせましたが

一応理屈的にはどっちかが必ずnullになる形でそういう持たせ方ができるはできますが、それは全く発注明細も直納品発注もない状態から作ってもいいよ、といっているようなもので実際はいかんだろ、となるのでそれを許容しないと、入れるときに必ずnot null制約で落ちるので、発注側に後から持たせる形で繋ぎ止めることにしたように見えます。
2025.09.21 11:13
himaさん 
(No.4)
No.1で引用された問題文のすぐ前の行に,
入荷は「同じタイミングで納入できるものはまとめて行われる」とあります。
つまり,入荷と発注明細(直納品発注も)は1対多の対応になります。
そうすると,発注明細(直納品発注)の方に
入荷番号を外部キーで持たせないといけませんね。
「入荷側に外部キーとして発注明細と直納品発注の主キーを持たせ」ようとすると,
そこに入る値は一つに決まらないことになります。

1対1対応なら,おっしゃるように後から発生する入荷の方に外部キーで持たせるのが自然だと思いますが…。
2025.09.21 12:10
お絵描き勉強中さん  
(No.5)
himaさん
ありがとうございます。

確かに、、「同じタイミングで納入できるものはまとめて行われる」が発注明細たちにかかっているのが想像できてなかったせいで、実際解いてる時にER図を1対1に書いてました。

こう言った地味に主語のズレてる記載でもリレーションにどう関わるかイメージしていかないといけないですね!

ありがとうございました。とても良く理解出来ました!
2025.09.21 15:49

返信投稿用フォーム

※SQL文は全角文字で記載してください。
※宣伝や迷惑行為を防止するため、当サイト、姉妹サイト、IPAサイト以外のURLを含む記事の投稿はできません。

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop