H22 午前2 問6 について

なすびさん  
(No.1)
解説のイにある「元表では商品ごとの注文数量の情報がありましたが~」について、何故それが分かるのか教えていただきたいです。どうかよろしくお願いいたします。
2024.07.07 08:37
GinSanaさん 
DB シルバーマイスター
(No.2)
https://www.db-siken.com/kakomon/22_haru/am2_6.html

発注伝票(注文番号,商品番号,商品名,商品単価,注文数量)
が元の表で、
元表では商品ごとの注文数量の情報がありましたが
を見ると、商品番号の列と注文数量の列が同時にあるということは、商品ごとの注文数量の情報だ、と読めるということです。
2024.07.07 18:06
なすびさん  
(No.3)
もしかして元表の並び順も重要な情報で
発注伝票(注文番号,商品番号,商品名,商品単価,注文数量)
ではなく
発注伝票(注文番号,注文数量,商品番号,商品名,商品単価)
となっていたら注文番号ごとの情報になったりしますでしょうか。
恥ずかしながらイとウの自然結合の結果にはどちらも同じ要素が現れるのでは?と思っており
イは注文番号を結合属性として自然結合すると
注文番号,注文数量,注文番号,商品番号,商品名,商品単価
から
重複している注文番号を削除して
注文番号,注文数量,商品番号,商品名,商品単価
なるのでイは不正解
2024.07.07 19:18
みかんさん 
(No.4)
> もしかして元表の並び順も重要な情報で
発注伝票(注文番号,商品番号,商品名,商品単価,注文数量)
ではなく
発注伝票(注文番号,注文数量,商品番号,商品名,商品単価)
となっていたら注文番号ごとの情報になったりしますでしょうか。

元表の並び順は無関係です。例えば、
発注伝票
|{注文番号|商品番号}|商品名|商品単価|(伝票別商品毎の)注文数量|
|0001|1|ケーキ|3,200|1|
|0001|2|アイス|160|4|
ではなく
発注伝票
|{注文番号}|(伝票毎)注文数量|{商品番号}|商品名|商品単価|(伝票別商品毎)注文数量|
|0001|5|1|ケーキ|3,200|1|
|0001|5|2|アイス|160|4|
そして、
選択肢(イ)
注文(※見出し)
|{注文番号}|注文数量(※集計値)|
|0001|5|
注文商品(※明細)
|{注文番号|商品番号}|注文数量(※明細値)|
|0001|1|1|
|0001|2|4|
商品
|{商品番号}|商品名|商品単価|
|1|ケーキ|3,200|
|2|アイス|160|
となっていたら注文番号ごとの注文数量(※集計値)、注文番号ごと商品番号ごとの注文数量(※明細値)になります。
2024.07.07 20:22
なすびさん  
(No.5)
返信ありがとうございます。

実際に表を作ってみたおかげで解決したかもしれません。

例えば
|{注文番号|商品番号}|商品名|商品単価|注文数量|
|0001|2|ケーキ|3,300|4|
|0001|5|アイス|6,600|7|
の表だとして

選択肢(イ)では

発注 ( 注文番号, 注文数量 )
|0001|4|
|0001|7|
商品 ( 注文番号, 商品番号, 商品名, 商品単価 )
|0001|2|ケーキ|3,300|
|0001|5|アイス|6,600|

となり
注文番号をもとに結合していくと
|0001|2|ケーキ|3,300|  4もしくは7となるため不明  |
|0001|5|アイス|6,600|  4もしくは7となるため不明  |

そのため商品ごとの注文数量の情報を保持できないと考えてみたのですがいかがでしょうか。

ついでに同じ要領で選択肢(エ)を考えたときに

元表は
|{注文番号|商品番号}|商品名|商品単価|注文数量|
|0001|2|ケーキ|3,300|4|
|0001|5|アイス|6,600|7|
|0002|2|ケーキ|3,300|40|
|0002|5|アイス|6,600|70|

選択肢(エ)では
発注 ( 注文番号, 商品番号, 注文数量 )
|0001|2|4|
|0001|5|7|
|0002|2|40|
|0002|5|70|

商品 ( 商品番号, 商品名, 商品単価, 注文数量 )
|2|ケーキ|3,300|4|
|5|アイス|6,600|7|
(この時点で2つの伝票にある注文数量の40や70の情報を入れられない)

商品番号をもとに結合すると注文数量が複数になることや伝票ごとの情報がないという解説に合致したような気がします。
2024.07.07 23:02
みかんさん 
(No.6)
> 選択肢(イ)では
>発注 ( 注文番号, 注文数量 )
>|0001|4|
>|0001|7|
>商品 ( 注文番号, 商品番号, 商品名, 商品単価 )
>|0001|2|ケーキ|3,300|
>|0001|5|アイス|6,600|
>となり
とはなりません。発注の注文番号は重複(登録)不可です。主キー制約があるから。
選択肢(イ)では、注文数量の意味と値が変化します。発注伝票を分解した結果、主キーに対する関数従属性が変化したから。

発注 ( 注文番号, 注文数量 )
|0001|11|
商品 ( 注文番号, 商品番号, 商品名, 商品単価 )
|0001|2|ケーキ|3,300|
|0001|5|アイス|6,600|

注文番号をもとに結合していくと、伝票別商品毎の注文数量が消えて伝票毎の注文数量が現れるので復元失敗です。
2024.07.08 00:55
みかんさん 
(No.7)
>選択肢(エ)では
>発注 ( 注文番号, 商品番号, 注文数量 )
>|0001|2|4|
>|0001|5|7|
>|0002|2|40|
>|0002|5|70|
>商品 ( 商品番号, 商品名, 商品単価, 注文数量 )
>|2|ケーキ|3,300|4|
>|5|アイス|6,600|7|
>(この時点で2つの伝票にある注文数量の40や70の情報を入れられない)

注文数量の意味と値が違います。主キーが変われば言葉の意味と値が変わります。(関数従属性)
選択肢(エ)では
発注 ( 注文番号, 商品番号, 注文数量 )
|0001|2|4|
|0001|5|7|
|0002|2|40|
|0002|5|70|

商品 ( 商品番号, 商品名, 商品単価, 注文数量 )
|2|ケーキ|3,300|4|44|
|5|アイス|6,600|7|77|

注文番号を元に結合していくと、商品毎の注文数量が現れるため復元失敗です。
2024.07.08 01:11
なすびさん  
(No.8)
ご回答ありがとうございます。

やっと意味が分かりました。
いろんな解説を見ましたが、ここまで丁寧な解説は他にないです。
感動しました。間違いなく今後の大きな原動力になります。

本当にありがとうございました。
2024.07.08 02:42

返信投稿用フォーム

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

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop