En la teoría de bases de datos relacionales , una dependencia funcional ( DF ) es una restricción entre dos conjuntos de atributos, donde los valores de un conjunto (el conjunto determinante ) determinan los valores del otro conjunto (el conjunto dependiente ). Una dependencia funcional entre un conjunto determinante X y un conjunto dependiente Y se puede describir de la siguiente manera:
Dada una relación R y conjuntos de atributos X , YR , entonces se dice que X determina funcionalmente a Y (escrito X → Y ) si cada valor de X está asociado con exactamente un valor de Y. Entonces se dice que R satisface la dependencia funcional X → Y. De manera equivalente, la proyecciónes una función , es decir, Y es una función de X. [ 1 ] [ 2 ]
En otras palabras:
- Cuando los atributos X tienen valores conocidos (en este caso, x ), los valores de sus atributos Y correspondientes se pueden determinar buscándolos en cualquier tupla de R que contenga x .
- Dos tuplas que comparten los mismos valores de X necesariamente tendrán los mismos valores de Y.
Una dependencia FD: X → Y significa que los valores de Y están determinados por los valores de X. Una dependencia funcional FD: X → Y se denomina trivial si Y es un subconjunto de X.
La determinación de dependencias funcionales es una parte importante del diseño de bases de datos en el modelo relacional , y en la normalización y desnormalización de bases de datos . Una aplicación simple de las dependencias funcionales es el teorema de Heath ; este establece que una relación R sobre un conjunto de atributos U y que satisface una dependencia funcional X → Y puede dividirse de forma segura en dos relaciones que tienen la propiedad de descomposición de unión sin pérdida , a saber, endonde Z = U − XY son los demás atributos. ( En la teoría de bases de datos, las uniones de conjuntos de atributos se suelen denotar mediante su yuxtaposición). Un concepto importante en este contexto es la clave candidata , definida como un conjunto mínimo de atributos que determinan funcionalmente todos los atributos de una relación. Las dependencias funcionales, junto con los dominios de los atributos , se seleccionan para generar restricciones que excluyan del sistema la mayor cantidad posible de datos inapropiados para el dominio del usuario .
Una noción de implicación lógica se define para las dependencias funcionales de la siguiente manera: un conjunto de dependencias funcionaleslógicamente implica otro conjunto de dependencias, si existe alguna relación R que satisfaga todas las dependencias de también satisface todas las dependencias de; esto suele estar escrito. La noción de implicación lógica para las dependencias funcionales admite una axiomatización finita sólida y completa , conocida como los axiomas de Armstrong .
Ejemplos
coches
Supongamos que se diseña un sistema para rastrear vehículos y la cilindrada de sus motores. Cada vehículo tiene un número de identificación vehicular (VIN) único. Se escribiría VIN → Capacidad del motor porque sería inapropiado que el motor de un vehículo tuviera más de una cilindrada. (Suponiendo, en este caso, que los vehículos solo tienen un motor). Por otro lado, Capacidad del motor → VIN es incorrecto porque podría haber muchos vehículos con la misma cilindrada.
Esta dependencia funcional podría sugerir que el atributo EngineCapacity se relacione con la clave candidata VIN. Sin embargo, esto no siempre es apropiado. Por ejemplo, si dicha dependencia funcional surge como resultado de las dependencias transitivas VIN → VehicleModel y VehicleModel → EngineCapacity, entonces no se obtendría una relación normalizada.
Conferencias
Este ejemplo ilustra el concepto de dependencia funcional. La situación modelada es la de estudiantes universitarios que asisten a una o más clases, en cada una de las cuales se les asigna un ayudante de cátedra. Supongamos además que cada estudiante está en un semestre determinado y se identifica mediante un número entero único.
Observamos que siempre que dos filas de esta tabla tengan el mismo StudentID, también tendrán necesariamente los mismos valores de Semestre. Este hecho básico se puede expresar mediante una dependencia funcional:
- Número de identificación del estudiante → Semestre.
Si se añadiera una fila donde el estudiante tuviera un semestre diferente, la dependencia funcional (DF) dejaría de existir. Esto significa que la DF se deduce de los datos, ya que es posible que existan valores que la invaliden.
Se pueden identificar otras dependencias funcionales no triviales, por ejemplo:
- {StudentID, Lecture} → TA
- {ID de estudiante, conferencia} → {TA, semestre}
Esto último expresa el hecho de que el conjunto {StudentID, Lecture} es una superclave de la relación.
Departamento de empleados
Un ejemplo clásico de dependencia funcional es el modelo de departamento de empleados.
Este caso representa un ejemplo donde múltiples dependencias funcionales están integradas en una única representación de datos. Cabe destacar que, dado que un empleado solo puede pertenecer a un departamento, su identificador único determina dicho departamento.
- ID de empleado → Nombre del empleado
- ID de empleado → ID de departamento
Además de esta relación, la tabla también tiene una dependencia funcional a través de un atributo no clave.
- ID del departamento → Nombre del departamento
Este ejemplo demuestra que, aunque exista una dependencia funcional ID de empleado → ID de departamento, el ID de empleado no sería una clave lógica para determinar el nombre del departamento. El proceso de normalización de los datos reconocería todas las dependencias funcionales y permitiría al diseñador construir tablas y relaciones más lógicas basadas en los datos.
Propiedades y axiomatización de las dependencias funcionales
Dado que X , Y y Z son conjuntos de atributos en una relación R , se pueden derivar varias propiedades de dependencias funcionales. Entre las más importantes se encuentran las siguientes, generalmente llamadas axiomas de Armstrong : [ 3 ]
- Reflexividad : Si Y es un subconjunto de X , entonces X → Y.
- Aumento : Si X → Y , entonces XZ → YZ
- Transitividad : Si X → Y e Y → Z , entonces X → Z.
La "reflexividad" puede debilitarse hasta quedar reducida a solo, es decir, es un axioma real , donde los otros dos son reglas de inferencia propias , dando lugar más precisamente a las siguientes reglas de consecuencia sintáctica: [ 4 ]
.
Estas tres reglas constituyen una axiomatización sólida y completa de las dependencias funcionales. Esta axiomatización se describe a veces como finita porque el número de reglas de inferencia es finito, [ 5 ] con la salvedad de que el axioma y las reglas de inferencia son todos esquemas , lo que significa que X , Y y Z abarcan todos los términos básicos (conjuntos de atributos). [ 4 ]
Aplicando la ampliación y la transitividad, se pueden derivar dos reglas adicionales:
- Pseudotransitividad : Si X → Y y YW → Z , entonces XW → Z [ 3 ]
- Composición : Si X → Y y Z → W , entonces XZ → YW [ 6 ]
También se pueden derivar las reglas de unión y descomposición de los axiomas de Armstrong: [ 3 ] [ 7 ]
- X → Y y X → Z si y solo si X → YZ
Cierre
Cierre de la dependencia funcional
El cierre de un conjunto de valores es el conjunto de atributos que pueden determinarse mediante sus dependencias funcionales para una relación dada. Para ello, se utilizan los axiomas de Armstrong : reflexividad, aumento y transitividad.
Dadoyun conjunto de FD que contiene: El cierre deen(denotado+ ) es el conjunto de todos los FD que están lógicamente implicados por. [ 8 ]
Cierre de un conjunto de atributos
Cierre de un conjunto de atributos X con respecto aes el conjunto X + de todos los atributos que están determinados funcionalmente por X usando+ .
Ejemplo
Imaginemos la siguiente lista de FD. Vamos a calcular un cierre para A (escrito como A + ) a partir de esta relación.
- A → B
- B → C
- AB → D
El cierre sería el siguiente:
- A → A (por la reflexividad de Armstrong)
- A → AB (por 1. y (a))
- A → ABD (por (b), 3 y la transitividad de Armstrong)
- A → ABCD (por (c) y 2)
Por lo tanto, A + = ABCD. Dado que A + incluye todos los atributos de la relación, es una superclave .
Cubiertas y equivalencia
Cubiertas
Definición :cubiertassi cada FD ense puede inferir de.cubiertassi+ ⊆+ Cada conjunto de dependencias funcionales tiene una cobertura canónica .
Equivalencia de dos conjuntos de FD
Dos conjuntos de FDyesquemason equivalentes, escritos≡, si+ =+ . Si≡, entonceses una portada paray viceversa. En otras palabras, los conjuntos equivalentes de dependencias funcionales se denominan cubiertas entre sí.
Cubiertas no redundantes
Un conjuntode FD no es redundante si no hay un subconjunto apropiado decon≡. Si tal es unexiste,es redundante.es una cobertura no redundante parasies una portada parayes no redundante. Una caracterización alternativa de la no redundancia es quees no redundante si no hay FD X → Y ende tal manera que- { X → Y }X → Y . Llamar a una FD X → Y enredundante ensi- { X → Y }X → Y .
Aplicaciones a la normalización
Teorema de Heath
Una propiedad importante (que produce una aplicación inmediata) de las dependencias funcionales es que si R es una relación con columnas nombradas a partir de algún conjunto de atributos U y R satisface alguna dependencia funcional X → Y, entoncesdonde Z = U − XY . Intuitivamente, si una dependencia funcional X → Y se cumple en R , entonces la relación se puede dividir de forma segura en dos relaciones junto a la columna X (que es una clave para) asegurando que cuando las dos partes se vuelven a unir no se pierde ningún dato, es decir, una dependencia funcional proporciona una forma sencilla de construir una descomposición de unión sin pérdida de R en dos relaciones más pequeñas. Este hecho a veces se denomina teorema de Heath ; es uno de los primeros resultados en la teoría de bases de datos. [ 9 ]
El teorema de Heath dice efectivamente que podemos extraer los valores de Y de la gran relación R y almacenarlos en uno solo,, que no tiene repeticiones de valores en la fila para X y es efectivamente una tabla de búsqueda para Y indexada por X y, en consecuencia, tiene solo un lugar para actualizar la Y correspondiente a cada X, a diferencia de la relación "grande" R donde potencialmente hay muchas copias de cada X , cada una con su copia de Y que deben mantenerse sincronizadas en las actualizaciones. (Esta eliminación de redundancia es una ventaja en contextos OLTP , donde se esperan muchos cambios, pero no tanto en contextos OLAP , que implican principalmente consultas). La descomposición de Heath deja solo a X para actuar como clave externa en el resto de la tabla grande..
Sin embargo, las dependencias funcionales no deben confundirse con las dependencias de inclusión , que son el formalismo para las claves foráneas; aunque se utilizan para la normalización, las dependencias funcionales expresan restricciones sobre una relación (esquema), mientras que las dependencias de inclusión expresan restricciones entre esquemas de relación en un esquema de base de datos . Además, las dos nociones ni siquiera se cruzan en la clasificación de dependencias : las dependencias funcionales son dependencias que generan igualdad, mientras que las dependencias de inclusión son dependencias que generan tuplas . Imponer restricciones referenciales después de la descomposición del esquema de relación (normalización) requiere un nuevo formalismo, es decir, dependencias de inclusión. En la descomposición resultante del teorema de Heath, no hay nada que impida la inserción de tuplas entener algún valor de X que no se encuentra en.
Formas normales
Las formas normales son niveles de normalización de bases de datos que determinan la "calidad" de una tabla. Generalmente, la tercera forma normal se considera un buen estándar para una base de datos relacional.
La normalización tiene como objetivo eliminar las anomalías de actualización, inserción y eliminación de la base de datos. Asimismo, garantiza que cuando se introduce un nuevo valor en la relación, su impacto en la base de datos sea mínimo y, por consiguiente, también en las aplicaciones que la utilizan.
Conjunto dependiente de función irreducible
Un conjunto S de dependencias funcionales es irreducible si el conjunto tiene las siguientes tres propiedades:
- Cada conjunto derecho de una dependencia funcional de S contiene solo un atributo.
- Cada conjunto izquierdo de una dependencia funcional de S es irreducible. Esto significa que reducir cualquier atributo del conjunto izquierdo modificará el contenido de S (S perderá información).
- Reducir cualquier dependencia funcional cambiará el contenido de S.
Los conjuntos de dependencias funcionales con estas propiedades también se denominan canónicos o mínimos . Encontrar un conjunto S de dependencias funcionales que sea equivalente a un conjunto de entrada S' proporcionado como entrada se denomina encontrar una cobertura mínima de S': este problema se puede resolver en tiempo polinomial. [ 10 ]
Véase también
Referencias
- ↑ Terry Halpin (2008). Modelado de información y bases de datos relacionales (2.ª ed.). Morgan Kaufmann. pág. 140. ISBN 978-0-12-373568-3.
- ↑ Chris Date (2012). Diseño de bases de datos y teoría relacional: formas normales y demás . O'Reilly Media, Inc. pág. 21. ISBN 978-1-4493-2801-6.
- 1 2 3 Abraham Silberschatz ; Henry Korth ; S. Sudarshan (2010). Conceptos de sistemas de bases de datos (6.ª ed.). McGraw-Hill. pág. 339. ISBN 978-0-07-352332-3.
- 1 2 M. Y. Vardi. Fundamentos de la teoría de la dependencia . En E. Borger, editor, Tendencias en la informática teórica, páginas 171–224. Computer Science Press, Rockville, MD, 1987. ISBN 0881750840
- ↑ Abiteboul, Serge ; Hull, Richard B.; Vianu , Victor (1995), Foundations of Databases , Addison-Wesley, pp. 164–168 , ISBN 0-201-53771-0
- ↑ SK Singh (2009) [2006]. Sistemas de bases de datos: conceptos, diseño y aplicaciones . Pearson Education India. pág. 323. ISBN 978-81-7758-567-4.
- ↑ Hector Garcia-Molina; Jeffrey D. Ullman; Jennifer Widom (2009). Sistemas de bases de datos: el libro completo (2.ª ed.). Pearson Prentice Hall. pág. 73. ISBN 978-0-13-187325-4.A esto se le llama a veces regla de división/combinación.
- ↑ Saiedian, H. (1996-02-01). "Un algoritmo eficiente para calcular las claves candidatas de un esquema de base de datos relacional" . The Computer Journal . 39 (2): 124– 132. doi : 10.1093/comjnl/39.2.124 . ISSN 0010-4620 .
- ↑ Heath, IJ (1971). "Operaciones de archivos inaceptables en una base de datos relacional". Actas del Taller ACM SIGFIDET (ahora SIGMOD) de 1971 sobre Descripción, Acceso y Control de Datos - SIGFIDET '71 . págs. 19–33 . doi : 10.1145/1734714.1734717 . S2CID 22069259 . citado en:
- Ronald Fagin y Moshe Y. Vardi (1986). «La teoría de las dependencias de datos: una revisión» . En Michael Anshel y William Gewirtz (eds.). Matemáticas del procesamiento de la información: [curso breve impartido en Louisville, Kentucky, del 23 al 24 de enero de 1984] . American Mathematical Soc. pág . 23. ISBN 978-0-8218-0086-7.
- C. Date (2005). Database in Depth: Relational Theory for Practitioners . O'Reilly Media, Inc. p. 142. ISBN 978-0-596-10012-4.
- ↑ Meier, Daniel (1980). "Coberturas mínimas en el modelo de base de datos relacional" . Journal of the ACM . 27 (4): 664– 674. doi : 10.1145/322217.322223 . S2CID 15789293 .

Lecturas adicionales
- Codd, EF (1972). "Mayor normalización del modelo relacional de base de datos" (PDF) . ACM Transactions on Database Systems . San José, California: Association for Computing Machinery .
Enlaces externos
- Gary Burt (Verano de 1999). "Apuntes de clase de CS 461 (Sistemas de Gestión de Bases de Datos)" . Departamento de Ciencias de la Computación e Ingeniería Eléctrica de la Universidad de Maryland, Condado de Baltimore .
- Jeffrey D. Ullman. "Apuntes de clase de CS345" ( PostScript ) . Universidad de Stanford.
- Osmar Zaiane (9 de junio de 1998). "Capítulo 6: Restricciones de integridad" . Apuntes de clase de CMPT 354 (Sistemas de bases de datos I) . Departamento de Ciencias de la Computación de la Universidad Simon Fraser .
- Modelado de datos