HOME»応用情報技術者試験掲示板»平成30年秋、問6(DB)の設問5について
投稿する

平成30年秋、問6(DB)の設問5について [3592]

 はやとさん(No.1) 
設問のfに関する話です。
回答は「T1.所属組織ID=T3.組織ID AND T3.組織長の社員ID=T2.社員ID」でした。
私は社員と上司が同一所属組織に属していると考え、
「T1.所属組織ID=T2.所属組織ID AND T2.社員ID=3.組織長の社員ID」と考えました。そこで質問ですが
1)私の回答「T1.所属組織ID=T2.所属組織ID」は同一テーブルを対象にしているため、全データが内部結合できる→無意志な条件でしょうか。
2)模範解答の「T1.所属組織ID=T3.組織ID」ですが、T1.所属組織IDとT3.組織IDに同一IDが入るという条件ありましたでしょうか。
2022.09.01 09:37
jjon-comさん(No.2) 
AP プラチナマイスター
> 2)模範解答の「T1.所属組織ID=T3.組織ID」ですが、
> T1.所属組織IDとT3.組織IDに同一IDが入るという条件ありましたでしょうか。

その点,文章で明示されてはいません。

ただ,表1で提示された2つの実表「社員」「組織」は両者を結合しなければそもそも「(社員が)所属する組織の組織長」という関係を求めることができないので,

・主キー「社員.社員ID」を 外部キー「組織.組織長の社員ID」が参照している
・主キー「組織.組織ID」を 外部キー「社員.所属組織ID」が参照している
・主キー「組織.組織ID」を 外部キー「組織.上位組織の組織ID」が参照している

という参照制約の知識は,応用情報合格レベルでは必要になると考えます。
https://www.ap-siken.com/kakomon/30_aki/pm06.html

--------
FROM HR.社員 T1, HR.社員 T2(略)

のように,同じ表に異なる別名を付けて,異なる表として扱うものを「自己結合 self join」といいます。

自己結合という字面からは「自分が自分に結合している」ような印象を持ちますが,
「HR.社員 という表を2枚複写して,別名を付けて別々の役割を持たせる」
とイメージした方が人間にとって分かりやすいです。

T1(HR.社員)「平社員の一覧」という役割
    T1.所属組織ID
        |
        |結合
        |
    T3.組織ID
T3(HR.組織)
    T3.組織長の社員ID
        |
        |結合
        |
    T2.社員ID
T2(HR.社員)「組織長である社員の一覧」という役割

上から結合をたどっていく様子を言葉にすると,
「平社員である私の所属組織の,その組織長の社員IDの,その社員名(組織長の氏名)」
ということになります。

--------
> 1)私の回答「T1.所属組織ID=T2.所属組織ID」は
> 同一テーブルを対象にしているため、
> 全データが内部結合できる→無意志な条件でしょうか。

はい,その結合結果に意味を見いだせません。

同一テーブルを対象としていても,
上記「自己結合」のように複写したそれぞれに別の役割を持たせるなら大丈夫です。
同一テーブルの同一項目同士を結合しているので,無意味な結果になります。
2022.09.14 12:46
 はやとさん(No.3) 
ご回答ありがとうございます。
自己結合ですが知らなかったので勉強になりました。
> ただ,表1で提示された2つの実表「社員」「組織」は両者を結合しなければそもそも「(社員が)所属する組織の組織長」という関係を求めることができないので,
こちらに関して確かに結合できなければ関係を求めることができないので、問題からある程度推察するようにいたします。
ありがとうございました。
2022.09.14 23:00

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop