29年秋午前問28の回答について
広告
十三夜さん
(No.1)
「関係RのA,Cへの射影の結果と一致するSQL文」について、IPAの回答は「SELECT DISTINCT A,C…」になっていますが、問題文に「重複行を除く」という条件はないため、「SELECT ALL A,C…」ではという意見があります。
たしかに私もこの問題を解いた時、DISTINCTが必要な条件は書いてないなと思いました。
(私の場合、逆にALLについての知識がなく、DISTINCT以外考えられませんでした。)
この条件でDISTINCTが妥当なのはなぜでしょうか?
たしかに私もこの問題を解いた時、DISTINCTが必要な条件は書いてないなと思いました。
(私の場合、逆にALLについての知識がなく、DISTINCT以外考えられませんでした。)
この条件でDISTINCTが妥当なのはなぜでしょうか?
2017.10.17 21:55
応用太郎さん
(No.2)
よく分からないので適当ですが、射影は若干ひっかけで
構文が正しいのを選ぶという意図ではないかと感じました。
構文が正しいのを選ぶという意図ではないかと感じました。
2017.10.17 22:03
十三夜さん
(No.3)
>応用太郎さん
私もその時は「ALL」を「*」と混同していて、構文的にDISTINCTしかないとおもっていたのですが、「SELECT ALL A,C…」は、構文として正しくて、「全行をSELECTする」という意味になるというのが、今日その話で本を調べてわかったことです。
「ALL」を省略するとデフォルトでALL指定になるそうですが…。
2017.10.17 22:12
通りすがりの者さん
(No.4)
とても気になって調べました。
Googleで、「データベース 射影 distinct」を入力して検索して出てきた「情報処理教科書 データベーススペシャリスト 2018年版」というタイトルをクリックすると、参考欄に以下の記述がありました。
射影演算は、SELECT文でSELECT句に選択項目リストを指定し、さらにDISTINCTを付与して重複を取り除いたものと同じである。
つまり、この問題で、関係RのA,Cへの射影の結果は、
a1 c1
a1 c2
a2 c2
なのですね。これは、すなわち、SELECT DISTINCT A, C FROM Tです。
基本情報や応用情報では、「斜影とは列を取り出すこと」さえ知っていれば問題は解けましたが、難しい問題が出ましたね。びっくりです。
Googleで、「データベース 射影 distinct」を入力して検索して出てきた「情報処理教科書 データベーススペシャリスト 2018年版」というタイトルをクリックすると、参考欄に以下の記述がありました。
射影演算は、SELECT文でSELECT句に選択項目リストを指定し、さらにDISTINCTを付与して重複を取り除いたものと同じである。
つまり、この問題で、関係RのA,Cへの射影の結果は、
a1 c1
a1 c2
a2 c2
なのですね。これは、すなわち、SELECT DISTINCT A, C FROM Tです。
基本情報や応用情報では、「斜影とは列を取り出すこと」さえ知っていれば問題は解けましたが、難しい問題が出ましたね。びっくりです。
2017.10.17 22:52
十三夜さん
(No.5)
>通りすがりの者さん
わざわざ調べてくださり、ありがとうございます。
「射影」の結果は重複行を除いた状態を指すんですね。
「列を取り出す」としか思っていなくて、あやふやなまま騒いでしまってすみません。
ちゃんと調べないとだめですね。
2017.10.17 23:43
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。