martes, 25 de mayo de 2010

TEMA 11: Principios del álgebra relacional

Un panorama general del álgebra:

El álgebra relacional consiste en un conjunto de operadores de alto nivel que operan sobre relaciones. Cada uno de estos operadores toma una o dos relaciones como entrada y produce una nueva relación como salida. Desde luego, sería posible en principio definir cualquier cantidad de operadores que se ajustaran a esta sencilla definición (ya sea una o dos relaciones como entrada, otra relación como salida) No obstante, Codd definió un conjunto muy especifico de ocho operadores de este tipo, en dos grupos de cuatro cada uno:

1. las operaciones tradicionales de conjuntos unión, intersección, diferencia y producto cartesiano (todas ellas con ligeras modificaciones debidas al hecho de tener relaciones como operandos, y no conjuntos arbitrarios, después de todo, una relación es un tipo especial de conjunto) y,
2. las operaciones relacionales especiales restricción, proyección, reunión y división.

Por añadidura, Codd tenia un claro objetivo cuando definió precisamente estos ocho operadores, y lo analizaremos en el siguiente capitulo. Pero el lector debe entender que sin duda es posible definir operadores adicionales de naturaleza algebraica, y en efecto muchos de ellos han sido propuestos por distintos autores. En este capitulo analizaremos primero los operadores originales de Codd (o al menos nuestra versión de esos operadores), y los utilizaremos como base para el análisis de varios conceptos algebraicos, en seguida consideraremos cómo podría ser conveniente ampliar el conjunto original de Codd.
Los ocho operadores originales se representan en forma simbólica en la figura
A grandes rasgos, funcionan como sigue:

Restricción: Extrae las tuplas especificadas de una relación dada (o sea, restringe la relación sólo a las tuplas que satisfagan una condición especificada.

Proyección: Extrae los atributos especificados de una relación dada.

Producto: A partir de dos relaciones especificadas, construye una relación que contiene todas las combinaciones posibles de tuplas, una de cada una de las dos relaciones.

Unión: Construye una relación formada por todas las tuplas que aparecen en cualquiera de las dos relaciones especificadas.

Intersección: Construye una relación formada por aquellas tuplas que aparezcan en las dos relaciones especificadas.

Diferencia: Construye una relación formada por todas las tuplas de la primera relación que no aparezcan en la segunda de las dos relaciones especificadas.

Reunión: A partir de dos relaciones especificadas, construye una relación que contiene todas las posibles combinaciones de tuplas, una de cada una de las dos relaciones, tales que las dos tuplas participantes en una combinación dada satisfagan alguna condición especificada.

División: Toma dos relaciones, una binaria y una unaria, y construye una relación formada por todos los valores de un atributo de la relación binaria que concuerdan (en el otro atributo) con todos los valores en la relación unaria.

Adviértase que el resultado de cada una de las operaciones es (por supuesto) otra relación. Esta es la importantísima propiedad de cerradura. En esencia, dado que el resultado de cualquier operación es un objeto del mismo tipo que los operandos, todos son relaciones, el resultado de una operación puede convertirse en operando de otra. Así pues, es posible (por ejemplo) sacar la proyección de una unión, o una reunión de dos restricciones, o la diferencia de una unión y una intersección, etc. Dicho de otro modo, es posible escribir expresiones relacionales anidadas, es decir, expresiones en las cuales los operandos mismos están representados mediante expresiones, y no sólo mediante nombres. Veremos muchos ejemplos de tales operaciones anidadas mas adelante en este tema.

Nota:Existe una analogía obvia entre la capacidad de anidar expresiones algebraicas en álgebra relacional y la capacidad de anidar expresiones aritméticas en aritmética ordinaria. En efecto el hecho de que las relaciones estén cerradas en el álgebra es importante exactamente por las mismas razones por las que es importante el hecho de que los números estén cerrados en la aritmética ordinaria.
Por cierto, cuando hablamos de la importancia de la cerradura y decimos que el resultado de toda operación es otra relación, estamos hablando desde luego desde un punto de vista conceptual. No es nuestra intención sugerir que el sistema debe siempre materializar en su totalidad el resultado de cada operación individual. Vamos a suponer, por ejemplo, que estamos tratando de calcular una restricción de una reunión. Al construirse cada tupla de la reunión, el sistema puede aplicar de inmediato la restricción a la tupla para ver si debe incluirse en el resultado final, y desecharla en ese momento si no. En otras palabras, el resultado intermedio producido por la reunión podría no existir nunca en si mismo como una relación materializada por completo. De hecho, y como regla general, el sistema trata hasta donde puede de no materializar resultados intermedios en su totalidad, por razones de desempeño obvias.

Las operaciones tradicionales de conjuntos:
Ahora examinaremos con cierto detalle las operaciones individuales del álgebra relacional original
Las operaciones tradicionales de conjuntos son unión, intersección, diferencia y producto (en términos más precisos, producto cartesiano ampliado). Nos concentraremos primero en la unión.
En matemáticas, la unión de dos conjuntos es el conjunto de todos los elementos pertenecientes a uno de los conjuntos originales, o a ambos. Como una relación es, en términos informales, un conjunto (de tuplas), resulta obvio que es posible construir la unión de dos relaciones, el resultado será un conjunto formado por todas las tuplas que aparecen en una de las relaciones originales, o en ambas. Por ejemplo, la unión del conjunto de tuplas de proveedores en la relación S y el conjunto de tuplas de partes en la relación P será sin duda un conjunto.
Sin embargo, aunque el resultado es un conjunto, no es una relación, las relaciones no pueden contener una mezcla de diferentes tipos de tuplas, deben ser ¨homogéneas en sus tuplas¨. Y, desde luego, queremos que el resultado sea una relación: deseamos conservar la propiedad de cerradura. Por tanto, la unión incluida en el álgebra relacional no es la unión matemática completamente general, más bien, es una forma limitada de unión, en la cual se obliga a las dos relaciones de entrada a tener lo que podríamos llamar en términos informales ¨la misma forma¨, es decir, por ejemplo, que las dos deben contener tuplas de proveedores, o las dos deben contener tuplas de partes, y no una mezcla. Si las dos relaciones tienen la misma forma en este sentido, podremos obtener su unión, y el resultado será también una relación con la misma forma, en otras palabras, se habrá conservado la propiedad de cerradura.
Un termino mas preciso para el concepto ¨la misma forma¨ es compatibilidad respecto a la unión. Diremos que dos relaciones son compatibles respecto a la unión si y solo si sus cabeceras son idénticas, lo cual significa, en términos precisos que:

a. las dos tienen el mismo conjunto de nombres atributos (adviértase, por tanto, que deben tener por fuerza el mismo grado), y
b. los atributos correspondientes (es decir, los atributos con el mismo nombre en las dos relaciones) se definen sobre el mismo dominio.

La unión, la intersección y la diferencia requieren todas operandos compatibles respecto a la unión (se aplican argumentos análogos a los presentados en el caso de la unión, también a la intersección y a la diferencia). El producto cartesiano, en cambio, no tiene este requerimiento (aunque si tiene otro requerimiento distinto).

· Unión
La unión de dos relaciones A y B compatibles respecto a la unión, A UNION B, es una relación cuya cabecera es idéntica a la de A o B y cuyo cuerpo está formado por todas las tuplas t pertenecientes ya sea a A o a B (o a las dos)
Ejemplo: sean A y B las relaciones presentadas en la figura (A contiene en términos intuitivos, los proveedores de Londres y B contiene los proveedores que suministran la parte P1). Entonces A UNION B, véase la parte (a) de la figura, consistirá en los proveedores que o bien están situados en Londres, o que suministran la parte P1 (o las dos cosas). Adviértase que el resultado tiene tres tuplas, no cuatro (se eliminan las tuplas repetidas).

Relaciones base

A
S#
SNOMBRE
SITUACION
CIUDAD
B
S#
SNOMBRE
SITUACION
CIUDAD
 
S1
Salazar
20
Londres
 
S1
Salazar
20
Londres
 
S4
Corona
20
Londres
 
S2
Jaime
10
Paris.

 Unión (A UNION B)

S#
SNOMBRE
SITUACION
CIUDAD
S1
Salzar
20
Londres
S4
Corona
20
Londres
S2
Jaimes
10
Paris

Interseccion (A INTERSECT B)

S#
SNOMBRE
SITUACION
CIUDAD
S1
Salazar
20
Londres

Diferencia (A MINUS B)

S#
SNOMBRE
SITUACION
CIUDAD
S#
SNOMBRE
SITUACION
CIUDAD
S4
Corona
20
Londres
S2
Jaimes
10
Paris.

· Intersección
La intersección de dos relaciones compatibles respecto a la unión A y B, A INTERSECT B, es una relación cuya cabecera es idéntica a la de A o B y cuyo cuerpo está formado por todas las tuplas t pertenecientes tanto a A como a B.
Ejemplo: Una vez más, sean A y B las relaciones presentadas en la figura Entonces A INTERSECT B, véase la parte B de la figura, consistirá en los proveedores situados en Londres, y que suministran la parte P1.

· Diferencia
La diferencia entre dos relaciones compatibles respecto a la unión A y B, A MINUS B, es una relación cuya cabecera es idéntica a la de A o B y cuyo cuerpo está formado por todas las tuplas t pertenecientes a A pero no a B.
Ejemplo: Sean A y B las relaciones presentadas en la figura. Entonces A MINUS B contendrá los proveedores situados en Londres que no suministran la parte P1, y B MINUS A incluirá los proveedores que suministran la parte P1 y no están situados en Londres. Adviértase que MINUS tiene cierta direccionalidad, como la tiene la resta en aritmética ordinaria (por ejemplo, ¨5 - 2¨ y ¨2-5¨ son diferentes en aritmética).

· Producto cartesiano ampliado.
En matemáticas, el producto cartesiano de dos conjuntos es el conjunto de todos los pares ordenados de elementos tales que el primer elemento de cada par pertenece al primer conjunto y el segundo elemento de cada par pertenece al segundo conjunto. Así, el producto cartesiano de dos relaciones sería un conjunto de pares ordenados de tuplas. Pero (una vez más) deseamos conservar la propiedad de cerradura, en otras palabras, deseamos un resultado compuesto de tuplas, no de pares ordenados de tuplas (aquí también empleamos términos un poco informales). Por tanto, la versión del producto cartesiano en álgebra relacional es una forma ampliada de la operación, en la cual cada par ordenado de tuplas es reemplazado por la tupla resultante de la combinación de las dos tuplas en cuestión. Aquí, ¨combinacion¨ significa en esencia unión (en el sentido de la teoría de conjuntos, no del álgebra relacional), es decir, dadas las dos tuplas

(A1:a1, A2: A2, ......., Am, am) y (B1: b1, B2: b2,......, Bn: bn)

(se muestran los nombres de atributos para hacerlas más explicitas), la combinación de las dos es la tupla única

(A1:a1, A2: A2, ......., Am, am, B1: b1, B2: b2,......, Bn: bn)

Otro problema que surge en conexión con el producto cartesiano es la necesidad de una cabecera bien formada para la relación resultante. Ahora bien, es evidente que la cabecera del resultado es en esencia sólo la combinación de las dos cabeceras de las dos relaciones de entrada. Por tanto, se presentará un problema si esas dos cabeceras tienen algún nombre de atributo en común. Así pues, si necesitamos formar el producto cartesiano de dos relaciones cuyas cabeceras tienen nombres de atributo en común, deberemos modificar de manera apropiada los nombres de los atributos. Entonces diremos que dos relaciones son compatibles respecto al producto si y solo si sus cabeceras son disjuntas (es decir, no tienen nombres de atributo en común).
Por tanto, definimos el producto cartesiano de dos relaciones (compatibles respecto al producto) A y B, A TIMES B, como una relación cuya cabecera es la combinación de las cabeceras de A y B y cuyo cuerpo está formado por el conjunto de todas las tuplas t tales que t es la combinación de una tupla a perteneciente a A y una tupla b perteneciente a B.
Ejemplo: Sean A y B las relaciones presentadas en la figura (A, en términos intuitivos, consiste en todos los números de proveedores vigentes y B en todos los números de parte vigentes) Entonces A TIMES B, véase la parte inferior de la figura, estará formada por todas las combinaciones de números de proveedor/número de parte vigentes.
No debemos terminar este análisis del producto cartesiano sin señalar que esta operación no tiene mucha importancia práctica. Es decir, no es muy importante en la práctica que un sistema relacional maneje esa operación (aunque de hecho la mayor parte de ellos lo hacen ). El producto cartesiano se incluye en el álgebra relacional sobre todo por razones conceptuales. En particular, se verá que el producto cartesiano es necesario como paso intermedio en la definición de la operación reunión theta¨ (y esta ultima operación si es importante en la práctica).

Relaciones base

A
S#
B
P#
 
 
S1
S2
S3
S4
S5
 
 
 
P1
P2
P3
P4
P5
P6

Producto Cartesiano (A TIMES B)

S#
P#
 
 
 
 
 
 
 
 
S1
S1
S1
S1
S1
S1
 
P1
P2
P3
P4
P5
P6
S2
S2
S2
S2
S2
S2
P1
P2
P3
P4
P5
P6
S3
S3
S3
S3
S3
S3
P1
P2
P3
P4
P5
P6
S4
S4
S4
S4
S4
S4
P1
P2
P3
P4
P5
P6
S5
S5
S5
S5
S5
S5
P1
P2
P3
P4
P5
P6

Asociatividad
Es fácil comprobar que la unión es asociativa; es decir, si A,B y C son ¨proyecciones¨ arbitrarias (en el sentido de la figura 13.2), entonces las expresiones

( A UNION B) UNION C
y
A UNION (B UNION C)

son equivalentes
Así, por comodidad, nos permitiremos escribir una secuencia de uniones sin insertar paréntesis, por ejemplo, cualquiera de las dos expresiones anteriores puede simplificarse a:

A UNION B UNION C

Sin provocar ambigüedad.
Algo análogo puede decirse de la intersección y el producto (pero no de la diferencia). Señalamos también que la unión, la intersección y el producto (pero no la diferencia) son conmutativas, es decir, las expresiones

A UNION B
y
B UNION A

Son equivalentes también, y lo mismo sucede con INTERSECT y TIMES.

Operaciones relacionales especiales:
Ahora nos ocuparemos de las operaciones relacionales especiales restricción, proyección, reunión (varias clases) y división.

· Restricción
Sea theta la representación de cualquier operador de comparación escalar simple (por ejemplo =. <>, >,>=, etc.). La restricción theta de la relación A según los atributos X y Y-

A WHERE X theta Y

Es una relación con la misma cabecera que A y con un cuerpo formado por el conjunto de todas las tuplas t de A tales que la evaluación de la comparación ¨X theta Y¨ resulta verdadera en el caso de esa tupla t. (Los atributos X y Y deben estar definidos sobre el mismo dominio y la operación theta debe ser aplicable a ese dominio. Además, por supuesto, la relación A no debe ser por fuerza una relación nombrada, y puede representarse mediante una expresión arbitraria del álgebra relacional).
Se puede especificar un valor literal en vez del atributo X o del atributo Y (o de ambos, desde luego), de hecho, esto es lo más común en la práctica. Por ejemplo:

A WHERE X theta literal

Adviértase que el operador de restricción theta produce en realidad un subconjunto ¨horizontal¨ de una relación dada, es decir, el subconjunto de las tuplas de la relación dada para las cuales se satisface una comparación especificada. Nota: se acostumbra abreviar ¨restriccion theta¨ a sólo ¨restriccion¨.
La operación de restricción tal como se acaba de definir permite sólo una comparación simple en la cláusula WHERE (donde). No obstante, es posible, en virtud de la propiedad de cerradura, ampliar la definición sin ambigüedad a una forma en al cual la expresión arbitraria de tales comparaciones simples, según se indica con las siguientes equivalencias:

1. A WHERE c1 AND c2

Se define como equivalente a

(A WHERE c1) INTERSECT (A WHERE c2)

2. A WHERE c1 OR c2

Se define como equivalente a

( A WHERE c1) UNION (A WHERE c2)

3. A WHERE NOT c

Se define como equivalente a

A MINUS (A WHERE c)

En adelante daremos por hecho que la expresión condicional en la cláusula WHERE de una restricción está formada por este tipo de combinaciones booleanas arbitrarias de comparaciones simples. Una expresión condicional como ésta (es decir, una validez en el caso de una tupla determinada puede establecerse con sólo examinar esa tupla aislada) se conoce como condición de restricción.
En la figura 4 se presentan algunos ejemplos de restricción.

S WHERE CIUDAD = ¨Londres¨

S#
SNOMBRE
SITUACION
CIUDAD
S1
S4
Salazar
Corona
20
20
Londres
Londres

P WHERE PESO < 14

P#
PNOMBRE
COLOR
PESO
CIUDAD
P1
P5
Tuerca
Leva
Rojo
Azul
12
12
Londres
Paris

SP WHERE S# = ¨S1¨
AND P# = ¨P1¨

S#
P#
CANTIDAD
S1
P1
300

· Proyección

La proyección de la relación A según los atributos X,Y,...., Z-

A (X,Y,....,Z)

Es una relación con (X,Y,..., Z) como cabecera y cuyo cuerpo está formado por el conjunto de todas las tuplas (X:x, Y:y,...,Z:z) tales que una tupla t aparece en A con el valor X en X, el valor y en Y, ..., y el valor z en Z. Así, el operador de proyección produce un subconjunto ¨vertical¨ de una relación dada, o sea, el subconjunto obtenido mediante la selección de los atributos especificados y la eliminación de las tuplas repetidas dentro de los atributos seleccionados. Desde luego, en este caso la relación A tampoco necesita ser una relación nombrada, y puede representarse mediante una expresión arbitraria.
Nota: ningún atributo puede especificarse más de una vez en la lista de atributos de una operación de proyección (¿por qué no?). Sin embargo, la sintaxis de la figura 13.2 si permite omitir del todo la lista de atributos. Omitir por completo esta lista equivale a especificar una lista con todos los atributos de la relación original, es decir, representa la proyección identidad. (En cambio, la especificación de una lista vacía, como en R (), por ejemplo, representaría la proyección nula.
En la figura 13.6 se presentan algunos ejemplos de proyección. Obsérvese en el primer ejemplo (la proyección de proveedores según el atributo CIUDAD) que, aunque la relación S tiene cinco tuplas y por tanto cinco ciudades, sólo hay tres ciudades en el resultado, como ya se explicó, las tuplas repetidas se elimina (como siempre). Desde luego, lo mismo puede decirse también de los otros ejemplos.

S (CIUDAD)

CIUDAD
Londres
Paris
Atenas

P (COLOR, CIUDAD)

COLOR
CIUDAD
Rojo
Verde
Azul
Azul
Londres
Paris
Roma
Paris

( S WHERE CIUDAD = ¨Paris¨) (S#)

S#
S2
S3

· Reunión natural
La operación de reunión tiene varias formas distintas. Definitivamente, la más importante es la reunión natural, que definimos como sigue.
Sean las cabeceras de las relaciones A y B.

(X1, X2,...Xm, Y1, Y2,....., Yn)
y
(Y1,Y2,...,Yn,Z1,Z2,....Zp)

respectivamente, es decir, los atributos Y1, Y2,..., YN son (los únicos) comunes a las dos relaciones, los atributos X1,X2,...Xm son los demás atributos de A, y los atributos Z1, Z2,...,Zp son los demás atributos de B. Vamos a suponer también que los atributos correspondientes (es decir, los atributos con el mismo nombre) están definidos sobre el mismo dominio. Consideremos ahora (X1,X2,...,Xm), (Y1,Y2,....,.Yn) y (Z1,Z2,...Zp) como tres atributos compuestos X,Y y Z, respectivamente. La reunión natural de A y B

A JOIN B

Es una relación con la cabecera (X,Y,Z) y un cuerpo formado por el conjunto de todas las tuplas (X:X, Y:y, Z:z) tales que una tupla a aparezca en A con el valor x en X y el valor y en Y, y una tupla b aparezca en B con el valor y en Y y el valor z en Z. Como siempre, las relaciones A y B pueden estar representadas por expresiones arbitrarias.
En la figura se presenta un ejemplo de reunión natural (la reunión natural S JOIN P, según el atributo común CIUDAD)
La reunión natural, tal como la hemos definido, es tanto asociativa como conmutativa (Ejercicio: Comprobar estas aseveraciones). En consecuencia, las dos expresiones.

( A JOIN B ) JOIN C
y
A JOIN (B JOIN C)

Se puede simplificar, sin provocar ambigüedad, a

A JOIN B JOIN C

Además, las dos expresiones
A JOIN B
Y
B JOIN A

son equivalentes.
Cabe señalar que, si A y B no tienen nombres de atributos en común, A JOIN B es equivalente a A TIMES B (es decir, la reunión natural degenera en el producto cartesiano, en este caso).

S#
SNOMBRE
SITUACION
CIUDAD
P#
PNOMBRE
COLOR
PESO
S1
S1
S1
S2
S2
S3
S3
S4
S4
S4
Salazar
Salazar
Salazar
Jaime
Jaime
Bernal
Bernal
Corona
Corona
Corona
20
20
20
10
10
30
30
20
20
20
Londres
Londres
Londres
Paris
Paris
Paris
Paris
Londres
Londres
Londres
P1
P4
P6
P2
P5
P2
P5
P1
P4
P6
Tuerca
Birlo
Engrane
Perno
Leva
Perno
Leva
Tuerca
Birlo
Engrane
Rojo
Rojo
Rojo
Verde
Azul
Verde
Azul
Rojo
Rojo
Rojo
12
14
19
17
12
17
12
12
14
19

· Reunión - theta
Ahora pasamos a la operación de reunión theta. La reunión theta es adecuada para aquellas ocasiones (poco frecuentes en comparación, pero de ninguna manera desconocidas) en las cuales necesitamos juntar dos relaciones con base en alguna condición diferente a la igualdad. Sean las relaciones A y B compatibles respecto al producto (o sea, no tienen nombres de atributos en común, véase el análisis del producto cartesiano en la sección 13.3), y sea theta un operador según la definición dada en el análisis de la restricción. La reunión theta de la relación A según el atributo X con la relación B según el atributo Y se define como el resultado de evaluar la expresión.

( A TIMES B) WHERE X theta Y

En otras palabras, es una relación con la misma cabecera que el producto cartesiano de A y B, y con un cuerpo formado por el conjunto de todas las tuplas t tales que t pertenece a ese producto cartesiano y la evaluación de condición ¨X theta Y¨ resulta verdadera para esa tupla t. (Los atributos X y Y deberán estar definidos sobre el mismo dominio, y la operación theta debe ser aplicable a ese dominio)
Vamos a suponer, por ejemplo, que deseamos calcular la ¨reunion mayor que de la relación S según CIUDAD con la relación P según CIUDAD¨
Una expresión apropiada del álgebra relacional es:

( ( S RENAME CIUDAD AS SCIUDAD) TIMES ( P RENAME CIUDAD AS PCIUDAD) )

WHERE SCIUDAD > PCIUDAD.

El resultado se muestra en la figura. Nota: seria suficiente renombrar sólo uno de los dos atributos CIUDAD, la única razón para cambiar el nombre de los dos es la simetría.
Adviértase que la reunión theta no es una operación primitiva, siempre es equivalente a obtener el producto cartesiano ampliado de las dos relaciones (con modificaciones apropiadas de los nombres de los atributos, si es necesario), y después realizar una restricción apropiada sobre el resultado.
Si theta es ¨igual a¨, la reunión theta se llama equirreunion. Por la definición, el resultado de una equirreunión debe incluir dos atributos con la propiedad de que los valores de esos dos atributos son iguales entre si en cada tupla de la relación. Si se elimina uno de esos dos atributos (lo cual puede hacerse mediante una proyección), el resultado será la ¡la reunión natural! Por tanto, la reunión natural tampoco es una operación primitiva, es una proyección de una restricción de un producto (una vez más, con las operaciones apropiadas para renombrar atributos) Por ejemplo, la expresión que representa la reunión natural de proveedores y partes (según ciudades).

S JOIN P

Es equivalente a la siguiente expresión, más compleja:

( ( S TIMES ( P RENAME CIUDAD AS PCIUDAD ) ) WHERE CIUDAD = PCIUDAD)
(S#, SNOMBRE, SITUACIÓN, CIUDAD, P#, PNOMBRE, COLOR, PESO)

S#
SNOMBRE
SITUACION
CIUDAD
P#
PNOMBRE
COLOR
PESO
PCIUDAD
S2
S2
S2
S3
S3
S3
 
Jaime
Jaime
Jaime
Bernal
Bernal
Bernal
 
10
10
10
30
30
30
 
Paris
Paris
Paris
Paris
Paris
Paris
P1
P4
P6
P1
P4
P6
 
Tuerca
Birlo
Engrane
Tuerca
Birlo
Engrane
Rojo
Rojo
Rojo
Rojo
Rojo
Rojo
12
14
19
12
14
19
Londres
Londres
Londres
Londres
Londres
Londres

· División:

Sean las cabeceras de las relaciones A y B

(X1,X2,...Xm, Y1,Y2,..., Yn)
y
(Y1,Y2,...Yn)

respectivamente, es decir, los atributos Y1, Y2,....Yn son comunes a las dos relaciones. Además, A tiene los atributos X1,X2,...Xm y B no tiene otros atributos. (Las relaciones A y B representan al dividendo y al divisor, respectivamente) Vamos a suponer que los atributos correspondientes ( es decir, los atributos con el mismo nombre) están definidos sobre el mismo dominio. Consideremos ahora a (X1, X2,...,Xm) y (Y1, Y2,...Yn) como dos atributos compuestos X y Y. La división de A entre B.

A DIVIDEBY B

Es una relación con la cabecera (X) y un cuerpo formado por el conjunto de todas las tuplas (X:x) tales que aparece una tupla (X:x, Y:y) en A para todas las tuplas (Y:y) presentes en B. En otras palabras, el resultado contiene todos los valores de X en A cuyos valores de Y correspondientes en A incluyen a todos los valores de Y en B, en términos informales). Como siempre, las relaciones A y B pueden ser expresiones.

1 comentario: