sábado, 28 de mayo de 2016

CÁLCULO RELACIONAL

             CÁLCULO RELACIONAL

El Cálculo relacional es un lenguaje de consulta que describe la respuesta deseada sobre una Base de datos sin especificar como obtenerla, a diferencia del Álgebra relacional que es de tipo procedural, el cálculo relacional es de tipo declarativo; pero siempre ambos métodos logran los mismos resultados.
El cálculo relacional usa un enfoque completamente diferente al álgebra relacional. No obstante, los dos lenguajes son lógicamente equivalentes. Esto significa que cualquier consulta que pueda resolverse en un lenguaje puede resolverse en el otro. La solución para toda consulta en este tipo de cálculo se define por:
Ø  Una lista de resultados
Ø  Una sentencia de cualificación
La lista de resultados está clara, son aquellos registros que cumplen las condiciones que deseamos. La sentencia de cualificación contiene las condiciones que deseamos que cumplan los registros de la lista de resultados. La diferencia entre el cálculo y el álgebra radica en que el cálculo realiza la operación en un único paso, sin necesidad de tener que obtener tablas intermedias, el álgebra realiza las operaciones paso a paso.
Normalmente el cálculo relacional se apoya en algún lenguaje de interrogación de bases de datos como puede ser el SQL.
El cálculo relacional incluye un concepto nuevo denominado cuantificador, los cuantificadores tratan de averiguar el número de registros afectados por una determinada operación, incluso antes de realizarla. Según su naturaleza los podemos dividir en dos grupos:

Cuantificadores existenciales

Son aquellos que tratan de averiguar el número de registros que devolvería un tipo de consulta. Por ejemplo: saber el número de clientes de Madrid que han comprado el producto 2015. Si el número de registros que satisfacen esta relación es mayor que cero, podemos generar la consulta para lanzar posteriormente un informe, en caso contrario se puede enviar un mensaje al usuario para que sepa que no hay ningún cliente con estas características.

Cuantificadores universales

Son aquellos que indican que una condición se aplica a todas las filas de algún tipo. Se usa para brindar la misma capacidad que la operación división del álgebra relacional.

 

                       VARIABLES

Una variable es un nombre asociado a un elemento de datos que está situado en posiciones contiguas de la memoria principal, y su valor puede cambiar durante la ejecución de un programa.
Toda variable pertenece a un tipo de dato concreto. En la declaración de una variable se debe indicar el tipo al que pertenece. Así tendremos variables enteras, reales, booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la vida de una variable:
Declaración de variables
Esta es la primera fase en la vida de cualquier variable. La declaración se realiza en la sección que comienza con la palabra var.
Nota: Toda variable que vaya a ser utilizada en Pascal tiene que ser previamente declarada.
Iniciación de variables
Esto no es más que darle un valor inicial a una variable. Así como lo primero que se hace con una variable es declararla, lo siguiente tiene que ser iniciarla. Esto se hace para evitar posibles errores en tiempo de ejecución, pues una variable tiene un valor indeterminado después de declararla. Principalmente, existen dos maneras de otorgar valores iniciales a variables:

  • Mediante una sentencia de asignación
  • Mediante uno de los procedimientos de entrada de datos (read o readln)

Veamos un ejemplo que reúne los dos casos:

   begin
      ...
     i:=1;
     readln(n);
     while i < n do begin
        (* cuerpo del bucle *)
        i := i + 1
     end;
      ...
   end.
        

Utilización de variables
Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que presenta un mayor abanico de posibilidades. A continuación tienes unas cuantas:
  • Incrementar su valor:
i := i + 1
  • Controlar un bucle:
for i:=1 to 10 do ...
  • Chequear una condición:
if i<10 then ...
  • Participar en una expresión:
n := (Max - Min) div i

                           

                     CONSTANTES

Una constante es un dato cuyo valor no puede cambiar durante la ejecución del programa. Recibe un valor en el momento de la compilación y este permanece inalterado durante todo el programa.
Como ya se ha comentado en el tema sobre las partes de un programa, las constantes se declaran en una sección que comienza con la palabra reservada const. Después de declarar una constante ya puedes usarla en el cuerpo principal del programa. Tienen varios usos: ser miembro en una expresion, en una comparación, asignar su valor a una variable, etc.
En el siguiente ejemplo se contemplan varios casos: 

  
  const
    Min = 0;
    Max = 100;
    Sep = 10;
  var 
    i : integer;

  begin
    i := Min;
    while i < Max do begin
      writeln(i);
      i := i + Sep
    end
  end.
     

En este ejemplo se declaran tres constantes (Min, Max y Sep). En la primera línea del cuerpo del programa se asigna una constante a una variable. En la siguiente, se usa una constante en una comparación. Y en la cuarta, la constante Sep interviene en una expresión que se asigna a una variable. El resultado de ejecutar este programa sería una impresión en pantalla de los números: 0, 10, 20, 30, 40, 50, 60, 70, 80 y 90.

Se puede hacer una división de las constantes en tres clases:
Constantes literales
Son valores de cualquier tipo que se utilizan directamente, no se declaran ya que no tienen nombre. En el siguiente ejemplo tienes un par de constantes literales (el 3, el 4, y el 3.1416):
VolumenEsfera := 4/3 * 3.1416 * Radio * Radio * Radio;

Constantes declaradas
También llamadas constantes con nombre, son las que se declaran en la sección const asignándoles un valor directamente. Por ejemplo:

const
Pi = 3.141592; (* valor real *)
Min = 0; (* entero *)
Max = 99; (* entero *)
Saludo = 'Hola'; (* cadena caract. *)

Constantes expresión
También se declaran en la sección const, pero a estas no se les asigna un valor directamente, sino que se les asigna una expresión. Esta expresión se evalúa en tiempo de compilación y el resultado se le asigna a la constante. Ejemplo:

const
Min = 0;
Max = 100;
Intervalo = 10;
N = (Max - Min) div Intervalo;
Centro = (Max - Min) div 2;

 

      TIPOS DE CÁLCULO RELACIONAL


Calculo relacional orientado a tuplas:  Se procesan tuplas de una o más relaciones SQL orientado a la tupla utilizando nombres de relación y etiquetas como variables de tupla.

Calculo relacional orientado a los dominios:  Variables de tupla se reemplazan por variables de dominio Se procesan dominios que alcanzan una o más relaciones.



Cálculo Relacional de Tuplas


Tuplas

Una tupla se define como una función finita que asocia unívocamente los nombres de los atributos de una relación con los valores de una instanciación de la misma. En términos simplistas, es una fila de una tabla relacional.

Cálculo relacional basado en tuplas. 

Está basado en el cálculo de predicados utilizando variables-tupla que representan tuplas, esto obliga a introducir algunos cambios en las definiciones comentadas anteriormente, y que pasamos a exponer.
Una consulta en TRC es de la forma:
{T | φ(T )}
donde T es una variable tipo tupla y φ(T) es una fórmula que describe a T. El resultado de esta consulta es el conjunto de todas las tuplas t para las cuales la fórmula es verdadera.

Variable de tipo tupla

Una variable tipo tupla T es una variable capaz de tomar cualquier valor tupla que pertenece a una relación (o tabla).

Sintaxis de consulta en TRC

La sintaxis es definida a partir de la lógica de primer orden. Donde la variable a utilizar son de tipo tupla. Una variable es libre en una fórmula (o subfórmula) si la (sub) fórmula no contiene ninguna ocurrencia de cuantificadores que la limiten. En una consulta en TRC de la forma: {T | φ(T )}, T es la única variable libre.
Sean las relaciones:


Cálculo Relacional de Dominios

Es un lenguaje de consulta formal que permite expresar las consultas a partir de fórmulas bien formadas, donde cada variable se interpreta como variante sobre el dominio del atributo de una relación. Al igual que el anterior, éste se deduce del cálculo de predicados, pero en este caso: 

1. las variables están asociadas a los dominios de los atributos y se denota como 
 relación (atributo1: variable1, atributo2: variable2, ... ). Ejm: ModeloCarro(modelo: m, marca: c). 

2. los predicados utilizados se construyen igual que para el cálculo relacional de tuplas.

RESUMEN

CÁLCULO RELACIONAL

El Cálculo relacional es un lenguaje de consulta que describe la respuesta deseada sobre una Base de datos sin especificar como obtenerla, a diferencia del Álgebra relacional que es de tipo procedural, el cálculo relacional es de tipo declarativo; pero siempre ambos métodos logran los mismos resultados.
El cálculo relacional usa un enfoque completamente diferente al álgebra relacional. No obstante, los dos lenguajes son lógicamente equivalentes. Esto significa que cualquier consulta que pueda resolverse en un lenguaje puede resolverse en el otro. La solución para toda consulta en este tipo de cálculo se define por:
Ø  Una lista de resultados
Ø  Una sentencia de cualificación


Cuantificadores existenciales

Son aquellos que tratan de averiguar el número de registros que devolvería un tipo de consulta. Por ejemplo: saber el número de clientes de Madrid que han comprado el producto 2015.


Cuantificadores universales

Son aquellos que indican que una condición se aplica a todas las filas de algún tipo. Se usa para brindar la misma capacidad que la operación división del álgebra relacional.

  VARIABLES

Una variable es un nombre asociado a un elemento de datos que está situado en posiciones contiguas de la memoria principal, y su valor puede cambiar durante la ejecución de un programa.
    Declaración de variables
Esta es la primera fase en la vida de cualquier variable. La declaración se realiza en la sección que comienza con la palabra var.
Iniciación de variables
Esto no es más que darle un valor inicial a una variable. Así como lo primero que se hace con una variable es declararla, lo siguiente tiene que ser iniciarla.
Utilización de variables
Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que presenta un mayor abanico de posibilidades.

CONSTANTES

Una constante es un dato cuyo valor no puede cambiar durante la ejecución del programa. Recibe un valor en el momento de la compilación y este permanece inalterado durante todo el programa.
Constantes literales
Son valores de cualquier tipo que se utilizan directamente, no se declaran ya que no tienen nombre.
Constantes declaradas
También llamadas constantes con nombre, son las que se declaran en la sección const asignándoles un valor directamente.
Constantes expresión
También se declaran en la sección const, pero a estas no se les asigna un valor directamente, sino que se les asigna una expresión. Esta expresión se evalúa en tiempo de compilación y el resultado se le asigna a la constante.

TIPOS DE CÁLCULO RELACIONAL


Calculo relacional orientado a tuplas:  Se procesan tuplas de una o más relaciones SQL orientado a la tupla utilizando nombres de relación y etiquetas como variables de tupla.
Calculo relacional orientado a los dominios:  Variables de tupla se reemplazan por variables de dominio „ Se procesan dominios que alcanzan una o más relaciones.

Tuplas

Una tupla se define como una función finita que asocia unívocamente los nombres de los atributos de una relación con los valores de una instanciación de la misma. En términos simplistas, es una fila de una tabla relacional.

Cálculo Relacional de Dominios

Es un lenguaje de consulta formal que permite expresar las consultas a partir de fórmulas bien formadas, donde cada variable se interpreta como variante sobre el dominio del atributo de una relación.

SUMMARY

relational calculus
The relational calculus is a query language that describes the desired answer on a database without specifying how to get it, unlike the relational algebra is procedural type, relational calculus is declaratory; but always both methods achieve the same results.
The relational calculus uses a completely different approach to the relational algebra. However, the two languages ​​are logically equivalent. This means that any query that can be resolved in a language can be solved on the other. The solution to all queries in this type of calculation is defined by:
A list of results
A statement of qualification
existential quantifiers
They are those who try to find out the number of records that would return a query type. For example: knowing the number of customers who bought the Madrid 2015 product.
universal quantifiers
They are those that indicate a condition applies to all ranks of some sort. It is used to provide the same capacity as the operation division of relational algebra.
  VARIABLES
A variable is a name associated with a data item that is located in adjacent positions of main memory, and its value can change during the execution of a program.
    Declaration of variables
This is the first phase in the life of any variable. The statement is made in the section that begins with the word var.
Initiation of variables
This is nothing more than give an initial value to a variable. And the first thing that is done is to declare a variable, the following must be start it.
Using variables
Once declared and initiated a variable, it is time to use it. This is the part that has a greater range of possibilities.
CONSTANT
A constant is data whose value can not change during program execution. You receive a value at compile time and it remains unchanged throughout the program.
literals
They are values ​​of any type that are used directly, they not declared because they have no name.
Constants declared
Also called named constants, are those declared in the const section assigning a value directly.
constant expression
also they declared in the const section, but these are not assigned a value directly but are assigned an expression. This expression is evaluated at compile time and the result is assigned to the constant.
TYPES OF relational calculus

relational tuples oriented calculation: tuples of one or more SQL oriented relationship tuple using names and labels as relationships tuple variables are processed.
oriented relational calculus domains: Variables Tuple variables are replaced by domain ?? domains reaching one or more relationships are processed.
tuples
A tuple is defined as a finite function that uniquely associates the names of the attributes of a relationship with the values ​​of an instantiation of it. In simplistic terms, it is a row of a relational table.
Domain Relational Calculus
It is a language that can express formal consultation inquiries from well-formed formulas, where each variable is interpreted as a variant on the domain attribute of a relationship.

RECOMENDACIONES

Para poder realizar un buen cálculo relacional, se debe tener un buen conocimiento del tema ya que es un lenguaje de consulta que describe la respuesta deseada sobre una 

CONCLUSIONES
El cálculo relacional  es un tema muy interesante y muy amplio ya que nos da a conocer los aspectos más concisos, nos explica las características de sus tipos, variables y constantes, además nos da a conocer que el cálculo relacional se apoya en algún lenguaje de interrogación de bases de datos como puede ser el SQL.

GLOSARIO

CUANTIFICADOR: Pala bra que cuantifica a otra, como los numerales o ciertos indefinidos.

Abanico: Forma de un objeto o de una cosa parecida a la de ese utensilio cuando está abierto.

LINKOGRAFÍA













sábado, 21 de mayo de 2016

ÁLGEBRA RELACIONAL

   ÁLGEBRA  RELACIONAL

 El álgebra relacional es un conjunto de operaciones que describen paso a paso cómo computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.

Una característica destacable de todas las operaciones del  álgebra relacional es que tanto los operandos como el resultado son relaciones. Esta propiedad se denomina cierre relacional.
Las operaciones del álgebra relacional han sido clasificadas según distintos criterios; de todos ellos indicamos los tres siguientes:
1)  Según se pueden expresar o no  en términos de otras operaciones.
a)  Operaciones primitivas: son aquellas operaciones a partir de las cuales podemos definir el resto. Estas operaciones son  la unión, la diferencia, el producto cartesiano, la selección y la proyección.
b)  Operaciones no primitivas: el resto  de las operaciones del álgebra relacional  que  no son  estrictamente necesarias, porque se pueden expresar en términos de  las  primitivas; sin embargo, las  operaciones no primitivas permiten formular algunas consultas de forma más  cómoda. Existen distintas versiones del álgebra relacional, según las operaciones no primitivas que  se incluyen. Nosotros estudiaremos las operaciones no primitivas que se utilizan con mayor frecuencia: la intersección y la combinación.

2)  Según el número de relaciones que  tienen como operandos:
a)  Operaciones binarias: son  las que  tienen dos relaciones como operandos. Son binarias todas las operaciones, excepto la selección y la proyección.
b)  Operaciones unarias: son  las que  tienen una sola  relación como operan- do.  La selección y la proyección son  unarias.
3)  Según se parecen o no  a las operaciones de la teoría de conjuntos:
a)  Operaciones conjuntistas: son las  que  se parecen a las  de  la  teoría de conjuntos. Se trata de  la unión, la intersección, la diferencia y el producto cartesiano.

b)  Operaciones específicamente relacionales: son el resto  de las operaciones;
Es decir, la selección, la proyección y   la combinación.

Como ya hemos comentado anteriormente, las operaciones del álgebra relacional obtienen como resultado una nueva relación. Es decir que si hacemos una operación del álgebra como por  ejemplo EMPLEADOS_ADM    EMPLEADOS_PROD para  obtener la unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD, el resultado de la operación es una nueva relación que tiene la unión de las tuplas de las relaciones de partida.

Esta nueva relación debe  tener un nombre. En principio, consideramos que su nombre es la misma expresión del álgebra relacional que  la obtiene; es decir, la misma expresión EMPLEADOS_ADM  EMPLEADOS_PROD. Puesto que  este nombre es largo,  en  ocasiones puede ser interesante cambiarlo por  uno más simple. Esto nos facilitará las referencias a la nueva relación, y será  especialmente útil en los casos en los que  queramos utilizarla como operando de otra operación.
Usaremos la operación auxiliar redenominar con este objetivo.

La operación redenominar, que denotaremos con  el símbolo:=, permite asignar un nombre R a la relación que  resulta de una operación del álgebra relacional; lo hace  de la forma siguiente:

                                                 R:=E,


Siendo E la expresión de una operación del álgebra relacional.

En el ejemplo, para  dar  el nombre EMPLEADOS a la relación resultante de la operación EMPLEADOS_ADM  EMPLEADOS_PROD, haríamos:

EMPLEADOS:= EMPLEADOS_ADM  EMPLEADOS_PROD.

Cada  operación del álgebra relacional da unos nombres por  defecto a los atributos del esquema de la relación resultante, tal y como veremos más adelante.

En algunos casos,  puede ser necesario cambiar estos  nombres por  defecto por otros nombres. Por este motivo, también permitiremos cambiar el nombre de la relación y de sus atributos mediante la operación redenominar.

Utilizaremos también la operación redenominar para  cambiar el esquema de una relación. Si una relación tiene el esquema S (B1, B2, ..., Bn) y queremos cambiarlo por  R (A1, A2, ..., An), lo haremos de la siguiente forma:

               R (A1, A2, ..., An) := S(B1, B2, ..., Bn).


A continuación presentaremos un ejemplo que  utilizaremos para  ilustrar las operaciones del  álgebra relacional. Después veremos con detalle las  operaciones.
Supongamos que  tenemos una base  de  datos relacional con  las  cuatro relaciones siguientes:

1)  La relación EDIFICIOS_EMP, que contiene datos de distintos edificios de los que  una empresa dispone para  desarrollar sus actividades.

2)  La relación DESPACHOS, que  contiene datos de cada  uno de los despachos que  hay en los edificios anteriores.

3)  La relación EMPLEADOS_ADM, que  contiene los datos de los empleados de la empresa que  llevan a cabo  tareas administrativas.

4)  La relación EMPLEADOS_PROD, que  almacena los datos de los empleados de la empresa que  se ocupan de tareas de producción.

A continuación describimos los esquemas de las relaciones anteriores y sus ex- tensiones en un momento determinado:

•  Esquema y extensión de EDIFICIOS_EMP:

                                 EDIFICIOS_EMP
edificio
supmediadesp
Marina
15
                     Diagonal
10




•  Esquema y extensión de DESPACHOS:

DESPACHOS
edificio
mero
superficie
Marina
120
10
Marina
230
20
           Diagonal
120
10
           Diagonal
440
10

•  Esquema y extensión de EMPLEADOS_ADM:

EMPLEADOS_ADM
DNI
nombre
apellido
edificiodesp
merodesp
40.444.255
Juan
García
Marina
120
33.567.711
Marta
Roca
Marina
120


•  Esquema y extensión de EMPLEADOS_PROD:

EMPLEADOS_PROD
DNI
nombreemp
apellidoemp
edificiodesp
merodesp
33.567.711
Marta
Roca
Marina
120
55.898.425
Carlos
Buendía
Diagonal
120
77.232.144
Elena
Pla
Marina
230
21.335.245
Jorge
Soler
NULO
NULO
88.999.210
Pedro
González
NULO
NULO


Se considera que  los valores nulos de los atributos edificiodesp y númerodesp de las relaciones EMPLEADOS_PROD y EMPLEADOS_ADM indican que el empleado correspondiente no  tiene despacho.

     OPERACIONES CONJUNTISTAS


