2013-05-12 10 views
6

私はBCNFが何であるかを理解しようとしていますし、私はこのような関係を持っている:BCNFと2つのユニークなキー

学生(ID、SSN、電子メール、名、姓)

  • IDがNULLでないとオートインクリメント特性一次代理キーは、ある
  • SSNであります非ヌルプロパティのユニークキーおよび
  • 電子メールはヌルプロパティーを持つユニークなキーです

BCNFに違反することはありますか?その場合、どうすればより良いデザインでこの状況を克服できますか?

EDIT

私は、機能の依存関係を記述しようとしているが、私が間違っている場合は、私を修正してくださいしています。

他のものを決定する3つの属性があります。したがって、方程式の左側と右側にssnとemailの両方が存在するのは混乱します。この関係はBCNFではありませんが、何かが間違っ:)

id -> (ssn, email, name, surname) 
ssn -> (id, email, name, surname) 
email -> (id, ssn, name, surname) 

答えて

1

はい、あなたのテーブルはBCNFです。これは、候補キーが重複していない、つまり2つの異なるキーに表示される属性がないためです。

キーの一部を構成する他の属性(Xなど)がある場合(例: (SSN、X)と(電子メール、X) - あなたのテーブルはBCNFに失敗します。なぜなら、Xは特定のSSNと電子メールのペアで同じでなければならないからです。これらのキー定義は、与えられたSSNとEメールに対して異なるXの値を許可します。

BCNFについての詳しい説明は、this answerを参照してください。

+0

セドランの依存関係のセットが完了したら、はい。しかし、一般的なルールとして、重複するキーがないということは自動的に関係がBCNFにあることを意味しません。非キー依存関係または部分的なキー依存関係が発生した場合、BCNFを満たすことはできません。 – sqlvogel

+0

@sqlvogel - 重複しているキーがないと、BCNFにいかなくても失敗するとは思いません。私に例を教えてください。 –

+0

など。 AとBが非プライムである依存関係A→Bは、候補キーが何であれBCNF(および3NF)の違反になります。 – sqlvogel

2

でなければならない適切にあなたの質問に答えるための方法は、機能の依存関係が適用することになっているものを識別することがあるようです。依存関係が何であるかを書き留めてください。非自明な依存関係のすべての左側がスーパーキーである場合、関係はBCNFを満たす。

+0

ありがとう、私の質問を編集しました – sedran

-4

emailaddressまたはSSNの制約が一意であるか、NULLでないかが強すぎます。あなたはそれらを強制することができますが、あなたはそれらを課すべきではありません。 (考えてみると:留学生) 一般的には、SSNのように一意に近い場合であっても、あなたの管轄下にないキードメインに制約を課すことは悪い考えです。

例として、タイプミスです。何人かの人が学生として入社したいと思うが、おそらくタイプミスによってSSNが使用されているようだ。新しい学生を拒否するか、古い学生を削除する必要がありますか? (または、SSNフィールドにNON-uniqueまたはNULLableを許可する必要がありますか?)

更新/最終ノート:このトピックは「datatbase-design」および「data-normalization」というタグが付けられています。私はデザインの選択肢に反応しました(議論の余地があります)。他の人があなたに正規化されたそれでも間違ったモデルを与える不正なデータモデルを正規化

(UNIQUE候補キーとNOT NULL前提与え、些細です)BCNFの側面に反応することを試みてきました。

+2

いくつかの特定のキーを選ぶことの知恵は、キーが既に与えられているので、正規化の質問とは何の関係もありません。確かに生徒に一意のメールアドレスと一意のTax IDがあることを要求することは悪い考えではありません。実際の世界システムの多くは、簡単に記憶され、検証され、比較的安定しているため、固有の電子メールアドレスを識別子として必要とします。重複したSSNが存在する場合は、それを許可しないようにして、誰かが重複したキーが間違っているか無効であるかを確認するように要求しないようにしてください。 – sqlvogel

+0

OPはおもちゃの例であり、IMHO * bad * toyの例です。なぜなら、これは "外国"ドメインについての暗黙の前提を作るからです。実際のおもちゃの例では、先生は本物のおもちゃの問題(スドク、スクラブル、クロスワードパズルなど)を使用する必要があります – wildplasser

+3

Hmmm、アマゾンやマイクロソフトに、自分のシステムに固有のメールアドレスが必要であるという事実を伝えて、 !私はあなたが正規化理論に完全に現実的な例を設定している問題についての仮定を作っていると思います。 – sqlvogel

関連する問題