¿Qué es exactamente la clave de candidato superpuesta?

8

¿Puede alguien explicarme en términos simples qué es overlapping candidate key? ¿Qué es overlappingcomo su nombre indica?

Considere la siguiente relación

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

¿Cuál de las dependencias funcionales anteriores genera claves candidatas superpuestas en la relación anterior?

Vamos a restringir la discusión a dependencias, no estoy interesado en BCNF en este momento

vikkyhacks
fuente

Respuestas:

9

Tienes razón en el dinero con las posibles claves candidatas, vikkyhacks. Las claves candidatas superpuestas son claves candidatas compuestas (consisten en más de un atributo) con al menos un atributo en común. Por lo tanto, sus claves candidatas superpuestas son NM y NO (comparten N).

Explicación adicional de lo anterior, originalmente dejado en comentarios:

Todas las claves candidatas superpuestas son grupos de (por ejemplo, dos o más) claves candidatas. Eso significa que el primer criterio es que su relación Rdebe tener más de una clave candidata (superclaves mínimas). Para que cualquiera de las claves candidatas se superponga, cada una de ellas (nuevamente dos o más) debe cumplir algunas condiciones adicionales. 1) Ambos deben ser claves candidatas compuestas. Deben constar de más de un atributo, por lo que una clave como Anunca se superpondrá, pero ABpodría superponerse con otra clave. 2) Las claves compuestas deben compartir un atributo. ABse superpone con ACy BDpero no CDo EF.

Para resumir: dos o más conjuntos de atributos donde 1) cada conjunto es una clave candidata (superclave mínima) para la relación, 2) cada conjunto es una clave compuesta (consta de más de un atributo) y 3) uno o más de los atributos de las claves compuestas se superponen con un atributo de otra clave en el conjunto. Por lo tanto, puede descartar MNOPy NOPLsobre la base de que no son superclaves mínimas. Puede descartar Py Lsobre la base de que no son claves compuestas (consisten en un atributo). Te quedan dos teclas NOy NM, que comparten el atributo N, por lo que has terminado.

Ejemplo

También puede ser útil tener un ejemplo en el que realmente puedas entender. La única vez que he visto dónde se superpondrán claves candidatas es cuando tiene 1) dos atributos que se determinan funcionalmente entre sí (por ejemplo, una relación uno a uno entre Ay Bdonde Atiene uno By Btiene uno A) y 2) estos los atributos son parte de las claves candidatas compuestas.

Por ejemplo, en algún sistema, a Customertiene uno CreditCardy a CreditCardpertenece a uno Customer. En la tabla Alquileres, identifica de forma exclusiva a Rentalpor EquipmentId, Datey CustomerId. Para mayor comodidad, también ha almacenado CreditCarden esta tabla.

Esto significa que se mantienen los siguientes FD:

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

Pero como la asociación es uno a uno, también se mantienen los siguientes DF:

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

Dado CustomerIdy CreditCardpuede ser utilizado indistintamente para identificar de forma única a su cliente.

En el escenario anterior, tiene claves candidatas superpuestas:

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

Se superponen porque son claves compuestas (consisten en más de un atributo) y porque al menos uno de sus atributos es compartido (en este caso, comparten ambos EquipmentIdy Date.

Dijiste que no te importa BCNFen este momento, pero para llevar esto completamente a casa, el escenario anterior es la razón por la cual ocasionalmente verás una mesa que está dentro 3NFpero no BCNF. La tabla de arriba está adentro 3NF, pero no BCNF.

3NFpermite FDs donde 1) el FD es trivial 2) el lado izquierdo del FD es una clave candidata o 3) el lado derecho del FD es un atributo clave (un atributo utilizado para hacer cualquier clave). Puesto que CreditCardy CustomerIdson los dos atributos clave, todos FDs alcanzan 2 o 3.

BCNFes muy similar, pero solo permite las condiciones 1 y 2 permitidas por 3NF. Como la tercera condición no está permitida por BCNF, y ambas CID -> CCy CC -> CIDusan la condición 3, esta tabla no lo es BCNF, pero lo es 3NF.

Para fines prácticos, el caso es bastante raro y esta información es pedante. El obsequio de que su mesa tiene un problema será el hecho de que los CreditCard/CustomerIdpares se repiten en toda su mesa. También puede reconocer que la tabla ni siquiera estaría 2NFsin esta rara condición en la que el lado derecho de un FD puede ser un atributo clave porque CreditCardes una dependencia parcial de la clave primaria (depende de CustomerIdpero no EquipmentIdo Date.

Brett Cassette
fuente
4

Una clave candidata es un conjunto de atributos que constituyen una superclave mínima. Se dice que dos claves candidatas, A y B, se superponen si tienen algunos atributos en común, es decir: A ∩ B no está vacío. En su caso, MN y NO se superpondrían claves candidatas en R.

Debido al requisito de minimidad (irreductibilidad), una clave candidata nunca puede ser un subconjunto de otra en la misma relación. De ello se deduce que para dos claves candidatas distintas de una relación de superposición, ambas deben consistir en más de un atributo, es decir: para cualquier par de claves candidatas superpuestas, A - (A ∩ B) debe estar no vacío y B - (A ∩ B ) no debe estar vacío.

nvogel
fuente
1

Los primeros tres FD se combinan para dar

MNOP -> L

entonces MNOP es una posible clave candidata, CK1.

Del mismo modo, los últimos tres FD se combinan para dar

NOPL -> M

entonces NOPL es otra posible clave candidata, CK2.

Sin embargo, CK1 y CK2 tienen columnas NOP en común, lo que hace que se superpongan las claves candidatas.

Pieter Geerkens
fuente
1
NOPL y MNOP son claves súper, las claves candidatas posibles son P, L, NO, y NMA califica súper como una tecla candidato sólo si no tiene un subconjunto mínimo. Tomar su ejemplo MNOPes súper clave porque el subconjunto mínimo Pen él puede derivar todos los demás atributos de la relación
vikkyhacks
-1

Para verificar si una relación tiene una dependencia de clave Candidate superpuesta:

Compruebe si existe alguna dependencia en la que una clave de candidato completo determina una parte de la clave de candidato. Entonces la dependencia OCK se mantiene

Uzumakhi
fuente