Vous avez raison sur l'argent avec les clés de candidats possibles, vikkyhacks. Les clés candidates qui se chevauchent sont des clés candidates composites (composées de plusieurs attributs) avec au moins un attribut en commun. Vos clés candidates qui se chevauchent sont donc NM et NO (elles partagent N).
Explication supplémentaire de ce qui précède, initialement laissée dans les commentaires:
Toutes les clés candidates qui se chevauchent sont des groupes (par exemple deux ou plusieurs) clés candidates. Cela signifie que le premier critère est que votre relation R
doit avoir plus d'une clé candidate (super clés minimales). Pour qu'une des clés candidates se chevauche, chacune d'elles (encore deux ou plus) doit remplir quelques conditions supplémentaires. 1) Ils doivent tous deux être des clés candidates composites. Ils doivent être constitués de plusieurs attributs, de sorte qu'une clé comme A
ne se chevauchera jamais, mais AB
pourrait chevaucher une autre clé. 2) Les clés composites doivent partager un attribut. AB
chevauche avec AC
et BD
mais pas CD
ou EF
.
Pour résumer: deux ou plusieurs ensembles d'attributs où 1) chaque ensemble est une clé candidate (super-clé minimale) pour la relation, 2) chaque ensemble est une clé composite (se compose de plus d'un attribut) et 3) un ou plusieurs de les attributs des clés composites chevauchent un attribut d'une autre clé dans l'ensemble. Vous pouvez donc exclure MNOP
et NOPL
sur la base qu'ils ne sont pas des super-clés minimales. Vous pouvez exclure P
et L
sur la base qu'il ne s'agit pas de clés composites (elles se composent d'un attribut). Vous vous retrouvez avec deux clés NO
et NM
qui partagent l'attribut N
, vous avez donc terminé.
Exemple
Il peut également être utile d'avoir un exemple que vous pouvez vraiment comprendre. La seule fois où j'ai jamais vu où vous aurez des clés candidates qui se chevauchent, c'est lorsque vous avez 1) deux attributs qui se déterminent fonctionnellement (par exemple, une relation un à un entre A
et B
où en A
a une B
et en B
a une A
) et 2) ces les attributs font partie des clés candidates composites.
Par exemple, dans certains systèmes, a en Customer
a un CreditCard
et a CreditCard
appartient à un Customer
. Dans le tableau Locations, vous identifiez de manière unique un Rental
par le EquipmentId
, Date
et CustomerId
. Pour plus de commodité, vous avez également stocké CreditCard
sur cette table.
Cela signifie que les FD suivants détiennent:
{CustomerId, EquipmentId, Date} -> {CreditCard}
{CustomerId} -> {CreditCard}
Mais comme l'association est un à un, les FD suivants détiennent également:
{CreditCard} -> {CustomerId}
{CreditCard, EquipmentId, Date} -> {CustomerId}
Depuis CustomerId
et CreditCard
peut être utilisé de manière interchangeable pour identifier de manière unique votre client.
Dans le scénario ci-dessus, vous avez des clés candidates qui se chevauchent:
{CreditCard, EquipmentId, Date}
{CustomerId, EquipmentId, Date}
Ils se chevauchent car ils sont des clés composites (ils se composent de plusieurs attributs) et parce qu'au moins un de leurs attributs est partagé (dans ce cas, ils partagent les deux EquipmentId
et Date
.
Vous avez dit que vous ne vous souciez pas pour BCNF
le moment, mais pour ramener complètement cette maison à la maison, le scénario ci-dessus est la raison pour laquelle vous verrez parfois un tableau qui est dedans 3NF
mais pas BCNF
. Le tableau ci-dessus est dans 3NF
, mais pas BCNF
.
3NF
autorise les FD où 1) le FD est trivial 2) le côté gauche du FD est une clé candidate ou 3) le côté droit du FD est un attribut de clé (un attribut utilisé pour créer n'importe quelle clé). Étant donné que CreditCard
et CustomerId
sont tous deux des attributs clés, tous les FD respectent 2 ou 3.
BCNF
est très similaire, mais il n'autorise que les conditions 1 et 2 autorisées par 3NF
. Puisque la 3ème condition n'est pas autorisée par BCNF
, et les deux, CID -> CC
et CC -> CID
utilise la condition 3, cette table ne l'est pas BCNF
, mais elle l'est 3NF
.
Pour des raisons pratiques, le cas est assez rare et cette information est pédante. Le cadeau que votre table a un problème sera le fait que les CreditCard/CustomerId
paires sont répétées à travers votre table. Vous pouvez également reconnaître que la table ne serait même pas dans 2NF
cette condition rare où le côté droit d'un FD peut être un attribut de clé car il CreditCard
s'agit d'une dépendance partielle de la clé primaire (cela dépend de CustomerId
mais pas EquipmentId
ou Date
.
P
,L
,NO
, etNM
A est admissible super clé comme une clé candidate que si ne dispose pas d' un sous - ensemble minimal. Prendre votre exempleMNOP
est super clé car le sous-ensemble minimalP
qu'ilPour vérifier si une relation a une dépendance de clé candidate qui se chevauche:
Vérifiez s'il existe une dépendance où une clé de candidat complet détermine une partie de la clé de candidat. Ensuite, la dépendance OCK tient
la source