Para los ejemplos mostrados en los operadores utilizaremos las siguientes relaciones:
r: | s: | q: | p: | ||||||||||||||
A | B | C | A | B | C | D | E | F | D | E | F | G | H | ||||
a1 | b1 | c1 | a1 | b1 | c1 | d1 | e1 | f1 | d1 | e1 | f1 | g1 | h2 | ||||
a1 | b2 | c1 | a2 | b2 | c1 | d2 | e2 | f1 | d2 | e2 | f1 | g2 | h1 | ||||
a2 | b1 | c2 | a2 | b2 | c2 | d2 | e2 | f2 | d2 | e2 | f2 | g1 | h1 |
Construye una relación consistente en todas las n-adas que forman parte de cada una de las dos relaciones especificadas.
En términos abstractos podemos decir que este operador es una función que toma como argumentos un par de relaciones y da como resultado otra relación:
Las relaciones 1#1 y 35#35 deben tener el mismo encabezado, al igual que la relación resultado.
Por ejemplo:
Unión (r, s): | |||
A | B | C | |
a1 | b1 | c1 | |
a1 | b2 | c1 | |
a2 | b1 | c2 | |
a2 | b2 | c1 | |
a2 | b2 | c2 |
Construye una relación consistente en aquellas n-adas que aparecen tanto en la primera como en la segunda relación dada.
Observamos que tanto las relaciones 1#1 y 35#35 como la relación resultante tienen el mismo encabezado.
Por ejemplo:
Inter (r, s): | |||
A | B | C | |
a1 | b1 | c1 |
Se construye una relación consistente en aquellas n-adas que pertenecen a la primera relación pero no a la segunda relación especificada.
De nuevo, el encabezado de las relaciones 1#1 y 35#35, al igual que la relación resultante, tienen el mismo encabezado.
Por ejemplo:
Dif (r, s): | |||
A | B | C | |
a1 | b2 | c1 | |
a2 | b1 | c2 |
Construye una relación consistente en todas las posibles combinaciones de n-adas.
Este operador es una función que recibe una relación 1#1 con encabezado 40#40, 41#41, 42#42, 43#43 y otra relación 35#35 con encabezado 44#44, 45#45, 42#42, 46#46 para generar una relación que tenga encabezado 40#40, 41#41, 42#42, 47#47, 48#48, 45#45, 42#42, 46#463.6; i.e. la concatenación de los encabezados de 1#1 y 35#35.
Por ejemplo:
Cruz (r, q): | ||||||
A | B | C | D | E | F | |
a1 | b1 | c1 | d1 | e1 | f1 | |
a1 | b1 | c1 | d2 | e2 | f1 | |
a1 | b1 | c1 | d2 | e2 | f2 | |
a1 | b2 | c1 | d1 | e1 | f1 | |
a1 | b2 | c1 | d2 | e2 | f1 | |
a1 | b2 | c1 | d2 | e2 | f2 | |
a2 | b1 | c2 | d1 | e1 | f1 | |
a2 | b1 | c2 | d2 | e2 | f1 | |
a2 | b1 | c2 | d2 | e2 | f2 |
Extrae aquellas n-adas de una relación que satisfacen una condición especifica.
Este operador es una función que toma una relación y una condición y devuelve una relación con todas aquellas n-adas que hayan cumplido con la condición.3.7:
Por ejemplo:
Rest (r, 54#54): | |||
A | B | C | |
a1 | b1 | c1 | |
a2 | b1 | c2 | |
Extrae aquellos atributos especificados de una relación dada.
Formalmente es una función que toma una relación que tiene un encabezado de 30#30 atributos y un conjunto de 27#27 atributos (que están dentro del encabezado de la relación dada), generando una relación con un encabezado con los 27#27 atributos dados.
Por ejemplo:
Proy (r, {B, C}): | ||
B | C | |
b1 | c1 | |
b2 | c1 | |
b1 | c2 |
Construye una relación a partir de dos relaciones las cuales tienen conjuntos ajenos de atributos, a los cuales se les establece un condición lógica que permite unir las relaciones a través de estos atributos.
Este operador es una función que toma dos relaciones y un conjunto de condiciones de comparación entre atributos de una y otra relación, tal condición sirve para establecer una conexión lógica entre las relaciones (de manera natural se supone que los atributos correspondientes estan sumergidos en los mismos dominios); de manera que la relación generada es una combinación de las n-adas de ambas relaciones pero que en los atributos que estan involucrados en la condición, cumplen con ésta.
Por ejemplo, si renombramos como 11#11, 59#59 y 60#60 los atributos 10#10, 61#61, 62#62, de la relación 63#63 para cumplir con la condición de este operador. Es de observarse que si la relación 1#1 tiene 30#30 atributos y la relación 35#35 tiene 27#27 atributos, entonces la relación resultante tiene 64#64 atributos, donde 65#65 es el número de atributos diferentes que estan involucrados en la condición.
Ejemplo:
66#66 Unión (r, s, 67#67): | |||||
A | B | C | E | F | |
a1 | b1 | c1 | b1 | c1 | |
a1 | b2 | c1 | b1 | c1 | |
a2 | b1 | c2 | b2 | c1 | |
a2 | b1 | c2 | b2 | c2 |
Este operador toma dos relaciones y construye una relación consistente de todos los atributos de la primera relación que no estan en la segunda relación.
Este operador es una función que toma dos relaciones, una 1#1 con encabezado 68#68 y una 35#35 con encabezado 69#69 y regresa una relación de grado 70#70 con encabezado 71#71.
Por ejemplo:
Div(74#74): | ||
G | H | |
g1 | h2 | |
g2 | h1 | |
g1 | h1 |
Como se puede apreciar, el resultado de cada operador es una relación. Esta es la llamada propiedad de la cerradura y resulta muy importante porque el resultado de un operador puede ser un argumento para otro operador; i.e. permite la composición de los operadores.
<1746>>