HOME»応用情報技術者試験掲示板»平成26年春期 問27について
投稿する
そうです。氏名特定するのに職位はいりません。
なので職位が主キー(複合キー)でないことはわかりますよね?
ただ、職位手当は職位から特定できます。よって、
「非キー項目に関数従属している項目を別表に移す」という第三正規化はできていません。
部分関数従属に関しては複合キーがでてきた場合のほうがわかりやすいので
平成29年春問27を解いて解説をご覧になられるといいと思います
»[1884] 応用情報 平成26年秋期 午後問4 設問3について 投稿数:3
»[1883] DSLとはなんでしょうか? 投稿数:7
平成26年春期 問27について [1886]
初心者さん(No.1)
私はデータベース設計分野の問題が大の苦手です、、、
スレタイの問題の解説で「部分関数従属が存在しないので」という部分があまり理解できません。
氏名特定するのに職位いらなくね?って思ったら第三正規形の話でした。
どなたか解説いただけませんか?
スレタイの問題の解説で「部分関数従属が存在しないので」という部分があまり理解できません。
氏名特定するのに職位いらなくね?って思ったら第三正規形の話でした。
どなたか解説いただけませんか?
2020.02.06 13:51
DBさん(No.2)
>氏名特定するのに職位いらなくね?って思ったら第三正規形の話でした。
そうです。氏名特定するのに職位はいりません。
なので職位が主キー(複合キー)でないことはわかりますよね?
ただ、職位手当は職位から特定できます。よって、
「非キー項目に関数従属している項目を別表に移す」という第三正規化はできていません。
部分関数従属に関しては複合キーがでてきた場合のほうがわかりやすいので
平成29年春問27を解いて解説をご覧になられるといいと思います
2020.02.07 14:26
初心者さん(No.3)
ご丁寧な返信ありがとうございます!
つまり
第一正規形・・・ただ単純にすべてのデータが単一で主キーに関数従属した項目が別表に移されていない状態
第二正規形・・・主キー以外に関数従属したものが別表に移されていない状態
第三正規形・・・関数従属したものがすべて別表に移されている状態
という認識でよろしいでしょうか。
つまり
第一正規形・・・ただ単純にすべてのデータが単一で主キーに関数従属した項目が別表に移されていない状態
第二正規形・・・主キー以外に関数従属したものが別表に移されていない状態
第三正規形・・・関数従属したものがすべて別表に移されている状態
という認識でよろしいでしょうか。
2020.02.07 16:58
DBさん(No.4)
第一正規化は繰り返し項目をなくしたかたちになります。
例えばとあるお店の売上表で
売上番号(主キー)、日付、顧客番号、顧客名、商品番号、商品名、単価、数量
の項目があるとします。
まずこの状態は第一正規化すらされていない状態と考えてください。
山田商店という顧客に鉛筆、ノート、消しゴムを売った場合、
顧客名まではいいのですが商品番号、商品名、単価、数量の項目が、売った商品の分、繰り返しでてきてしまいます。
繰り返さないようにするにはこの売上番号に対応した売上明細表に移します。
売上表【売上番号(主キー)、日付、顧客番号、顧客名】
売上明細表【売上番号(主キー)、商品番号(主キー)、商品番号、、商品名、単価、数量】
これで第一正規化となります。
次に第二正規化ですが、候補キーの一部に部分関数従属する非キーを別の表に分解します。
例えば上で作った売上明細表をみてみましょう。
ここでは主キーが売上番号と商品番号の2つ(複合キー)があります。
この表では売上番号と商品番号の二つがあって初めて一意に決まる項目は数量の項目のみです。
商品名と単価は売上番号には関係なく、商品番号のみで一意に決まりますよね?
この、複合キーの一部(この場合商品番号のみ)に関数従属している商品名と単価を別の表、
商品表に移します。
売上明細表【売上番号(主キー)、商品番号(主キー)、数量】
商品表【商品番号(主キー)、商品名、単価】
第二正規化は、複合キーの一部の項目に関数従属している非キーの項目を別の表に移すと考えてください(正確には候補キーの一部に部分関数従属していつ非キーの項目を別の表に移す)
第三正規化はどの非キー項目も候補キーに直接関数従属している状態にします。
先ほどの売上表をみると、候補キーがまだありますよね?
顧客番号です。
これは顧客名を一意に決めることができます。
これを顧客表に移して
顧客表【顧客番号(主キー)、顧客名】
とします。
そうすると、今まで作った表をまとめると
売上表【売上番号(主キー)、日付】
売上明細表【売上番号(主キー)、商品番号(主キー)、数量】
顧客表【顧客番号(主キー)、顧客名】
の3つに分解できました。
この表をよくみると各表で全ての非キー項目が主キー(候補キー)に直接関数従属している状態になっていますね。
これが第三正規化です。
長くなってわかりづらいかもしれません。汗
まとまえると
第一正規化・・・繰り返し項目を別の表へ
第二正規化・・・候補キーの一部に関数従属(部分関数従属)している非キー項目を別の表へ
第三正規化・・・全ての非キー項目が主キー(候補キー)に直接関数従属している状態にする、
もしくは、第三正規化は主キー以外の候補キーに関数従属している表を別の表へ、と考えてもいいと思います
例えばとあるお店の売上表で
売上番号(主キー)、日付、顧客番号、顧客名、商品番号、商品名、単価、数量
の項目があるとします。
まずこの状態は第一正規化すらされていない状態と考えてください。
山田商店という顧客に鉛筆、ノート、消しゴムを売った場合、
顧客名まではいいのですが商品番号、商品名、単価、数量の項目が、売った商品の分、繰り返しでてきてしまいます。
繰り返さないようにするにはこの売上番号に対応した売上明細表に移します。
売上表【売上番号(主キー)、日付、顧客番号、顧客名】
売上明細表【売上番号(主キー)、商品番号(主キー)、商品番号、、商品名、単価、数量】
これで第一正規化となります。
次に第二正規化ですが、候補キーの一部に部分関数従属する非キーを別の表に分解します。
例えば上で作った売上明細表をみてみましょう。
ここでは主キーが売上番号と商品番号の2つ(複合キー)があります。
この表では売上番号と商品番号の二つがあって初めて一意に決まる項目は数量の項目のみです。
商品名と単価は売上番号には関係なく、商品番号のみで一意に決まりますよね?
この、複合キーの一部(この場合商品番号のみ)に関数従属している商品名と単価を別の表、
商品表に移します。
売上明細表【売上番号(主キー)、商品番号(主キー)、数量】
商品表【商品番号(主キー)、商品名、単価】
第二正規化は、複合キーの一部の項目に関数従属している非キーの項目を別の表に移すと考えてください(正確には候補キーの一部に部分関数従属していつ非キーの項目を別の表に移す)
第三正規化はどの非キー項目も候補キーに直接関数従属している状態にします。
先ほどの売上表をみると、候補キーがまだありますよね?
顧客番号です。
これは顧客名を一意に決めることができます。
これを顧客表に移して
顧客表【顧客番号(主キー)、顧客名】
とします。
そうすると、今まで作った表をまとめると
売上表【売上番号(主キー)、日付】
売上明細表【売上番号(主キー)、商品番号(主キー)、数量】
顧客表【顧客番号(主キー)、顧客名】
の3つに分解できました。
この表をよくみると各表で全ての非キー項目が主キー(候補キー)に直接関数従属している状態になっていますね。
これが第三正規化です。
長くなってわかりづらいかもしれません。汗
まとまえると
第一正規化・・・繰り返し項目を別の表へ
第二正規化・・・候補キーの一部に関数従属(部分関数従属)している非キー項目を別の表へ
第三正規化・・・全ての非キー項目が主キー(候補キー)に直接関数従属している状態にする、
もしくは、第三正規化は主キー以外の候補キーに関数従属している表を別の表へ、と考えてもいいと思います
2020.02.09 00:22
DBさん(No.5)
*誤字
最後から7行目
まとまえると→まとめると
最後から2行目
×第三正規化は主キー以外の候補キーに関数従属している表を別の表へ
○第三正規化は主キー以外の候補キーに関数従属している項目を別の表へ
最後から7行目
まとまえると→まとめると
最後から2行目
×第三正規化は主キー以外の候補キーに関数従属している表を別の表へ
○第三正規化は主キー以外の候補キーに関数従属している項目を別の表へ
2020.02.09 11:33
その他のスレッド
»[1885] 旧制度問題の採点などについて 投稿数:1»[1884] 応用情報 平成26年秋期 午後問4 設問3について 投稿数:3
»[1883] DSLとはなんでしょうか? 投稿数:7