テーブルの正規系についての質問です
近藤大輝さん
(No.1)
テーブル1の属性
A B C D E F
テーブル1に含まれる関数従属性
A->B C->D D->F C->F B->E
質問1 上記のテーブル1の主キーを教えてください。
質問2 また完全関数従属性にならない属性と推移関数従属性となる属性の組み合わせを教え
てください。
質問3 このテーブル1は第何正規系かを教えてください
A B C D E F
テーブル1に含まれる関数従属性
A->B C->D D->F C->F B->E
質問1 上記のテーブル1の主キーを教えてください。
質問2 また完全関数従属性にならない属性と推移関数従属性となる属性の組み合わせを教え
てください。
質問3 このテーブル1は第何正規系かを教えてください
2023.01.14 11:45
gawaさん
(No.2)
試験受けてから時間たってるので間違ってたらすいません。
①AとC 理由:AとCを決めれば、その他の属性が一意に決まるから
②部分関数従属 A=>B C=>D
推移的関数従属 A=>B=>E C=>D=>F
③繰り返し項目が無い前提として、第一正規系。②のごとく、部分関数従属と推移的関数従属が存在するから、第二正規系の条件を満たさない(故に第三正規系でもない)。」
このテーブルを第三正規系にすると以下のようになるかと。
A(主),C(主)
A(主),B
C(主),D
D(主),F
B(主),E
兼務ありの社員所属のテーブルに例えると、わかりやすいかも。
A:社員名
B:グレード等級
C:所属チーム
D:所属部署
E:給与
F:所属本部
こういうテーブルを↓
A:田中太郎、B:グレード等級2、C:採用チーム、D:人事部、E:50万円、F:経営管理本部
A:田中太郎、B:グレード等級2、C:データベースチーム、D:DX推進部、E:50万円、F:デジタル本部
こう正規化するってことです↓
テーブル「社員所属」
A:田中太郎、C:採用チーム
A:田中太郎、C:DXチーム
テーブル「社員グレード」
A:田中太郎、B:グレード等級2
テーブル「チームと部署の対応」
C:採用チーム、D:人事部
C:データベースチーム、D:DX推進部
テーブル「部署と本部の対応」
D:人事部、F:経営管理本部
D:DX推進部、F:デジタル本部
テーブル「グレード別給与」
B:グレード2、E:50万円
①AとC 理由:AとCを決めれば、その他の属性が一意に決まるから
②部分関数従属 A=>B C=>D
推移的関数従属 A=>B=>E C=>D=>F
③繰り返し項目が無い前提として、第一正規系。②のごとく、部分関数従属と推移的関数従属が存在するから、第二正規系の条件を満たさない(故に第三正規系でもない)。」
このテーブルを第三正規系にすると以下のようになるかと。
A(主),C(主)
A(主),B
C(主),D
D(主),F
B(主),E
兼務ありの社員所属のテーブルに例えると、わかりやすいかも。
A:社員名
B:グレード等級
C:所属チーム
D:所属部署
E:給与
F:所属本部
こういうテーブルを↓
A:田中太郎、B:グレード等級2、C:採用チーム、D:人事部、E:50万円、F:経営管理本部
A:田中太郎、B:グレード等級2、C:データベースチーム、D:DX推進部、E:50万円、F:デジタル本部
こう正規化するってことです↓
テーブル「社員所属」
A:田中太郎、C:採用チーム
A:田中太郎、C:DXチーム
テーブル「社員グレード」
A:田中太郎、B:グレード等級2
テーブル「チームと部署の対応」
C:採用チーム、D:人事部
C:データベースチーム、D:DX推進部
テーブル「部署と本部の対応」
D:人事部、F:経営管理本部
D:DX推進部、F:デジタル本部
テーブル「グレード別給与」
B:グレード2、E:50万円
2023.01.14 18:15
近藤大輝さん
(No.3)
この投稿は投稿者により削除されました。(2023.01.15 21:05)
2023.01.15 21:05
近藤大輝さん
(No.4)
ありがとうございます。
2023.01.15 13:18
Logres_fanさん
(No.5)
学校の課題でしょうかね。
まず、A B E
次に、C D F
まず、A B E
A->B B->E
これは問題ないでしょう。次に、C D F
C->D D->F
これは?C->F
表記法のルールを確認しないとわかりませんがC,D->F
このように記述したかったのでしょうかね。うーん。2023.01.16 00:20
gawaさん
(No.6)
>次に、C D F
>C->D D->F
>これは?C->F
>表記法のルールを確認しないとわかりませんが
>C,D->F
>このように記述したかったのでしょうかね。うーん。
表記法は問題ないですよ。C=>D=>F かつ C=>F のようにCからFが直接関数従属かつ推移的に関数従属するのは全然あり得ます。午前2の過去問でもこのパターンはありました。
上の例にも書きましたが、組織において、自分の所属するチーム(C)が決定すれば、上位の部署(D)も決まるし、さらに上の本部(F)も決まる、という場合にこうなりますね。こういう場合は、(C,D),(D,F)のテーブルに分割するのが定石です。
2023.01.19 09:44
Logres_fanさん
(No.7)
>No6
そうなのですね。まだまだ理解不足でした。
>C=>D=>F かつ C=>F のようにCからFが直接関数従属かつ推移的に関数従属する… こういう場合は、(C,D),(D,F)のテーブルに分割するのが定石です。
C=>D=>F のみの場合は、どのようなテーブルに分割されるのでしょうか?C=>F の有無が正規化に影響しないのであれば、C=>F が冗長いう事になるのかな。
2023.01.20 18:38
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。