2016-09-12 1 views
1

私はこれが私が理解できなかった過去の宿題のためのものであり、ここで明確化を求めてきたと言いたいと思います。この特定の質問の正規化に問題があります。外部、プライマリキー、1nf、2nf、3nf、与えられたテーブルと関数の依存関係を決定する

所与

1.PetStore(storeBranchName, storeAddr, storeManager,(customerName, customerAddr, customerPhone,(petName, petBreed, petSex, price))) 

のFD

storeBranchName → storeAddr, storeManager 
customerName → customerAddr, customerPhone 
customerName, petName → petBreed, petSex 
customerName,storeBranchName → petName 
petBreed → price 

。この関係は1NFですか?そうでない場合、それはなぜですか?それを1NFに入れてください。

b。この関係は2NFですか?そうでない場合、それはなぜですか?それから2NFに入れてください。

c。この関係は3NFであるか?そうでない場合、それはなぜですか? 3NFに入れてください。

d。関係の主キー(下線)と外部キー(イタリック体)を識別します。

私の質問はどのようになっていますか? 私の試みは解決策です。

a。表は、各値がアトミック値

1NF

PetStore(storeBranchName, storeAddr, storeManager,customerName, customerAddr, customerPhone,petName, petBreed, petSex, price) 

ではないので、ここで**** 1NFでない私が有する問題****

Bを起動する場合です。それは

2NF

store(storeBranchName, storeAddr, storeManager) 
customer(customerName, customerAddr, customerPhone) 
pet(petName,petbreed,petsex) 

C 1NFではなかったので関係は2NFにすることはできませんか。?

3NF

store(storeBranchName, storeAddr, storeManager) 
customer(customerName, customerAddr, customerPhone) 
pet(petName, petBreed, petSex) 
petCust(customerName,storeBranchName, petName) 
petPrice(petBreed, price) 

D。私は実際にプライマリキーがここに存在するかどうかを決定するのに問題があり、外来キーのコミックを実際に理解していません。誰かが私に何かヒントや手がかりを与えることができるなら、私は本当に何かを訂正して間違っていない限り、まっすぐな答えを得ない方が好きです。どんな助けもありがとう。

答えて

1

割り当てが正しく構成されていません。質問a、b、cは「この関係」を参照し、元の関係を参照すると解釈される場合、bとcの答えは「1NFにないので」から始まります。 bとcが前の質問に対する答えを示していれば、学生の理解をより良くテストすることができます。さらに、各ステップに質問dを適用する必要があります。

また、FD customerName,storeBranchName → petNameに質問します。それは常識を狂わせます(顧客は店舗ごとに1匹のペットしか買えません)。そうであれば元のネストされた関係は(petName, petBreed, petSex, price)をネストする必要はありません。おそらくそれはそれを複雑にする既存の質問に追加されました。

あなたの答えは正しいですが、元の関係で特定されたセット、タプル、またはリレーション値の属性、または従来の「繰り返しグループ」の言及が必要です。上で述べたように、私は各ステップで特定されたキーも見たいと思っています。指定されたFDから、customerName,storeBranchNameが1NF関係の候補キーであると判断できます。これは、この属性セットのFDのクロージャを導出することによってこれを実証します。

質問bについては、質問aに対する回答が部分的な依存関係を示して2NFにない理由を説明してください。あなたの2NF関係は、1NFの回答の正規化には従いません。 customerNamestoreBranchNamecustomerName,storeBranchNameの3つのリレーションシップがあります。

質問cについては、推移的な依存関係を示すことによって質問bに対する答えが3NFにない理由を説明してください。あなたの3NF関係は2NFの答えに従わないが、正しい答えに近い。正しいペット関係はpet (customerName PK, petName PK, petBreed, petSex)です。

主キーは、事後に「決定」されていない正規化プロセスによって維持/導出される必要があります。主キーは1NFのために一度識別する必要があります。他のキーは正規化の後に続く必要があります。

外部キーの概念は、リレーショナルモデルと古いネットワークモデルでは異なることを意味します。関係モデルでは、外部キー制約は単なるサブセット整合性制約である。 petCust.customerName ⊆ customer.customerName。ネットワークモデルでは、petCustcustomerレコードの関係を表します。 2つのモデルを勉強して比較することをお勧めします。

これが役立つことを願って、コメントに質問してください。

関連する問題