HOME»データベーススペシャリスト掲示板»正規化について
投稿する
今さっき分割したものをくっつけるならウでも問題ございません。
出題文には分割後、更新するなどの記載がないですが、解説は分割後の更新に言及している感じであり、
出題文と解説にずれがある、というか出題文の条件が不足している感じがしますね。
出題文をそのまま読むとウも正解になりそうな気はします。
正規化について [0155]
柴犬さん(No.1)
下記の問題なぜウではなくてエなのでしょうか?
解説を読むと社名→役職の関数従属性が関係間の制約になっているため、ある人が特定の社名、役職を持たないと、特定の社名と役職との関係を表現できません。あるいは、複数の人が同じ社名を持っている場合はその人たちが同じ役職を持たないように監視しなければならない。
とあります。
が、C(社名,役職)と分解した時点で、ある会社について一つの役職しか登録できないので説明になっていないと思うのですが…
---------
関係:人名録(氏名,社名,役職)を射影によって分解して,関係:A(氏名,社名),関係:B(氏名,役職),関係:C(社名,役職)を作った。これら三つの関係から元の関係”人名録”を復元するための方法はどれか。ここで下線の付いた項目は主キーである。※下線は全ての関係で、最初の属性のみについています。
ア A とB とC との直積を作る。
イ A とB との集合和を求める。
ウ A とB とを氏名で等値結合する。
エ A とC とを社名で等値結合する。
オ B とC とを役職で自然結合する。
正解:エ
解説を読むと社名→役職の関数従属性が関係間の制約になっているため、ある人が特定の社名、役職を持たないと、特定の社名と役職との関係を表現できません。あるいは、複数の人が同じ社名を持っている場合はその人たちが同じ役職を持たないように監視しなければならない。
とあります。
が、C(社名,役職)と分解した時点で、ある会社について一つの役職しか登録できないので説明になっていないと思うのですが…
---------
関係:人名録(氏名,社名,役職)を射影によって分解して,関係:A(氏名,社名),関係:B(氏名,役職),関係:C(社名,役職)を作った。これら三つの関係から元の関係”人名録”を復元するための方法はどれか。ここで下線の付いた項目は主キーである。※下線は全ての関係で、最初の属性のみについています。
ア A とB とC との直積を作る。
イ A とB との集合和を求める。
ウ A とB とを氏名で等値結合する。
エ A とC とを社名で等値結合する。
オ B とC とを役職で自然結合する。
正解:エ
2021.01.11 13:58
関数従属さん(No.2)
★DB ブロンズマイスター
上記の解説で言いたい事は以下の事だと思います。
社名→役職の関数従属性(社名が決まれば役職が決まる)は満たしていなければならないとします。
関係:人名録を関係:A、関係:B、関係:Cに分解します。
(例)
[関係:人名録]
氏名 ,社名,役職
----------------
Aさん,P社 ,部長
Bさん,P社 ,部長
Cさん,Q社 ,社長
↓分解
[関係:A]
氏名 ,社名
----------
Aさん,P社
Bさん,P社
Cさん,Q社
[関係:B]
氏名 ,役職
----------
Aさん,部長
Bさん,部長
Cさん,社長
[関係:C]
社名,役職
---------
P社 ,部長
Q社 ,社長
その後関係A,B,Cのレコードの登録/変更/削除を行う際、
関係Bについては氏名がキーで役職を登録/変更/削除できる為
社名→役職の関数従属性を満たさなくなるような登録/変更/削除も可能となります。
尚、関係Cについては社名がキーで役職を登録/変更/削除する為
社名→役職の関数従属性は満たす事になります。
(例)
[関係:B]
氏名 ,役職
----------
Aさん,部長
Bさん,課長 (部長→課長に更新)
Cさん,社長
社名→役職の関数従属性を満たさなくなった関係Bを使用すると
復元後の関係:人名録も社名→役職の関数従属性満たさなくなるので
関係Bを使用するのは望ましくないという事だと思います。
(例)
[関係A,Bにて人名録を復元]
氏名 ,社名,役職
----------------
Aさん,P社 ,部長 (社名→役職の関数従属性を満たさない)
Bさん,P社 ,課長
Cさん,Q社 ,社長
ということで人名録を復元する際に関係A,Bではなく関係A,Cを使用する形になるかと思います。
社名→役職の関数従属性(社名が決まれば役職が決まる)は満たしていなければならないとします。
関係:人名録を関係:A、関係:B、関係:Cに分解します。
(例)
[関係:人名録]
氏名 ,社名,役職
----------------
Aさん,P社 ,部長
Bさん,P社 ,部長
Cさん,Q社 ,社長
↓分解
[関係:A]
氏名 ,社名
----------
Aさん,P社
Bさん,P社
Cさん,Q社
[関係:B]
氏名 ,役職
----------
Aさん,部長
Bさん,部長
Cさん,社長
[関係:C]
社名,役職
---------
P社 ,部長
Q社 ,社長
その後関係A,B,Cのレコードの登録/変更/削除を行う際、
関係Bについては氏名がキーで役職を登録/変更/削除できる為
社名→役職の関数従属性を満たさなくなるような登録/変更/削除も可能となります。
尚、関係Cについては社名がキーで役職を登録/変更/削除する為
社名→役職の関数従属性は満たす事になります。
(例)
[関係:B]
氏名 ,役職
----------
Aさん,部長
Bさん,課長 (部長→課長に更新)
Cさん,社長
社名→役職の関数従属性を満たさなくなった関係Bを使用すると
復元後の関係:人名録も社名→役職の関数従属性満たさなくなるので
関係Bを使用するのは望ましくないという事だと思います。
(例)
[関係A,Bにて人名録を復元]
氏名 ,社名,役職
----------------
Aさん,P社 ,部長 (社名→役職の関数従属性を満たさない)
Bさん,P社 ,課長
Cさん,Q社 ,社長
ということで人名録を復元する際に関係A,Bではなく関係A,Cを使用する形になるかと思います。
2021.01.11 18:19
柴犬さん(No.3)
解説ありがとうございます。
説明頂いた内容はわかりました。
出題分の意味がわかってないのかもしれないのですが、
どこにも分割後、更新するなどの記載がなく、ただ今さっき分割したものをくっつけるならウでもいいんじゃないかと思ったのですが、
出題の意味としてはA,B,Cのような形で分割できるとき(関数従属性があるとき)正しい分割方法を選べという意味なのでしょうか?
説明頂いた内容はわかりました。
出題分の意味がわかってないのかもしれないのですが、
どこにも分割後、更新するなどの記載がなく、ただ今さっき分割したものをくっつけるならウでもいいんじゃないかと思ったのですが、
出題の意味としてはA,B,Cのような形で分割できるとき(関数従属性があるとき)正しい分割方法を選べという意味なのでしょうか?
2021.01.11 19:51
関数従属さん(No.4)
★DB ブロンズマイスター
>どこにも分割後、更新するなどの記載がなく、ただ今さっき分割したものをくっつけるならウでもいいんじゃないか
今さっき分割したものをくっつけるならウでも問題ございません。
>出題の意味としてはA,B,Cのような形で分割できるとき(関数従属性があるとき)正しい分割方法を選べという意味なのでしょうか?
出題文には分割後、更新するなどの記載がないですが、解説は分割後の更新に言及している感じであり、
出題文と解説にずれがある、というか出題文の条件が不足している感じがしますね。
出題文をそのまま読むとウも正解になりそうな気はします。
2021.01.11 21:57