-1

昨日、データベースの試験を受けましたが、正規化に関する質問が奇妙でした。テーブル R(ABCDEFG) と機能依存関係 G->B、C->DG、CF->E、FA がありました。R の候補キーはどれですか? 私が見つけたのは 1 つだけです: CF。では、R1(DFG)、R1 の候補キーはどれですか? 私が見つけたのは1つだけです:DFG。R の正しい 3NF 正規化を述べてください。私は ((C,F), E), ((G, B)), ((F), A), ((C), D) と述べました

そして、機能依存の GDF->C が追加されました。R の正しい 3NF 正規化とは何ですか? 私は言った ((G, D, F, C)), ((G), B), ((F, ); A), ((C), D), ((C, F), E)

私はそれを正しく解決しましたか?

次に、さらに奇妙なことに、次のものがリストされている場合、何が何であるかを述べる必要があります。

  • 製品番号
  • 注文番号
  • 顧客ID
  • 顧客名
  • 商品名
  • 日にち

私は結論付けた

G= Product ID
C= Order number
F= Customer ID
D= Quantity
A= Customer name
B= Product name
E= Date

これは正しいです?FD GDF->C は平易な英語で何を意味しますか?

4

1 に答える 1

2

「昨日、データベースの試験を受けましたが、正規化に関する質問が奇妙でした。テーブル R(ABCDEFG) と関数の依存関係 G->B、C->DG、CF->E、FA がありました。R の候補キーはどれですか?私が見つけたのは 1 つだけです: CF。

それは問題ないようです。

では、R1(DFG)、R1 の候補キーはどれですか? 私が見つけたのは1つだけです:DFG。

まったく同じFDのセットで??? FDがまったくない??? とにかく、これも正しいようです。

R の正しい 3NF 正規化を述べてください。私は ((C,F), E), ((G, B)), ((F), A), ((C), D) と述べました

((G), B) の代わりに ((G, B)) の方が似ています。

((C), D) の代わりに ((C), DG) も同様です。

そして、機能依存の GDF->C が追加されました。R の正しい 3NF 正規化とは何ですか? 私は言った ((G, D, F, C)), ((G), B), ((F, ); A), ((C), D), ((C, F), E)

この FD (/constraint) を追加しても、3NF 形式は変更されません。3NF 設計で表現可能なすべての依存関係は、まだ「完全なキーから」外れています。この追加の依存関係が分解によって保持されなかったという事実は、正規形を低下させません。これは依存関係の保持の問題であり、通常の形式の問題ではありません。

私はそれを正しく解決しましたか?

最良の選択肢は、教師に尋ねることです。

「さらに奇妙なことに、次のものがリストされている場合、何が何であるかを述べる必要があります。」

愚かさ。質問自体は、仮定を行うことを強制します。日にち。それは何日ですか?ご注文のお客様の生年月日は?注文された製品が現在の名前に割り当てられた日付? それとも、注文が行われた日付ですか?おそらくそうかもしれませんが、問題は、これは仕様で明確に説明されるべきであり、データベース設計者は仕様について何も仮定しないように教えられるべきです. 仮定はすべての失敗の母です。

FD GDF->C は平易な英語で何を意味しますか?

平易な英語で、あなたの答えを仮定すると、{顧客 ID、製品 ID、および数量} の特定の組み合わせが注文で使用されると、2 番目の注文 (別の注文 ID) が表示されなくなることを意味します。 {顧客 ID、製品 ID、および数量} はまったく同じです。または、 iow : 各顧客は、特定の特定の製品の特定の数量を 1 回だけ注文できます。

于 2012-06-18T07:37:21.470 に答える