Las operaciones conjuntistas del álgebra relacional son la unión, la intersección, la diferencia y el producto cartesiano.
Unión
La unión es una operación que,  a partir de dos  relaciones, obtiene una nueva relación formada por  todas las tuplas que  están en  alguna de las relaciones de partida.
La unión es una operación binaria, y la unión de dos relaciones T y S se indica T  S.
La unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD proporciona una nueva relación que contiene tanto a los empleados de administración como los empleados de producción; se indicaría así: EMPLEADOS_ADM  EMPLEADOS_PROD.
Sólo tiene sentido aplicar la unión a relaciones que  tengan tuplas similares.
Por ejemplo, se puede hacer la unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD porque sus  tuplas se parecen. En cambio, no se podrá hacer la unión de  las relaciones EMPLEADOS_ADM y DESPACHOS porque, como habéis podido observar en  las tablas, las tuplas respectivas son  de tipo diferente.

Más  concretamente, para  poder aplicar la unión a dos  relaciones, es preciso que  las dos relaciones sean  compatibles. Decimos que  dos relaciones T y S son relaciones compatibles si:

• Tienen el mismo grado.

•  Se puede establecer una biyección entre los atributos de T y los atributos de
S que  hace corresponder a cada  atributo Ai  de  T un atributo Aj  de  S, de modo que  se cumple que  dominio(Ai) = dominio(Aj).

Ejemplo de relaciones compatibles

Las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD tienen grado 5. Podemos establecer la siguiente biyección entre sus atributos:

•  A DNI de EMPLEADOS_ADM le corresponde DNIemp de EMPLEADOS_PROD.

•  A nombre de EMPLEADOS_ADM le corresponde nombreemp de EMPLEADOS_PROD.

•  A apellido de EMPLEADOS_ADM le corresponde apellidoemp de EMPLEADOS_PROD.

•  A edificiodesp de EMPLEADOS_ADM le corresponde edificiodesp de EMPLEADOS_PROD.
•  A númerodesp de EMPLEADOS_ADM le corresponde edificiodesp de EMPLEADOS_PROD.
Además, supondremos que  los dominios de sus atributos se han declarado de forma que  se cumple que el dominio de cada atributo de EMPLEADOS_ADM sea el mismo que el dominio de su atributo correspondiente en EMPLEADOS_PROD.

Por  todos  estos factores, podemos  llegar   a  la  conclusión de  que   EMPLEADOS_ADM  y
EMPLEADOS_PROD son relaciones compatibles.

A continuación, pasaremos a definir los atributos y la extensión de la relación resultante de una unión:


Los atributos del  esquema de  la relación resultante de  T  S coinciden con los atributos del esquema de la relación T.

La extensión de  la  relación resultante de  T  S es el conjunto de tuplas que  pertenecen a la extensión de T, a la extensión de S o a la extensión  de ambas relaciones.


Ejemplo de unión
Si queremos obtener una relación R que  tenga a todos los  empleados de  la empresa del ejemplo anterior, llevaremos a cabo  la unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente:

R:= EMPLEADOS_ADM  EMPLEADOS_PROD.

Entonces la relación R resultante será la reflejada en la tabla siguiente:
R
DNI
nombre
apellido
edificiodesp
merodesp
40.444.255
Juan
García
Marina
120
33.567.711
Marta
Roca
Marina
120
55.898.425
Carlos
Buendía
Diagonal
120




R
DNI
nombre
apellido
edificiodesp
merodesp
77.232.144
Elena
Pla
Marina
230
21.335.245
Jorge
Soler
NULO
NULO
88.999.210
Pedro
González
NULO
NULO




El hecho de que  los atributos de la relación resultante coincidan con los atributos de la relación que figura  en primer lugar  en la unión es una convención; teóricamente, también habría sido  posible convenir que  coincidiesen con  los de la relación que figura en segundo lugar.
Intersección

La intersección es una operación que,  a partir de dos relaciones, obtiene una nueva relación formada por  las tuplas que  pertenecen a las dos  relaciones de partida.

La intersección es una operación binaria; la intersección de dos relaciones T y S se indica T ∩ S.

La intersección de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD obtiene una nueva relación que  incluye a los empleados que son  al mismo tiempo de administración y de producción:
se indicaría como EMPLEADOS_ADM ∩ EMPLEADOS_PROD.
La intersección, como la unión, sólo  se puede aplicar a relaciones que  tengan tuplas similares. Para poder hacer la intersección de dos relaciones, es preciso, pues, que  las relaciones sean  compatibles.

A continuación definiremos los atributos y la extensión de la relación resultante de una intersección.

Los atributos del  esquema de  la relación resultante de  T ∩ S coinciden con los atributos del esquema de la relación T.

La extensión de  la relación resultante de  T ∩ S es el conjunto de tuplas que  pertenecen a la extensión de ambas relaciones.
Ejemplo  de intersección

Si queremos obtener una relación R que  incluya a todos los empleados de la empresa del ejemplo que  trabajan tanto en administración como en producción, realizaremos la inter- sección de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente:

                                   R: = EMPLEADOS_ADM ∩ EMPLEADOS_PR  
  
Entonces, la relación R resultante será:

R
DNI
nombre
apellido
edificiodesp
merodesp
33.567.711
Marta
Roca
Marina
120

Observad que  se ha tomado la convención de que  los atributos de la relación que resulta coincidan con los atributos de la relación que figura  en primer lugar.

Diferencia
La diferencia es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que  están en la primera relación y, en cambio, no están en la segunda. La diferencia es una operación binaria, y la diferencia entre las relaciones T y S se indica como T – S.

La diferencia EMPLEADOS_ADM menos EMPLEADOS_PROD da como resultado una nueva re- lación que contiene a los empleados de administración que no son empleados de producción, y se indicaría de este modo: EMPLEADOS_ADM – EMPLEADOS_PROD.

La diferencia, como ocurría en la unión y la intersección, sólo tiene sentido si se aplica a relaciones que  tengan tuplas similares. Para  poder realizar la diferencia de dos relaciones es necesario que  las relaciones sean  compatibles.
A continuación definimos los atributos y la extensión de la relación resultante de una diferencia.
Los atributos del  esquema de  la  relación resultante de  T – S coinciden con los atributos del esquema de la relación T.

La extensión de la relación resultante de T – S es el conjunto de tuplas que  pertenecen a la extensión de T, pero  no  a la de S.

Ejemplo de diferencia

Si queremos obtener una relación R con  todos los empleados de la empresa del ejemplo que trabajan en administración, pero  no en producción, haremos la diferencia de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente:

                       R:= EMPLEADOS_ADM – EMPLEADOS_PROD

Entonces la relación R resultante será:

R
DNI
nombre
apellido
edificiodesp
merodesp
40.444.255
Juan
García
Marina
120

Se ha tomado la convención de que  los atributos de la relación resultante como incidan con  los atributos de la relación que  figura  en primer lugar.

Producto cartesiano

El producto cartesiano es una operación que,  a partir de dos relaciones, obtiene una nueva relación formada por  todas las tuplas que  resultan de concatenar tuplas de la primera relación con tuplas de la segunda.

El producto cartesiano es una operación binaria. Siendo T y S dos  relaciones que  cumplen que  sus  esquemas no  tienen ningún nombre de atributo común, el producto cartesiano de T y S se indica como T × S.

Si calculamos el producto cartesiano de EDIFICIOS_EMP y DESPACHOS, obtendremos una nueva relación que contiene todas las concatenaciones posibles de tuplas de EDIFICIOS_EMP con  tuplas de DESPACHOS.

Si se quiere calcular el producto cartesiano de dos relaciones que  tienen algún nombre de atributo común, sólo hace  falta redenominar previamente los atributos adecuados de una de las dos relaciones.

A continuación definimos los atributos y la extensión de la relación resultante de un producto cartesiano.



Los atributos del  esquema de la relación resultante de T × S son todos los atributos de T y todos los atributos de S*.

La extensión de la relación resultante de T × S es el conjunto de todas las tuplas de la forma <v1, v2, … vn, w1, w2, ..., wm> para  las que  se cum- ple que  <v1, v2, ..., vn> pertenece a la extensión de T y que  <w1, w2, ..., wm> pertenece a la extensión de S.

Ejemplo de producto cartesiano

El producto cartesiano de las relaciones DESPACHOS y EDIFICIOS_EMP del ejemplo se puede hacer como se indica (es necesario redenominar atributos previamente):

EDIFICIOS (nombreedificio, supmediadesp):= EDICIOS_EMP(edificio, supmediadesp).

R:= EDIFICIOS × DESPACHOS.

Entonces, la relación R resultante será:

R
nombreedificio
supmediadesp
edificio
número
superficie
Marina
15
Marina
120
10
Marina
15
Marina
230
20
Marina
15
Diagonal
120
10
Marina
15
Diagonal
440
10
Diagonal
10
Marina
120
10

R
nombreedificio
supmediadesp
edificio
mero
superficie
Diagonal
10
Marina
230
20
Diagonal
10
Diagonal
120
10
Diagonal
10
Diagonal
440
10

Conviene señalar que  el producto cartesiano es una operación que  raramente se utiliza de forma explícita, porque el resultado que  da no  suele  ser útil para resolver las consultas habituales.

A pesar  de ello,  el producto cartesiano se incluye en el álgebra relacional por- que  es una operación primitiva; a partir de la cual se define otra operación del álgebra, la combinación, que se utiliza con mucha frecuencia.

 OPERACIONES ESPECÍFICAMENTE                         RELACIONALES


Las operaciones específicamente relacionales son la selección, la proyección y la combinación.

Selección

Podemos ver la selección como una operación que  sirve  para  elegir  algunas tuplas de una relación y eliminar el resto. Más concretamente, la selección es una operación que,  a partir de  una relación, obtiene una nueva relación formada por  todas las  tuplas de  la relación de  partida que  cumplen una condición de selección especificada.
La selección es una operación unaria. Siendo C una condición de  se- lección, la selección de T con la condición C se indica como T(C).
Para obtener una relación que tenga todos los despachos del edificio Marina que tienen más de 12 metros cuadrados, podemos aplicar una selección a la relación DESPACHOS con  una condición de  selección que  sea  edificio  =  Marina y  superficie  > 12;  se  indicaría DESPA- CHOS(edificio = Marina y superficie > 12).
En general, la condición de selección C está  formada por  una o más  cláusulas de la forma:


           Ai θ v,
O bien:


                                                                  Ai θ Aj,

Donde Ai y Aj son atributos de la relación T, θ es un operador de comparación* y v es un valor. Además, se cumple que:

•  En las cláusulas de la forma Ai θ v, v es un valor  del dominio de Ai.

•  En las cláusulas de la forma Ai, θ Aj, Ai y Aj tienen el mismo dominio.


Las cláusulas que  forman una condición de selección se conectan con  los siguientes operadores booleanos: “y” () y “o” ().

A continuación definimos los atributos y la extensión de la relación resultante de una selección.

Los atributos del  esquema de la relación resultante de T(C) coinciden con  los atributos del esquema de la relación T.

La extensión de la relación resultante de T(C) es el conjunto de tuplas que  pertenecen a la extensión de T y que  satisfacen la condición de selección C. Una tupla t satisface una condición de selección C si, después de sustituir cada  atributo que  hay en C por  su valor  en t, la condición C se evalúa en el valor  cierto.

Ejemplo de selección
Si queremos obtener una relación R con  los despachos de la base de datos del ejemplo que están en el edificio Marina y que  tienen una superficie de más de 12 metros cuadrados, ha- remos la siguiente selección:

                             R:= DESPACHOS (edificio = Marina y superficie > 12).

La relación R resultante será:

R
edificio
mero
superficie
Marina
230
20



Proyección

Podemos considerar la proyección como una operación que  sirve  para elegir  algunos atributos de una relación y eliminar el resto. Más concretamente, la proyección es una operación que,  a partir de una relación, obtiene una nueva relación formada por  todas las (sub)tuplas de la relación de partida que  resultan de eliminar unos atributos especificados.
                                                   

La proyección es una operación unaria. Siendo {Ai, Aj, ..., Ak} un  subconjunto de los atributos del esquema de la relación T, la proyección de T sobre  {Ai, Aj, ..., Ak} se indica como T[Ai, Aj, ..., Ak].

Para obtener una relación que tenga sólo los atributos nombre y apellido de los empleados de administración, podemos hacer una proyección en la relación EMPLEADOS_ADM sobre estos dos atributos. Se indicaría de la forma siguiente: EMPLEADOS_ADM [nombre, apellido].

A continuación definiremos los atributos y la extensión de la relación resultante de una proyección.



Los atributos del  esquema de la relación resultante de T[Ai,  Aj, ...,Ak]
son los atributos {Ai, Aj, ..., Ak}.

La extensión de la relación resultante de T[Ai, Aj, ..., Ak] es el conjunto de todas las tuplas de la forma <t.Ai,  t.Aj,  ..., t.Ak>,  donde se cumple que t es una tupla de la extensión de T y donde t.Ap  denota el valor  para el atributo Ap de la tupla t.



Ejemplo de proyección

Si queremos obtener una relación R con  el nombre y el apellido de todos los empleados de administración de la base de datos del ejemplo, haremos la siguiente proyección:

R:= EMPLEADOS_ADM [nombre, apellido]. Entonces, la relación R resultante será:
R
nombre
apellido
Juan
García
Marta
Roca

Combinación
La combinación es una operación que,  a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concadenar tuplas de la primera relación con tuplas de  la segunda, y que cumplen una condición de combinación especificada.
La combinación es una operación binaria. Siendo T y S dos  relaciones cuyos  esquemas no tienen ningún nombre de atributo común, y siendo B una condición de combinación, la combinación de T y S según la condición B se indica T[B]S.
Para conseguir una relación que  tenga los datos de cada  uno de los empleados de administración junto con los datos de los despachos donde trabajan, podemos hacer una combinación de  las  relaciones EMPLEADOS_ADM  y  DESPACHOS,  donde la  condición de combinación indique lo siguiente: edificiodesp = edificio y númerodesp = número. La condi- ción de combinación hace que  el resultado sólo  combine los datos de un empleado con los datos de un despacho si el edificiodesp y el númerodesp del empleado son  iguales  que el edificio y el número del despacho, respectivamente. Es decir,  la condición hace  que los datos de un empleado se combinen con los datos del  despacho donde trabaja, pero  no con datos de otros despachos.

La combinación del ejemplo anterior se indicaría de la forma siguiente:

EMPLEADOS_ADM [edificiodesp = edificio, númerodesp = número] DESPACHOS.

Si se quiere combinar dos relaciones que  tienen algún nombre de atributo común, sólo  hace falta redenominar previamente los atributos repetidos de una de las dos.


En general, la condición B de una combinación T[B]S está formada por  una o más  comparaciones de la forma


                                                 Ai θ Aj,


Donde Ai es un atributo de la relación T, Aj es un atributo de la relación S, θ es un operador de comparación ( =, ≠, <, ≤, >, ≥), y se cumple que  Ai y Aj tienen el mismo dominio. Las comparaciones de una condición de combinación  se separan mediante comas.


A continuación definimos los atributos y la extensión de la relación resultante de una combinación.



Los atributos del  esquema de  la relación resultante de T[B]S  son  to- dos los atributos de T y todos los atributos de S*.


La extensión de  la relación resultante de  T[B]S  es el conjunto de tuplas  que  pertenecen a la extensión del producto cartesiano T × S y que satisfacen todas las comparaciones que  forman la condición de combinación B. Una tupla t satisface una comparación si, después de sustituir cada  atributo que  figura  en la comparación por  su valor  en t, la compa- ración se evalúa al valor  cierto.

R:= EDIFICIOS[nombreedificio = edificio, supmediadesp  ≤ superficie] DESPACHOS.

Entonces, la relación R resultante será:


R
nombreedificio
supmediadesp
edificio
mero
superficie
Marina
15
Marina
230
20
Diagonal
10
Diagonal
120
10
Diagonal
10
Diagonal
440
10

Supongamos ahora que para  obtener los datos de cada uno de los empleados de administración, junto con los datos del despacho donde trabajan, utilizamos la siguiente combinación:

R:= EMPLEADOS_ADM [edificiodesp = edificio, númerodesp = número]DESPACHOS.

 La relación R resultante será:


R
DNI
nombre
apellido
edificiodesp
merodesp
edificio
número
superficie
40.444.255
Juan
García
Marina
120
Marina
120
10
33.567.711
Marta
Roca
Marina
120
Marina
120
10

La relación R combina los datos de cada  empleado con  los datos de su despacho.

En ocasiones, la combinación recibe el nombre de θ-combinación, y cuando todas las comparaciones de la condición de la combinación tienen el operador “=”, se denomina equicombinación.

Según esto,  la combinación del último ejemplo es una equicombinación.

Observad que  el  resultado de  una equicombinación siempre incluye una o más  parejas de atributos que  tienen valores idénticos en todas las tuplas.

En el ejemplo anterior, los valores de edificiodesp coinciden con los de edificio, y los valores de
númerodesp coinciden con  los de número.

Puesto que  uno de cada  par  de atributos es superfluo, se ha establecido una variante de  combinación denominada combinación natural,  con el  fin  de eliminarlos.

La combinación natural de dos  relaciones T y S se denota como T * S  y consiste básicamente en una equicombinación seguida de la eliminación de los atributos superfluos; además, se considera por  defecto que la condición de combinación iguala todas las parejas de atributos que tienen el mismo nombre en T y en S.

Observad que,  a diferencia de la equicombinación, la combinación natural se aplica a relaciones que  tienen nombres de atributos comunes.
Ejemplo de combinación natural

Si hacemos:

                R:= EDIFICIOS_EMP * DESPACHOS,

Se considera que  la condición es edificio = edificio porque edificio es el único nombre de atributo que figura tanto en el esquema de EDIFICIOS_EMP como en el esquema de DESPACHOS. El resultado de esta combinación natural es:

R
edificio
supmediadesp
mero
superficie
Marina
15
120
10
Marina
15
230
20
Diagonal
10
120
10
Diagonal
10
440
10

Notar que  se ha eliminado uno de los atributos de nombre edificio.
En ocasiones, antes de  la combinación natural es necesario aplicar la operación redenominar para  hacer coincidir los nombres de los atributos que  nos  interesa igualar.


Ejemplo de combinación natural con redenominación

Por ejemplo, si queremos obtener los datos de cada uno de los empleados de administración junto con  los datos del despacho donde trabajan pero  sin repetir valores de atributos superfluos,  haremos la siguiente combinación natural, que requiere una redenominación previa:

 D (edificiodesp, númerodesp, superficie):= DESPACHOS (edificio, número, superficie),

                          R:= EMPLEADOS_ADM * D.

Entonces, la relación R resultante será:

R
DNI
nombre
apellido
edificiodesp
merodesp
superficie
40.444.255
Juan
García
Marina
120
10
33.567.711
Marta
Roca
Marina
120
10



SECUENCIAS DE OPERACIONES DEL ÁLGEBRA RELACIONAL
En muchos casos,  para  formular una consulta en álgebra relacional es preciso utilizar varias  operaciones, que  se aplican en  un cierto orden. Para hacerlo, hay dos posibilidades:


1)  Utilizar una sola  expresión del  álgebra que  incluya todas las operaciones con los paréntesis necesarios para  indicar el orden de aplicación.


2)  Descomponer la expresión en varios  pasos  donde cada  paso  aplique una sola operación y obtenga una relación intermedia que se pueda utilizar en los pasos  subsiguientes.


Ejemplo de utilización de secuencias de operaciones

Para obtener el nombre y el apellido de los empleados, tanto de administración como de producción, es necesario hacer una unión de EMPLEADOS_ADM y EMPLEADOS_PROD, y después  hacer una proyección sobre  los  atributos nombre  y apellido.  La operación se puede expresar de las formas siguientes:

a) Se puede utilizar una sola expresión:

R:= (EMPLEADOS_ADM  EMPLEADOS_PROD) [nombre, apellido].

b) O bien podemos expresarlo en dos pasos:

•  EMPS := EMPLEADOS_ADM  EMPLEADOS_PROD;

•  R:= EMPS[nombre, apellido]


En los casos en que  una consulta requiere efectuar muchas operaciones, resulta más sencilla la segunda alternativa, porque evita expresiones complejas.
Otros ejemplos de consultas formuladas con secuencias de operaciones

Veamos algunos ejemplos de consultas en la base de datos formuladas con secuencias de operaciones del álgebra relacional.

1) Para obtener el nombre del edificio y el número de los despachos situados en edificios en los que la superficie media de estos despachos es mayor que 12, podemos utilizar la siguiente secuencia de operaciones:

•  A:= EDIFICIOS_EMP (supmediadesp > 12);
•  B:= DESPACHOS * A;
•  R:= B [edificio, número]

2) Supongamos ahora que  se desea  obtener el nombre y el apellido de todos los empleados (tanto de administración como de producción) que están asignados al despacho 120 del edificio Marina. En este caso, podemos utilizar la siguiente secuencia:

•  A:= EMPLEADOS_ADM  EMPLEADOS_PROD;
•  B:= A (edificiodesp = Marina y númerodesp = 120);
•  R:= B [nombre, apellido].

3) Si queremos consultar el nombre del edificio y el número de los despachos que  ningún empleado de administración tiene asignado, podemos utilizar esta secuencia:

•  A:= DESPACHOS [edificio, número];
•  B:= EMPLEADOS_ADM[edificiodesp, númerodesp];
•  R:= A – B.

4) Para obtener el DNI, el nombre y el apellido de todos los empleados de administración que tienen despacho, junto con  la superficie de su despacho, podemos hacer lo siguiente:

•  A[DNI, nombre, apellido, edificio, número]:= EMPLEADOS_ADM[DNI, nombre, apellido, edificiodesp, númerodesp];
•  B:= A * DESPACHOS;
•  R:= B[DNI, nombre, apellido, superficie].




Extensiones: combinaciones externas
Para finalizar el tema del álgebra relacional, analizaremos algunas extensiones útiles de la combinación.

Las combinaciones que se han descrito obtienen las tuplas del producto cartesiano de dos relaciones que satisfacen una condición de combinación. Las tuplas de una de las dos relaciones que  no  tienen en la otra relación una tupla como mínimo con la cual,  una vez concatenadas, satisfagan la condición de combinación, no aparecen en el resultado de la combinación, y podríamos decir  que  sus datos se pierden.


Por ejemplo, si hacemos la siguiente combinación natural (con una redenominación previa): 
D (edificiodesp, númerodesp, superficie):= DESPACHOS (edificio, número, superficie),
R:= EMPLEADOS_PROD * D.

Puesto que se trata de una combinación natural, se considera que  la condición de combinación  es edificio = edificio y número = número, y la relación R resultante será:
R
DNIemp
nombreemp
apellidoemp
edificiodesp
númerodesp
superficie
33.567.711
Marta
Roca
Marina
120
10
55.898.425
Carlos
Buendía
Diagonal
120
10
77.232.144
Elena
Pla
Marina
230
20

Notar que en esta relación R no están los empleados de producción que no tienen despacho asignado (con valores nulos en edificiodesp y númerodesp),  y tampoco los despachos que  no tienen ningún empleado de producción, porque no cumplen la condición de combinación.
Conviene destacar que las tuplas que tienen un valor nulo para alguno de los atributos que figuran en la condición de combinación se pierden siempre, porque en estos  casos la condición de combinación siempre se evalúa a falso.
En algunos casos,  puede interesar hacer combinaciones de los datos de dos relaciones sin que  haya pérdida de datos de las relaciones de partida. Entonces, se utilizan las combinaciones externas.

Las combinaciones externas entre dos relaciones T y S consisten en variantes de combinación que  conservan en  el resultado todas las tuplas de T, de S o de ambas relaciones. Pueden ser de los tipos siguientes:

1)  La combinación externa izquierda entre dos  relaciones T y S, que denotamos como T[C]IS, conserva en el resultado todas las tuplas de la relación T.


2)  La combinación externa derecha entre dos  relaciones T y S, que denotamos como T[C]DS,  conserva en  el resultado todas las tuplas de la relación S.


3)  Finalmente, la combinación externa plena entre dos  relaciones T y S, que  denotamos como T[C]pS, conserva en el resultado todas las tuplas de T y todas las tuplas de S.

Estas extensiones también se aplican al caso de la combinación natural entre dos relaciones, T * S, concretamente:

a)  La combinación natural externa izquierda entre dos  relaciones T y S, que se indica como T *I S, conserva en el resultado todas las tuplas de la relación T.

b)  La combinación natural externa derecha entre dos relaciones T y S, que  se indica como T *D S, conserva en el resultado todas las tuplas de la relación S.
c)  Finalmente, la combinación natural externa plena entre dos relaciones T y S, que  se indica como T *P S, conserva en el resultado todas las tuplas de T y todas las tuplas de S.

Las tuplas de una relación T que  se conservan en el resultado R de una combi- nación externa con otra  relación S, a pesar  de que  no  satisfacen la condición de combinación, tienen valores nulos en el resultado R para todos los atributos que provienen de la relación S.

Ejemplos de combinaciones naturales externas

1)    Si hacemos la siguiente combinación natural derecha (con una redenominación previa):
D (edificiodesp, númerodesp, superficie) := DESPACHOS (edificio, número, superficie),
                          
 R:= EMPLADOS_PROD *D
La relación R resultante será:

R
DNIemp
nombreemp
apellidoemp
edificiodesp
númerodesp
superficie
33.567.711
Marta
Roca
Marina
120
10
55.898.425
Carlos
Buendía
Diagonal
120
10
77.232.144
Elena
Pla
Marina
230
20
NULO
NULO
NULO
Diagonal
440
10

Ahora obtenemos todos los despachos en la relación resultante, tanto si tienen un empleado de producción asignado como si no. Notad que  los atributos DNI, nombre y apellido para  los despachos que  no tienen empleado reciben valores nulos.

2) Si hacemos la siguiente combinación natural izquierda (con una redenominación previa):
D (edificiodesp, númerodesp, superficie):= DESPACHOS (edificio, número, superficie),

R:= EMPLEADOS_PROD *I D,
Entonces la relación R resultante será:

R
DNIemp
nombreemp
apellidoemp
edificiodesp
númerodesp
superficie
33.567.711
Marta
Roca
Marina
120
10
55.898.425
Carlos
Buendía
Diagonal
120
10

77.232.144

Elena

Pla

Marina

230

20
21.335.245
Jorge
Soler
NULO
NULO
NULO
88.999.210
Pedro
González
NULO
NULO
NULO

Esta combinación externa nos permite obtener en la relación resultante a todos los empleados de producción, tanto si tienen despacho como si no. Observad que el atributo superficie para  los empleados que no tienen despacho contiene un valor  nulo.

3) Finalmente, si hacemos la siguiente combinación natural plena (con una redenominación previa):

D (edificiodesp, númerodesp, superficie):= DESPACHOS (edificio, número, superficie),
                
  R:= EMPLEADOS_PROD *P D,

 Entonces la relación R resultante será:
R
DNIemp
nombreemp
apellidoemp
edificiodesp
númerodesp
superficie
33.567.711
Marta
Roca
Marina
120
10
55.898.425
Carlos
Buendía
Diagonal
120
10
77.232.144
Elena
Pla
Marina
230
20
21.335.245
Jorge
Soler
NULO
NULO
NULO
88.999.210
Pedro
González
NULO
NULO
NULO
NULO
NULO
NULO
Diagonal
440
10


En este caso, en la relación resultante obtenemos a todos los empleados de producción y también todos los despachos


RESUMEN

         ALGEBRA  RELACIONAL

El álgebra relacional es un conjunto de operaciones que describen paso a paso cómo computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.

      OPERACIONES CONJUNTISTAS

Las operaciones conjuntistas del álgebra relacional son la unión, la intersección, la diferencia y el producto cartesiano.
Unión
La unión es una operación que,  a partir de dos  relaciones, obtiene una nueva relación formada por  todas las tuplas que  están en  alguna de las relaciones de partida.
Intersección
La intersección es una operación que,  a partir de dos relaciones, obtiene una nueva relación formada por  las tuplas que  pertenecen a las dos  relaciones de partida.
Diferencia
Es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que  están en la primera relación y, en cambio, no están en la segunda.
Producto cartesiano
El producto cartesiano es una operación que,  a partir de dos relaciones, obtiene una nueva relación formada por  todas las tuplas que  resultan de concatenar tuplas de la primera relación con tuplas de la segunda.

    OPERACIONES ESPECÍFICAMENTE RELACIONALES

Las operaciones específicamente relacionales son la selección, la proyección y la combinación.

Selección
Podemos ver la selección como una operación que  sirve  para  elegir  algunas tuplas de una relación y eliminar el resto. Más concretamente, la selección es una operación que,  a partir de  una relación, obtiene una nueva relación formada por  todas las  tuplas de  la relación de  partida que  cumplen una condición de selección especificada.
Proyección
Podemos considerar la proyección como una operación que  sirve  para elegir  algunos atributos de una relación y eliminar el resto. Más concretamente, la proyección es una operación que,  a partir de una relación, obtiene una nueva relación formada por  todas las (sub)tuplas de la relación de partida que  resultan de eliminar unos atributos especificados.
Combinación
La combinación es una operación que,  a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concadenar tuplas de la primera relación con tuplas de  la segunda, y que cumplen una condición de combinación especificada.

 SECUENCIAS DE OPERACIONES DEL ÁLGEBRA RELACIONAL
En muchos casos,  para  formular una consulta en álgebra relacional es preciso utilizar varias  operaciones, que  se aplican en  un cierto orden. Para hacerlo, hay dos posibilidades:
1)  Utilizar una sola  expresión del  álgebra que  incluya todas las operaciones con los paréntesis necesarios para  indicar el orden de aplicación.
2)  Descomponer la expresión en varios  pasos  donde cada  paso  aplique una sola operación y obtenga una relación intermedia que se pueda utilizar en los pasos  subsiguientes.
Extensiones: combinaciones externas
Para finalizar el tema del álgebra relacional, analizaremos algunas extensiones útiles de la combinación.
Las combinaciones que se han descrito obtienen las tuplas del producto cartesiano de dos relaciones que satisfacen una condición de combinación. Las tuplas de una de las dos relaciones que  no  tienen en la otra relación una tupla como mínimo con la cual,  una vez concatenadas, satisfagan la condición de combinación, no aparecen en el resultado de la combinación, y podríamos decir  que  sus datos se pierden.

SUMMARY
RELATIONAL ALGEBRA
The relational algebra is a set of operations that describe step by step how to compute an answer about relationships, as they are defined in the relational model. Denominated of procedural type, unlike Relational Calculus which is declaratory.
Describes the appearance of data manipulation. These operations are used as an intermediate representation of a query to a database and, because of its algebraic properties serve for a more streamlined and efficient version of such consultation.
set operations
The set operations of relational algebra are union, intersection, difference and Cartesian product.
Union
The union is an operation, from two relations, obtained a new relationship formed by all tuples that are in any of the relationships of departure.
Intersection
The intersection is an operation, from two relations, obtained a new relationship formed by the tuples belonging to the two starting relationships.

Difference
It is an operation, from two relations, obtained a new relationship formed by all tuples that are in the first list and, instead, are not in the second.
Cartesian product
The Cartesian product is an operation, from two relations, obtained a new relationship formed by all tuples that result from concatenating tuples of the first relation with tuples of the second.
SPECIFICALLY relational operations

The specifically relational operations are selection, projection and combination.

Selection
We can see the selection as an operation that serves to choose some tuples of a relationship and eliminate the rest. More specifically, the selection is an operation that, from a relationship, get a new relationship formed by all tuples of the relationship starting to meet a condition specified selection.

Projection
We can consider the projection as an operation that is used to select some attributes of a relationship and eliminate the rest. More specifically, the projection is an operation that, from a relationship obtains a new relationship formed by all (sub) tuples of the relation that are starting to remove a specified attribute.
Combination
The combination is an operation, from two relations, obtained a new relationship formed by all tuples that result from concatenating tuples of the first relation with tuples of the second, and that meet a condition specified combination.
STRINGS relational algebra operations
In many cases, to formulate a query in relational algebra is necessary to use several operations, which are applied in a certain order. To do this, there are two possibilities:
1) Use a single expression of algebra that includes all necessary operations with parentheses to indicate the order of application.
2) Decompose the expression of several steps where each step apply a single operation for an intermediate relationship that can be used in subsequent steps.
Extensions: Outer Joins
To end the issue of relational algebra, we discuss some useful extensions of the combination.
Combinations obtained as described tuples of the Cartesian product of two relationships that satisfy a condition of combination. Tuples of one of the two relationships that do not have in the other relationship tuple least with which, once concatenated, satisfy the join condition do not appear in the result of the combination, and we could say that their data is lost .
RECOMENDACIONES
Para poder realizar una buena computación de relación, se debe tener un buen conocimiento del tema ya que así nos conllevara a poder realizar operaciones se usan como una representación intermedia de una consulta a una base de datos.
CONCLUSIONES
El álgebra relacional  es un tema muy interesante y muy amplio ya que nos da a conocer los aspectos más concisos y nos conlleva a poder realizar una buena relación en una base datos.

GLOSARIO
Combinación: Operación del álgebra relacional que,  a partir de dos relaciones, obtiene una nueva relación formada por  todas las tuplas que  resultan de  concatenar tuplas de  la primera relación con tuplas de la segunda relación, y que  cumplen una condición de combinación especificada.

Combinación externa: Extensión de combinación entre dos relaciones, T y S, que  conserva en el resultado todas las tuplas de T, de S o de las dos relaciones.
Combinación natural: Variante de combinación que  consiste básicamente en  una equicombinación seguida de la eliminación de los atributos superfluos.

Consulta: Obtención de datos deducibles a partir de las relaciones que  contiene la base de datos.

Diferencia: Operación del álgebra relacional que,  a partir de dos relaciones, obtiene una nueva relación formada por  todas las tuplas que  están en  la primera relación y, en  cambio, no  están en  la segunda.

Proyección: operación del  álgebra relacional que,  a partir de una relación, obtiene una nueva relación formada por todas las (sub)tuplas de la relación de partida que resultan de eliminar unos atributos especificados.

LINKOGRAFÁ