Dada una relación , una dependencia funcional , con es una restricción sobre las posibles tuplas de que implica que dos tuplas con igual valor del conjunto de atributos deben también tener igual valor del conjunto de atributos .
Axiomas
Hay tres axiomas que sirven para inferir dependencias funcionales:
- Axioma de reflexividad:
- Axioma de aumento:
- Axioma de transitividad:
La notación implica que puede ser deducido del conjunto de dependencias funcionales .
Las siguientes tres reglas se deducen de los axiomas
- Regla de unión:
- Regla de pseudo transitividad: .
- Regla de descomposición:
Clausura
Sea un conjunto de dependencias funcionales, entonces se conoce como clausura de y contiene el conjunto de todas las dependencias funcionales que pueden inferirse de . Esto es:
La clausura de un atributo son todos los atributos que puedo inferir de dicho atributo, a partir de un conjunto de dependencias funcionales .
Las clausuras de todos los atributos de una relación son una forma ordenada de construir su .
Podemos definir una clave candidata como cualquier conjunto de atributos tal que su clausura contiene todos los atributos de la relación.
Cubrimiento y Equivalencia
Dados dos conjuntos de dependencias funcionales , decimos que cubre a si . Esto implica que cualquier dependencia funcional de puede ser inferida por .
Dados dos conjuntos de dependencias funcionales , decimos que son equivalentes si . Lo simbolizaremos con . Esto implica que tanto cubre a , y cubre a .
Cubrimiento Minimal
Dado un conjunto de dependencias funcionales , trataremos de encontrar un conjunto equivalente que cumpla con ciertas reglas:
-
No haya atributos innecesarios del lado izquierdo de alguna dependencia, tal que al sacarlos el conjunto de dependencias sea equivalente.
-
No haya dependencias redundantes, tal que al sacarlas el conjunto de dependencias sea equivalente.
Este conjunto se llamará cubrimiento minimal de .
Algoritmo de Cubrimiento Minimal
Para hallar un cubrimiento minimal, tomaremos tres pasos:
- Pasar las dependencias funcionales a forma canónica. Esto quiere decir que del lado derecho solo puede haber un atributo.
- Eliminar los atributos innecesarios del lado izquierdo de cada dependencia funcional.
- Eliminar las dependencias funcionales redundantes.
Dependencia Trivial
Cuando , entonces decimos que es una dependencia trivial. Las dependencias funcionales se definen a partir de la semántica de los datos. No es posible inferirlas viendo los datos.
Dependencia Parcial
Una dependencia formal es parcial cuando existe un subconjunto propio , para el cual .
Una dependencia funcional es completa si y solo si no es parcial.
Dependencia Transitiva
Se puede aplicar la transitividad, de modo que dada una relación , entonces si , con las dependencias , y , entonces también se cumple que .
Una dependencia formal es transitiva si existe un tal que y . Siendo no trivial, no trivial, y . Todas las dependencias funcionales parciales no triviales son transitivas.
Dependencia Multivaluada
Dada una relación , la dependencia multivaluada es una restricción sobre las posibles tuplas de que implica que para todo par de tuplas tales que , deberían existir otras dos tuplas que resultan de intercambiar los valores de entre y . Es decir:
- y
Por una cuestión de simetría, si , entonces también vale que .
Las dependencias multivaluadas en las que , o son triviales.
Dependencia de Junta
Siempre que en una relación haya una dependencia multivaluada , entonces puede ser descompuesta sin perdida en , eliminando de .
Sin embargo, existen relaciones que pueden ser descompuestas en más de dos relaciones, también sin perdida. Cuando esto ocurre, decimos que hay una dependencia de junta.
Dada una relación , y una serie de subconjuntos de atributos , decimos que es una dependencia de junta cuando la descomposición de en es sin perdida de información.