重複する候補キーとは正確には何ですか?


8

簡単に説明できる人がいoverlapping candidate keyますか?何でoverlapping名前が示すように?

以下の関係を検討してください

R(L,M,N,O,P) 
{
    M -> O
    NO -> P
    P -> L
    L -> MN
}

上記の機能の依存関係のどれが上記の関係で重複する候補キーをもたらしていますか?

ディスカッションを依存関係に制限しましょう。現時点ではBCNFには興味がありません。

回答:


9

可能性のある候補キーであるvikkyhacksを使用すれば、お金を稼ぐことができます。重複する候補キーは、少なくとも1つの共通の属性を持つ複合(複数の属性で構成される)候補キーです。したがって、重複する候補キーはNMとNOです(Nを共有します)。

上記の追加説明。最初はコメントに残されていました。

重複するすべての候補キーは、(たとえば2つ以上の)候補キーのグループです。つまり、最初の基準は、リレーションにR複数の候補キー(最小のスーパーキー)が必要であることです。候補キーのいずれかが重複するためには、それらのそれぞれ(2つ以上)がいくつかの追加条件を満たす必要があります。1)それらは両方とも複合候補キーでなければなりません。これらは複数の属性で構成されている必要があるため、などのキーAは重複することはありABませんが、別のキーと重複する場合があります。2)複合キーは属性を共有する必要があります。AB重複ACしてBDではなく、CDEF

要約すると、2つ以上の属性セットです。1)各セットはリレーションの候補キー(最小スーパーキー)、2)各セットは複合キー(複数の属性で構成)、3)1つ以上の属性複合キーの属性は、セット内の別のキーの属性と重複しています。したがって、それらを除外MNOPNOPLて、それらが最小のスーパーキーではないことに基づいてください。それらを除外してPLそれらが複合キーではない(それらは1つの属性で構成される)ことができます。次の2つのキーと左だNOし、NM属性を共有し、Nあなたが終了しているので、。

また、実際に頭を包むことができる例があると役立つ場合もあります。あなたは1を持っているときに、候補キーが重複しているだろう場所私が今まで見てきただけです)互いに機能(例えば間で1対1の関係決定する2つの属性ABどこA1を持っているBB1を持っているA)と、2)これらの属性は複合候補キーの一部です。

たとえば、一部のシステムでは、a Customerは1つを持ち、a は1つCreditCardCreditCard属しCustomerます。RentalsテーブルでRentalEquipmentIdDateとによってを一意に識別しますCustomerId。便宜上、CreditCardこのテーブルにも格納しています。

つまり、次のFDが保持されます。

{CustomerId, EquipmentId, Date} -> {CreditCard}
{CustomerId} -> {CreditCard}

ただし、関連付けは1対1であるため、次のFDも保持されます。

{CreditCard} -> {CustomerId}
{CreditCard, EquipmentId, Date} -> {CustomerId}

以来CustomerIdCreditCard一意にあなたの顧客を識別するために互換的に使用することができます。

上記のシナリオでは、重複する候補キーがあります。

{CreditCard, EquipmentId, Date}
{CustomerId, EquipmentId, Date}

これらは、複合キー(複数の属性で構成されている)であり、少なくとも1つの属性が共有されている(この場合、両方EquipmentIdとを共有している)ため、重複していますDate

BCNF現時点では気にしないとおっしゃっていましたが、この家を完全に持ち帰るために、上記のシナリオが、中にはあるが3NF、ないテーブルが時々表示される理由ですBCNF。上記の表はに3NFありますが、ありませんBCNF

3NF1)FDが自明である2)FDの左側が候補キーである、または3)FDの右側がキー属性(任意のキーの作成に使用される属性)であるFDを許可します。以来CreditCardCustomerId両方のキー属性、すべてのFDを満たす2または3のどちらかです。

BCNFは非常に似ていますが、で許可されて3NFいる条件1および2のみが許可されます。BCNFCID -> CCおよびCC -> CID使用条件3の両方で3番目の条件が許可されていないため、このテーブルは許可されていませんBCNFが、です3NF

実際の目的では、このケースはかなりまれであり、この情報は知識が豊富です。テーブルに問題があるということは、CreditCard/CustomerIdペアがテーブル全体で繰り返されるという事実です。また、は主キーへの部分的な依存関係である2NFため、FDの右側がキー属性である可能性があるこのまれな条件がなければ、テーブルが存在しないことにも気付く場合がありCreditCardます(またはに依存しますCustomerIdが、には依存しませんEquipmentIdDate


4

候補キーは、最小限のスーパーキーを構成する属性のセットです。2つの候補キーAとBは、共通の属性がある場合、重複していると言います。つまり、A A Bは空ではありません。あなたの場合、MNとNOはRの候補キーと重複しています。

最小値(既約性)の要件のため、1つの候補キーが同じ関係にある別のキーのサブセットになることはありません。したがって、リレーションの2つの異なる候補キーが重複する場合、両方が1つ以上の属性で構成されている必要があります。 )空でない必要があります。


1

最初の3つのFDを組み合わせて

MNOP -> L

したがって、MNOPは1つの候補キー、CK1です。

同様に、最後の3つのFDを組み合わせて

NOPL -> M

したがって、NOPLはもう1つの候補キー、CK2です。

ただし、CK1とCK2には共通の列NOPがあり、候補キーと重複しています。


1
NOPLとMNOPはスーパーキーであり、可能な候補キーはPLNO、およびNM候補キーとしてAスーパーキー格は、任意の最小限のサブセットを持っていない場合に限ります。あなたの例をとるMNOPことは、その中の最小限のサブセットPがリレーションの他のすべての属性を導き出すことができるので、スーパーキーです
vikkyhacks

-1

リレーションに候補キーの依存関係が重複しているかどうかを確認するには:

Complete CandidateキーがPart of Candidateキーを決定している依存関係があるかどうかを確認します。次に、OCK依存関係が保持されます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.