fbpx
Wikipedia

Llave candidata

En el modelo relacional de bases de datos, una llave candidata (o clave candidata) de una relación es una mínima súper llave de esa relación; es decir, un conjunto de atributos tales que:

  1. La relación no tiene dos distintas tuplas (es decir, filas o registros en el lenguaje de base de datos común) con los mismos valores para estos atributos (lo que significa que el conjunto de atributos es una súper llave).
  2. No hay un subconjunto propio de estos atributos para los que se cumple la condición anterior (lo que significa que el conjunto es mínimo).

Los atributos que la componen se llaman atributos principales. A la inversa, un atributo que no ocurre en cualquier llave candidata se llama un atributo no principal.

Dado que una relación contiene tuplas no duplicadas, el conjunto de todos sus atributos es una súper llave si no se utilizan valores nulos. De ello se desprende que cada relación tendrá al menos una clave candidata.

Las llaves candidatas de una relación nos dicen todas las posibles formas en que podemos identificar sus tuplas. Como tales, son un concepto importante para el diseño de esquemas de bases de datos.

Ejemplo

La definición de llaves candidatas se puede ilustrar con el siguiente ejemplo abstracto. Considérese una variable de relación (relvar) R con atributos {A, B, C, D} que solo tiene los siguientes dos valores legales R1 y R2:

r1
A B C D
a1 b1 c1 d1
a1 b2 c2 d1
a2 b1 c2 d1
r2
A B C D
a1 b1 c1 d1
a1 b2 c2 d1
a1 b1 c2 d2

Aquí, r2 se diferencia de r1 solo en los valores de A y D de la última tupla.

Para r1, los siguientes conjuntos tienen la propiedad de unicidad (es decir, no hay dos tuplas distintas en la instancia con los mismos valores para los atributos del conjunto):

{A, B}, {A, C}, {B, C}, {A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}, {A, B, C, D} 

Para r2 la propiedad de unicidad es válida para los siguientes conjuntos:

{B, C}, {B, D}, {C, D}, {A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}, {A, B, C, D} 

Debido a que las súper llaves de un relvar son aquellos conjuntos de atributos que tienen la propiedad de unicidad para todos los valores legales de ese relvar, y porque suponemos que R1 y R2 son todos los valores legales que R puede tomar, podemos determinar el conjunto de súper llaves de R tomando la intersección de las dos listas:

{B, C}, {A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}, {A, B, C, D} 

Por último tenemos que seleccionar los conjuntos para los cuales no hay subconjunto apropiado en la lista, que son en este caso:

{B, C}, {A, B, D}, {A, C, D} 

Estas son, de hecho, las llaves candidatas del relvar R.

Tenemos que considerar todas las relaciones que podrían ser asignadas a un relvar para determinar si un cierto conjunto de atributos es una llave candidata. Por ejemplo, si hubiéramos considerado solo r1, habríamos llegado a la conclusión de que {A, B} es una llave candidata, lo cual es incorrecto. Sin embargo, podríamos llegar a la conclusión a partir de esa relación que un cierto conjunto no es una llave candidata, porque ese conjunto no tiene la propiedad de unicidad (por ejemplo, {A, D} para r1). Debe tenerse en cuenta que la existencia de un subconjunto propio de un conjunto que tiene la propiedad de unicidad no puede en general ser utilizada como prueba de que el súper conjunto no es una llave candidata. En particular, cabe destacar que en el caso de una relación vacía, cada subconjunto de la partida tiene la propiedad de unicidad, incluyendo el conjunto vacío.

Determinación de llaves candidatas

El conjunto de todas las llaves candidatas puede ser calculado, por ejemplo, a partir del conjunto de dependencias funcionales. Para ello, es necesario definir la clausura de atributos   para un conjunto de atributos  . El conjunto   contiene todos los atributos que están funcionalmente implicados por  .

Es bastante fácil encontrar una sola llave candidata. Empezamos con un conjunto   de atributos y tratamos de eliminar sucesivamente cada atributo. Si después de eliminar un atributo la clausura permanece igual, entonces este atributo no es necesario y se puede eliminar de forma permanente. Al resultado lo llamamos  . Si   es el conjunto de todos los atributos, entonces   es una llave candidata.

De hecho, podemos detectar cada llave candidata con este procedimiento, simplemente probando todas las posibles maneras de eliminar estos. Sin embargo, hay muchas más permutaciones de atributos ( ) que subconjuntos ( ). Es decir, muchos órdenes de atributos conducirán a la misma llave candidata. Hay una dificultad fundamental para generar algoritmos eficientes para la computación de llaves candidatas: Ciertos tipos de dependencias funcionales producen muchas llaves candidatas de forma exponencial. Considere las   dependencias funcionales   que producen   llaves candidatas:  .

Es decir, lo mejor que podemos esperar es un algoritmo que es eficiente con respecto al número de llaves candidatas.


El siguiente algoritmo se ejecuta en tiempo polinomial en el número de llaves candidatas y dependencias funcionales:[1]

 K [0]:= minimize (A); /* A es el conjunto de todos los atributos */ n:= 1; /* Número de llaves conocidas hasta el momento */ i:= 0; /* Llave actualmente procesada */ mientras i <n haga para cada α → β ∈ F haga S:= α ∪ (K [i] - β); found:= false; para j:= 0 hasta n-1 hacer si K [j] ⊆ S entonces found:= true; si not(found) entonces K [n]: = minimize(S); n: = n + 1; 

La idea detrás del algoritmo es que, dada una llave candidata   y una dependencia funcional  , La aplicación inversa de la dependencia funcional produce el conjunto  , que también es una llave. No obstante, puede ser cubierto por otras llaves candidatas ya conocidas (el algoritmo comprueba este caso utilizando la variable "found"). Si no es así, entonces minimizar la nueva llave produce una nueva llave candidata. La idea clave es que todas las llaves candidatas pueden crearse de esta manera.

Referencias

  1. L. Lucchesi, Cláudio; Osborn, Sylvia L. (octubre de 1978). «Candidate keys for relations». Journal of Computer and System Sciences 17 (2): 270-279. doi:10.1016/0022-0000(78)90009-0. 
  •   Datos: Q2113197

llave, candidata, modelo, relacional, bases, datos, llave, candidata, clave, candidata, relación, mínima, súper, llave, relación, decir, conjunto, atributos, tales, relación, tiene, distintas, tuplas, decir, filas, registros, lenguaje, base, datos, común, mism. En el modelo relacional de bases de datos una llave candidata o clave candidata de una relacion es una minima super llave de esa relacion es decir un conjunto de atributos tales que La relacion no tiene dos distintas tuplas es decir filas o registros en el lenguaje de base de datos comun con los mismos valores para estos atributos lo que significa que el conjunto de atributos es una super llave No hay un subconjunto propio de estos atributos para los que se cumple la condicion anterior lo que significa que el conjunto es minimo Los atributos que la componen se llaman atributos principales A la inversa un atributo que no ocurre en cualquier llave candidata se llama un atributo no principal Dado que una relacion contiene tuplas no duplicadas el conjunto de todos sus atributos es una super llave si no se utilizan valores nulos De ello se desprende que cada relacion tendra al menos una clave candidata Las llaves candidatas de una relacion nos dicen todas las posibles formas en que podemos identificar sus tuplas Como tales son un concepto importante para el diseno de esquemas de bases de datos Ejemplo EditarLa definicion de llaves candidatas se puede ilustrar con el siguiente ejemplo abstracto Considerese una variable de relacion relvar R con atributos A B C D que solo tiene los siguientes dos valores legales R1 y R2 r1 A B C Da1 b1 c1 d1a1 b2 c2 d1a2 b1 c2 d1r2 A B C Da1 b1 c1 d1a1 b2 c2 d1a1 b1 c2 d2Aqui r2 se diferencia de r1 solo en los valores de A y D de la ultima tupla Para r1 los siguientes conjuntos tienen la propiedad de unicidad es decir no hay dos tuplas distintas en la instancia con los mismos valores para los atributos del conjunto A B A C B C A B C A B D A C D B C D A B C D Para r2 la propiedad de unicidad es valida para los siguientes conjuntos B C B D C D A B C A B D A C D B C D A B C D Debido a que las super llaves de un relvar son aquellos conjuntos de atributos que tienen la propiedad de unicidad para todos los valores legales de ese relvar y porque suponemos que R1 y R2 son todos los valores legales que R puede tomar podemos determinar el conjunto de super llaves de R tomando la interseccion de las dos listas B C A B C A B D A C D B C D A B C D Por ultimo tenemos que seleccionar los conjuntos para los cuales no hay subconjunto apropiado en la lista que son en este caso B C A B D A C D Estas son de hecho las llaves candidatas del relvar R Tenemos que considerar todas las relaciones que podrian ser asignadas a un relvar para determinar si un cierto conjunto de atributos es una llave candidata Por ejemplo si hubieramos considerado solo r1 habriamos llegado a la conclusion de que A B es una llave candidata lo cual es incorrecto Sin embargo podriamos llegar a la conclusion a partir de esa relacion que un cierto conjunto no es una llave candidata porque ese conjunto no tiene la propiedad de unicidad por ejemplo A D para r1 Debe tenerse en cuenta que la existencia de un subconjunto propio de un conjunto que tiene la propiedad de unicidad no puede en general ser utilizada como prueba de que el super conjunto no es una llave candidata En particular cabe destacar que en el caso de una relacion vacia cada subconjunto de la partida tiene la propiedad de unicidad incluyendo el conjunto vacio Determinacion de llaves candidatas EditarEl conjunto de todas las llaves candidatas puede ser calculado por ejemplo a partir del conjunto de dependencias funcionales Para ello es necesario definir la clausura de atributos a displaystyle alpha para un conjunto de atributos a displaystyle alpha El conjunto a displaystyle alpha contiene todos los atributos que estan funcionalmente implicados por a displaystyle alpha Es bastante facil encontrar una sola llave candidata Empezamos con un conjunto a displaystyle alpha de atributos y tratamos de eliminar sucesivamente cada atributo Si despues de eliminar un atributo la clausura permanece igual entonces este atributo no es necesario y se puede eliminar de forma permanente Al resultado lo llamamos minimize a displaystyle text minimize alpha Si a displaystyle alpha es el conjunto de todos los atributos entonces minimize a displaystyle text minimize alpha es una llave candidata De hecho podemos detectar cada llave candidata con este procedimiento simplemente probando todas las posibles maneras de eliminar estos Sin embargo hay muchas mas permutaciones de atributos n displaystyle n que subconjuntos 2 n displaystyle 2 n Es decir muchos ordenes de atributos conduciran a la misma llave candidata Hay una dificultad fundamental para generar algoritmos eficientes para la computacion de llaves candidatas Ciertos tipos de dependencias funcionales producen muchas llaves candidatas de forma exponencial Considere las 2 n displaystyle 2 cdot n dependencias funcionales A i B i i 1 n B i A i i 1 n displaystyle A i rightarrow B i i in 1 dots n cup B i rightarrow A i i in 1 dots n que producen 2 n displaystyle 2 n llaves candidatas A 1 B 1 A n B n displaystyle A 1 B 1 times dots times A n B n Es decir lo mejor que podemos esperar es un algoritmo que es eficiente con respecto al numero de llaves candidatas El siguiente algoritmo se ejecuta en tiempo polinomial en el numero de llaves candidatas y dependencias funcionales 1 K 0 minimize A A es el conjunto de todos los atributos n 1 Numero de llaves conocidas hasta el momento i 0 Llave actualmente procesada mientras i lt n haga para cada a b F haga S a K i b found false para j 0 hasta n 1 hacer si K j S entonces found true si not found entonces K n minimize S n n 1 La idea detras del algoritmo es que dada una llave candidata K i displaystyle K i y una dependencia funcional a b displaystyle alpha rightarrow beta La aplicacion inversa de la dependencia funcional produce el conjunto a K i b displaystyle alpha cup K i setminus beta que tambien es una llave No obstante puede ser cubierto por otras llaves candidatas ya conocidas el algoritmo comprueba este caso utilizando la variable found Si no es asi entonces minimizar la nueva llave produce una nueva llave candidata La idea clave es que todas las llaves candidatas pueden crearse de esta manera Referencias Editar L Lucchesi Claudio Osborn Sylvia L octubre de 1978 Candidate keys for relations Journal of Computer and System Sciences 17 2 270 279 doi 10 1016 0022 0000 78 90009 0 Datos Q2113197Obtenido de https es wikipedia org w index php title Llave candidata amp oldid 136450843, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos