Para tener un diseño de calidad se debe:
- Evitar problemas de redundancia de información
- Evitar problemas de comprensibilidad
- Evitar problemas de incompletitud
- Restricciones de integridad incompletas
- Relaciones entre atributos no contempladas por esquemas de BD
- Evitar problemas de ineficiencia
- Chequeo ineficiente de restricciones de integridad
- Consultas ineficientes por tener un esquema inadecuado de BD
Para evitar tener que diseñar el diagrama Entidad-Relación, tener que decidir entre alternativas de diseño ER, tener que corregir problemas de calidad en diseños se aplica un algoritmo de normalización.
Para ello, se debe identificar
-
$K$ : Conjunto de todos los atributos (átomicos, es decir, indivisibles) del problema actual -
$I$ : Conjunto de Restricciones de integridad (Se define a partir de K)
Atributos del problema actual y restricciones de integridad | |
↓ | |
Algoritmo de Normalización | |
↓ | |
Esquema de BD Relacional de Calidad |
Dado el problema actual, el esquema universal consta de todos los atributos atómicos del mismo.
No conviene usar el esquema universal como diseño de una BD relacional porque en general tiene problemas de calidad, como redundancia de información y manejo de valores nulos.
La teoría de normalización estudia cómo descomponer esquemas universales para eliminar los problemas citados.
Sea
Si un atributo
Y se puede usar
Usualmente se puede ir descomponiendo el esquema universal para eliminar mucha de la redundancia de información en el mismo por medio del uso de dependencias funcionales.
Más aún, si tenemos las DF del problema, esto es automatizable (debido a la forma repetitiva de descomponer esquemas).
Hay que definir las restricciones de integridad para el conjunto de tablas legales.
Las tablas legales son tablas donde las tuplas tienen un cierto significado y cumplen con ciertas propiedades obligatorias.
Las dependencias funcionales requieren que para las tablas legales, el valor de un cierto conjunto de atributos determine unívocamente el valor de otro conjunto de atributos.
Una dependencia funcional es un tipo de restricción que constituye una generalización del concepto de clave.
Considérese el esquema de una relación
En general, si tengo un esquema con redundancia de información, hay una dependencia funcional con atributos a la derecha que caracterizan la información redundante y con atributos a la izquierda que no determinan todos los atributos del esquema.
Se dice que algunas dependencias funcionales son triviales porque satisfaces todas las relaciones.
En general, una dependencia funcional de la forma
Una dependencia funcional trivial se cumple en todas las tablas de un esquema.
No es necesario dar todas las dependencias funcionales que se cumplen en un problema del mundo real sino un subconjunto de ellas lo menor posible tal que todas las demás DF se puedan derivar de ese subconjunto.
Dado un esquema relacional R una dependencia funcional
-
$f_i \in F$ ó -
$f_i$ se obtiene por aplicar reflexibidad -
$f_i$ se obtiene por aplicar aumentitividad ó transitividad a pasos anteriores
Usamos
Conjunto de reglas de inferencia para derivar dependencias funcionales Se utilizan las letras griegas para los conjuntos de atributos.
-
Reflexividad: if
$\beta \subseteq \alpha,$ then$\alpha → \beta$ -
Aumentatividad: if
$\alpha → \beta$ , then$\gamma \alpha → \gamma\beta$ -
Transitividad if
$\alpha → \beta$ , and$\beta → \gamma$ , then$\alpha → \gamma$
Los axiomas de Armstrong son correctos porque no generan dependencias funcionales incorrectas, y son completos porque para un conjunto dado
Se pueden inferir a partir de los axiomas de Armstrong.
-
Unión: if
$\alpha → \beta$ and$\alpha → \gamma$ , then$\alpha → \beta \gamma$ -
Descomposición: if
$\alpha → \beta \gamma$ , then$\alpha → \beta$ and$\alpha → \gamma$ -
Pseudotransitividad: if
$\alpha → \beta$ and$\gamma \beta → \delta$ , then$\alpha \gamma → \delta$
El cierre de conjunto de dependencias funcionales de
En la práctica hay cientos de atributos en un esquema universal y no es viable calcular
Si tenemos un conjunto
Es decir, para responder si
Llegamos así a un conjunto conocido como cierre de un conjunto de atributos (derecha de la inclusión).
El cierre de
Sea
-
$\alpha$ es superclave de$R$ - Para todo
$A$ en$\alpha$ ,$\alpha - {A}$ no es superclave de R