HOME»データベーススペシャリスト掲示板»R2 午後Ⅱ 問1 設問2(2)lおよびoについて
投稿する

R2 午後Ⅱ 問1 設問2(2)lおよびoについて [0188]

 さん(No.1) 
スレタイに挙げた空欄について、両方とも模範解答にて結合方法は内結合とされています。
しかし、両者ともに内結合である必要はないように思います。
具体的には、空欄lについては電力を全く使用していない住居が存在した場合、内結合してしまうと「使用電力量0」である住居が落ちてしまい、ランク付けや平均使用電力量に支障が出るかと思います(ので、右外結合するべきかと思います)。
また、空欄oについては参照制約により住居と地域は多:1であることが保証されている(ように思う)ので、地域をくっつけるときに左外結合したところで内結合と結果は変わらないと思います。

解答ではあえて内結合とされていますが、これはなぜなのでしょうか?
2021.08.01 22:24
GinSanaさん(No.2) 
DB ゴールドマイスター
この投稿は投稿者により削除されました。(2021.08.03 10:22)
2021.08.03 10:22
GinSanaさん(No.3) 
DB ゴールドマイスター
①で使用電力を年月日で先に絞ったうえで②のJOINをやろうってわけですから、使用電力がゼロの家は気にする必要はないってことになりますよね。どの道選ばれてない。
Oは、W1で絞った地域が全部が全部地域マスタにいるとは限らないから、住所と地域に参照制約はあっても、クエリの結果をテーブルとして扱ってやる以上はそんな話の問題ではなくて、結局W1、W2、W3で拾ったレコードの地域以外は用はない(外部結合なら、例えば地域マスタを左にするなら、地域番号と地域名は全部出た上で階級番号と平均使用電力量がNULLの結果がありえる)わけだから、内部結合にしているんですよ。
2021.08.03 10:22
 さん(No.4) 
この投稿は投稿者により削除されました。(2021.08.08 17:39)
2021.08.08 17:39
 さん(No.5) 
>>GinSanaさん
解答ありがとうございます。確かに空欄lについては①の時点で使用電力量0のレコードなんて存在しませんね……頭ついてませんでした。
しかし、ですよ。使用電力テーブルに存在する住居番号は住居テーブルに存在するものであることが保証されているはずです。なら、「①の結果と住居を住居番号で左外結合」してもよいと思うのです。
空欄oについても同じです。これは自分の質問文が悪かったのですが、私は「①の結果と地域を地域コードで左外結合」することを想定していたのです。①の結果に存在する地域コード、つまり、大元は住居テーブルに存在する地域コードですね。これは参照制約から地域テーブルに存在することが保証されているはずです。なら、前述のように外結合したところで結果は内結合と変わらないと思うのです。

ここで2点、追加で質問なのです。
1.上記考察は合っていますか?
2.外結合でも内結合でも結果が変わらない場合、内結合と解答すべきですか?

以上、よろしくお願いします。
2021.08.08 17:39
GinSanaさん(No.6) 
DB ゴールドマイスター
左外結合は、JOINするテーブルさえ間違えてなければたしかに大丈夫です。
SQLを書いたらひたすら403エラーばかり返ってきたんですが
2021.08.08 20:05
GinSanaさん(No.7) 
DB ゴールドマイスター
SQLをひたすら弾かれて切れそうになったので応用の方を間借りして説明を書きました。
こっちを読んでください。
www.ap-siken.com/bbs/2705.html
2021.08.08 20:11
GinSanaさん(No.8) 
DB ゴールドマイスター
1.上記考察は合っていますか?
結果が大丈夫なので、それで問題ないとは思います。
2.外結合でも内結合でも結果が変わらない場合、内結合と解答すべきですか?
自分は結果が変わらないなら内結合をふつうは選ぶと思います(振り落としの意味も兼ねてますからね)。外結合は振り落としだと困るってときにしか使わないです。
2021.08.08 20:20
GinSanaさん(No.9) 
DB ゴールドマイスター
左外結合の場合、IPAは書き方にクセがあって、
平成25年午後1問1のように
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2013h25_1/2013h25h_db_pm1_ans.pdf

・関係“所属”を左とする左外自然結合演算 
・関係“所属”のタプルを全て出力する外自然結合演算
みたいに書かないといけないので、そこも面倒くさいから気を付けて書いてもらえればいいと思います。

2021.08.08 21:08
 さん(No.10) 
>>GinSanaさん
リンク先含め拝見させていただきました。ご丁寧にありがとうございます。
結果変わらない場合外結合しても点は貰えそうですが、ぶっちゃけた話補足して頂いたように記述が面倒ですし、あえて減点されやすい方を選んで書くこともないですね……これは確かに内結合で書いた方が色々安全そうなのです。
試験対策として非常に有意義でした。ありがとうございました。
2021.08.09 07:50
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop