Dependencia funcional y cierre de atributos

Dependencia funcional

Una dependencia funcional A->B en una relación se cumple si dos tuplas que tienen el mismo valor del atributo A también tienen el mismo valor del atributo B. Por ejemplo, en la relación ESTUDIANTE que se muestra en la tabla 1, Dependencias funcionales 
 

STUD_NO->STUD_NAME, STUD_NO->STUD_PHONE hold

pero 
 

STUD_NAME->STUD_STATE do not hold

image2

¿Cómo encontrar dependencias funcionales para una relación?

Las dependencias funcionales en una relación dependen del dominio de la relación. Considere la relación ESTUDIANTE dada en la Tabla 1. 
 

  • Sabemos que STUD_NO es único para cada alumno. Entonces STUD_NO->STUD_NAME, STUD_NO->STUD_PHONE, STUD_NO->STUD_STATE, STUD_NO->STUD_COUNTRY y STUD_NO -> STUD_AGE todo será verdadero.
  • De manera similar, STUD_STATE->STUD_COUNTRY será verdadero, ya que si dos registros tienen el mismo STUD_STATE, también tendrán el mismo STUD_COUNTRY.
  • Para la relación ESTUDIANTE_CURSO, CURSO_NO->CURSO_NOMBRE será verdadero ya que dos registros con el mismo CURSO_NO tendrán el mismo CURSO_NOMBRE.

Conjunto de dependencia   funcional: El conjunto de dependencia funcional o conjunto FD de una relación es el conjunto de todos los FD presentes en la relación. Por ejemplo, el conjunto FD para la relación ESTUDIANTE que se muestra en la tabla 1 es: 
 

 { STUD_NO->STUD_NAME, STUD_NO->STUD_PHONE, STUD_NO->STUD_STATE, STUD_NO->STUD_COUNTRY, 
  STUD_NO -> STUD_AGE, STUD_STATE->STUD_COUNTRY }

Cierre  de atributos: el cierre de atributos de un conjunto de atributos se puede definir como un conjunto de atributos que se pueden determinar funcionalmente a partir de él. 

¿Cómo encontrar el cierre de atributo de un conjunto de atributos?  
Para encontrar el cierre de atributos de un conjunto de atributos: 
 

  • Agregue elementos del conjunto de atributos al conjunto de resultados.
  • Agregue recursivamente elementos al conjunto de resultados que se pueden determinar funcionalmente a partir de los elementos del conjunto de resultados.

Usando el conjunto FD de la tabla 1, el cierre de atributos se puede determinar como: 
 

(STUD_NO)+ = {STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY, STUD_AGE}
(STUD_STATE)+ = {STUD_STATE, STUD_COUNTRY}

¿Cómo encontrar claves candidatas y superclaves mediante el cierre de atributos?

  • Si el cierre de atributos de un conjunto de atributos contiene todos los atributos de la relación, el conjunto de atributos será la superclave de la relación.
  • Si ningún subconjunto de este conjunto de atributos puede determinar funcionalmente todos los atributos de la relación, el conjunto también será clave candidata. Por ejemplo, usando el conjunto FD de la tabla 1,

(STUD_NO, STUD_NAME)+ = {STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY, STUD_AGE} 

(STUD_NO)+ = {STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY, STUD_AGE} 

(STUD_NO, STUD_NAME) será superclave pero no clave candidata porque su subconjunto (STUD_NO)+ es igual a todos los atributos de la relación. Entonces, STUD_NO será una clave candidata. 

Pregunta GATE: Considere el esquema de relación R = {E, F, G, H, I, J, K, L, M, N} y el conjunto de dependencias funcionales {{E, F} -> {G}, {F } -> {I, J}, {E, H} -> {K, L}, K -> {M}, L -> {N} en R. ¿Cuál es la clave para R? (GATE-CS-2014) 
A. {E, F} 
B. {E, F, H} 
C. {E, F, H, K, L} 
D. {E} 

Respuesta: Al encontrar el cierre de atributo de todas las opciones dadas, obtenemos: 
{E,F}+ = {EFGIJ} 
{E,F,H}+ = {EFHGIJKLMN} 
{E,F,H,K,L}+ = {{ EFHGIJKLMN} 
{E}+ = {E} 
{EFH}+ y {EFHKL}+ da como resultado un conjunto de todos los atributos, pero EFH es mínimo. Así que será clave candidata. Entonces la opción correcta es (B). 
 

¿Cómo verificar si un FD se puede derivar de un conjunto de FD dado?

Para comprobar si un FD A->B se puede derivar de un conjunto FD F, 
 

  1. Encuentre (A)+ usando el conjunto FD F.
  2. Si B es un subconjunto de (A)+, entonces A->B es cierto, de lo contrario no es cierto.

Pregunta GATE: En un esquema con atributos A, B, C, D y E, se proporciona el siguiente conjunto de dependencias funcionales  
{A -> B, A -> C, CD -> E, B -> D, E -> A}  
¿Cuál de las siguientes dependencias funcionales NO está implícita en el conjunto anterior? (GATE IT 2005) 
A. CD -> AC 
B. BD -> CD 
C. BC -> CD 
D. AC -> BC 

Respuesta: Usando el conjunto FD dado en cuestión, 
(CD)+ = {CDEAB} lo que significa que CD -> AC también es válido. 
(BD)+ = {BD} lo que significa que BD -> CD no puede ser cierto. Entonces, este FD no está implícito en el conjunto de FD. Entonces (B) es la opción requerida. 
Otros se pueden comprobar de la misma manera. 
 

Atributos primos y no primos

Los atributos que forman parte de cualquier clave candidata de relación se denominan atributo principal, otros son atributos no principales. Por ejemplo, STUD_NO en la relación ESTUDIANTE es un atributo principal, otros son atributos no principales. 

Pregunta GATE: Considere un esquema de relación R = (A, B, C, D, E, H) en el que se cumplen las siguientes dependencias funcionales: {A–>B, BC–> D, E–>C, D–>A }. ¿Cuáles son las claves candidatas de R? [GATE 2005] 
(a) AE, BE 
(b) AE, BE, DE 
(c) AEH, BEH, BCH 
(d) AEH, BEH, DEH 

Respuesta: (AE)+ = {ABECD} que no se establece de todos los atributos. Entonces AE no es una clave candidata. Por lo tanto, las opciones A y B son incorrectas. 
(AEH)+ = {ABCDEH} 
(BEH)+ = {BEHCDA} 
(BCH)+ = {BCHDA} que no es un conjunto de todos los atributos. Entonces BCH no es una clave candidata. Por lo tanto, la opción C es incorrecta. 
Entonces la respuesta correcta es D. 

Este artículo es una contribución de Sonal Tuteja . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *