Mit den möglichen Kandidatenschlüsseln, Vikkyhacks, haben Sie Recht. Überlappende Kandidatenschlüssel sind zusammengesetzte Kandidatenschlüssel (bestehen aus mehr als einem Attribut) mit mindestens einem gemeinsamen Attribut. Ihre überlappenden Kandidatenschlüssel sind also NM und NO (sie teilen sich N).
Zusätzliche Erklärung des oben Gesagten, ursprünglich in Kommentaren hinterlassen:
Alle überlappenden Kandidatenschlüssel sind Gruppen von (z. B. zwei oder mehr) Kandidatenschlüsseln. Das heißt, das erste Kriterium ist, dass Ihre Beziehung R
mehr als einen Kandidatenschlüssel haben muss (minimale Superschlüssel). Damit sich die Kandidatenschlüssel überlappen, muss jeder von ihnen (wieder zwei oder mehr) einige zusätzliche Bedingungen erfüllen. 1) Beide müssen zusammengesetzte Kandidatenschlüssel sein. Sie müssen aus mehr als einem Attribut bestehen, damit sich ein Schlüssel wie A
nie überlappt, sondern sich AB
möglicherweise mit einem anderen Schlüssel überschneidet. 2) Die zusammengesetzten Schlüssel müssen ein Attribut gemeinsam haben. AB
Überlappungen mit AC
und BD
aber nicht CD
oder EF
.
Zusammenfassend: zwei oder mehr Sätze von Attributen, wobei 1) jeder Satz ein Kandidatenschlüssel (minimaler Superschlüssel) für die Beziehung ist, 2) jeder Satz ein zusammengesetzter Schlüssel ist (aus mehr als einem Attribut besteht) und 3) einer oder mehrere von Die Attribute der zusammengesetzten Schlüssel überschneiden sich mit einem Attribut eines anderen Schlüssels in der Gruppe. So können Sie ausschließen MNOP
und NOPL
auf der Grundlage , dass sie nicht minimal superkeys. Sie können ausschließen P
und L
auf der Grundlage , dass sie nicht zusammengesetzte Schlüssel (sie bestehen aus einem Attribut). Sie haben noch zwei Schlüssel NO
und NM
, die das Attribut gemeinsam haben N
, damit Sie fertig sind.
Beispiel
Es kann auch hilfreich sein, ein Beispiel zu haben, mit dem Sie Ihren Kopf wirklich umwickeln können. Das einzige Mal, dass ich jemals gesehen habe, wo Sie überlappende Kandidatenschlüssel haben, ist, wenn Sie 1) zwei Attribute haben, die sich funktional bestimmen (z. B. eine Eins-zu-Eins-Beziehung zwischen A
und B
wo A
hat einen B
und B
hat einen A
) und 2) diese Attribute sind Teil zusammengesetzter Kandidatenschlüssel.
In einem System Customer
hat beispielsweise a eine CreditCard
und a CreditCard
gehört zu einer Customer
. In der Tabelle "Vermietungen" identifizieren Sie ein eindeutiges Rental
durch das EquipmentId
, Date
und CustomerId
. Der Einfachheit halber haben Sie auch CreditCard
auf diesem Tisch gespeichert .
Dies bedeutet, dass die folgenden FDs gelten:
{CustomerId, EquipmentId, Date} -> {CreditCard}
{CustomerId} -> {CreditCard}
Da der Verein jedoch eins zu eins ist, gelten auch die folgenden FDs:
{CreditCard} -> {CustomerId}
{CreditCard, EquipmentId, Date} -> {CustomerId}
Da CustomerId
und CreditCard
kann austauschbar verwendet werden, um Ihren Kunden eindeutig zu identifizieren.
Im obigen Szenario haben Sie überlappende Kandidatenschlüssel:
{CreditCard, EquipmentId, Date}
{CustomerId, EquipmentId, Date}
Sie überlappen sich, weil sie zusammengesetzte Schlüssel sind (sie bestehen aus mehr als einem Attribut) und weil mindestens eines ihrer Attribute gemeinsam genutzt wird (in diesem Fall teilen sie beide EquipmentId
und Date
.
Sie sagten, dass Sie sich BCNF
im Moment nicht darum kümmern , aber um dies vollständig nach Hause zu bringen, ist das obige Szenario der Grund, warum Sie gelegentlich einen Tisch sehen, der sich befindet, 3NF
aber nicht BCNF
. Die obige Tabelle ist in 3NF
, aber nicht BCNF
.
3NF
erlaubt FDs, wobei 1) die FD trivial ist 2) die linke Seite der FD ein Kandidatenschlüssel ist oder 3) die rechte Seite der FD ein Schlüsselattribut ist (ein Attribut, das zum Erstellen eines Schlüssels verwendet wird). Da CreditCard
und CustomerId
beide Schlüsselattribute sind, erfüllen alle FDs entweder 2 oder 3.
BCNF
ist sehr ähnlich, erlaubt aber nur die Bedingungen 1 und 2, die von erlaubt sind 3NF
. Da die dritte Bedingung , die durch nicht erlaubt ist BCNF
, und beide CID -> CC
und CC -> CID
3 Gebrauchszustand, ist diese Tabelle nicht BCNF
, aber es ist 3NF
.
Aus praktischen Gründen ist der Fall ziemlich selten und diese Informationen sind pedantisch. Das Werbegeschenk, dass Ihr Tisch ein Problem hat, ist die Tatsache, dass CreditCard/CustomerId
Paare über Ihren Tisch wiederholt werden. Möglicherweise erkennen Sie auch, dass sich die Tabelle 2NF
ohne diese seltene Bedingung nicht einmal befinden würde , wenn die rechte Seite eines FD ein Schlüsselattribut sein könnte, da CreditCard
eine teilweise Abhängigkeit vom Primärschlüssel besteht (dies hängt davon ab, CustomerId
aber nicht EquipmentId
oder Date
.
P
,L
,NO
undNM
ein Superschlüssel qualifiziert als Kandidat Schlüssel nur dann , wenn hat keine minimale Teilmenge. Ihr Beispiel zu nehmenMNOP
ist ein Superschlüssel, da die minimale TeilmengeP
darin alle anderen Attribute der Beziehung ableiten kannSo überprüfen Sie, ob eine Beziehung eine überlappende Kandidatenschlüsselabhängigkeit aufweist:
Überprüfen Sie, ob eine Abhängigkeit besteht, in der ein vollständiger Kandidatenschlüssel einen Teil des Kandidatenschlüssels bestimmt. Dann gilt die OCK-Abhängigkeit
quelle