Descomposición de un Esquema sin perdida

Supongamos un esquema R(T,L),con T un conjunto de atributos (A1,A2,...,An) y con L un conjunto de dependencias funcionales, el cual queremos descomponer en varios subesquemas (R1,R2,...,Rn). Queremos comprobar si se cumple la propiedad LJ, es decir, comprobar si la descomposición es sin pérdida.

Vamos a ir viendo como funciona el algoritmo con un ejemplo, que es el siguiente:

R(T,L) con T={A,B,C,D,E} y L={A->C , B->C , DE->C , CE->A}
Que descomponemos en AD , AB , BE , CDE , AE.

INICIO:
1. Se construye una tabla con tantas columnas como atributos tenga el esquema original
2. Que tenga tantas filas como subesquemas en los que dividimos el esquema original
La fila iésima se corresponde con el subesquema iésimo y la columna jésima se corresponde con el atributo jésimo.
Una vez hecho esto se inicializa la tabla con unos valores. Los valores pueden ser:
1. aj
2. bij

El valor es aj si el atributo correspondiente pertenece al subesquema de la izquierda: (será a1 si el atributo 1 está en el subesquema de la fila correspondiente de la izquierda, por ejemplo).
El valor es bij en otro caso, es decir, no pertenece.

Se analizan cada una de las dependencias funcionales. Se analiza la parte izquierda y se mira que atributos involucra. Nos quedamos con aquellos valores para los cuales el contenido dentro de la tabla es el mismo (da igual que sean aes que bes).
Y lo que hacemos es igualar las partes derechas. Se igualan todas al valor de una de las aes si existe alguna, y si no hay ninguna a, se igualan al valor de una de las bes.

Este proceso se repite hasta que la tabla no varíe. Si al final hay una fila de aes, se verifica que la descomposición es sin pérdida.