Operaciones en el Modelo de Datos Relacional

En la sección previa (Formalidades del Modelo Relacional de Datos) definimos la noción matemática del modelo relacional. Ahora conocemos como los datos pueden almacenarse utilizando un modelo de datos relacional, pero no conocemos qué podemos hacer con todas estas tablas para recuperar algo desde esa base de datos todavía. Por ejemplo, alguien podría preguntar por los nombre de todos los proveedores que vendan el artículo 'tornillo'. Hay dos formas diferentes de notaciones para expresar las operaciones entre relaciones.

Álgebra Relacional

El Álgebra Relacional fue introducida por E.F.Codd en 1972. Consiste en un conjunto de operaciones con las relaciones.

Para una descripción y definición más detallada del Álgebra Relacional diríjanse a [Ullman, 1988] o [Date, 1994].

Ejemplo 61-3. Una consulta utilizando Álgebra Relacional

Recalcar que hemos formulado todos estos operadores relacionales como capaces de recuperar datos de la base de datos. Volvamos a nuestro ejemplo de la sección previa (Operaciones en el Modelo de Datos Relacional) donde alguien quería conocer los nombres de todos los proveedores que venden el artículo Tornillos. Esta pregunta se responde utilizando el álgebra relacional con la siguiente operación:

πSUPPLIER.SNAMEPART.PNAME='Tornillos'(SUPPLIER ∏ SELLS ∏ PART))
      

Llamamos a estas operaciones una consulta. Si evaluamos la consulta anterior contra las tablas de nuestro ejemplo (La Base de Datos de Proveedores y Artículos) obtendremos el siguiente ejemplo:

                             SNAME
                            -------
                             Smith
                             Adams
      

Cálculo Relacional

El Cálculo Relacional se basa en la lógica de primer orden. Hay dos variantes del cálculo relacional:

Discutiremos sólo el cálculo relacional de tuplas porque es el único utilizado por la mayoría de lenguajes relacionales. Para una discusión detallada de DRC (y también de TRC) vea [Date, 1994] o [Ullman, 1988].

Cálculo Relacional de Tuplas

Las consultas utilizadas en TRC tienen el siguiente formato: x(A) ∣ F(x) donde x es una variable de tipo tupla, A es un conjunto de atributos y F es una fórmula. La relación resultante consiste en todas las tuplas t(A) que satisfagan F(t).

Si queremos responden la pregunta del ejemplo Una consulta utilizando Álgebra Relacional utilizando TRC formularemos la siguiente consulta:

     {x(SNAME) ∣ x ∈ SUPPLIER ∧ \nonumber
                       ∃ y ∈ SELLS ∃ z ∈ PART (y(SNO)=x(SNO) ∧ \nonumber
                        z(PNO)=y(PNO) ∧ \nonumber
                        z(PNAME)='Tornillos')} \nonumber
     

Evaluando la consulta contra las tablas de La Base de Datos de Proveedores y Artículos encontramos otra vez el mismo resultado de Una consulta utilizando Álgebra Relacional.

Álgebra Relacional contra Cálculo Relacional

El álgebra relacional y el cálculo relacional tienen el mismo poder de expresión; es decir, todas las consultas que se pueden formular utilizando álgebra relacional pueden también formularse utilizando el cálculo relacional, y viceversa. Esto fue probado por E. F. Codd en 1972. Este profesor se basó en un algoritmo ("algoritmo de reducción de Codd") mediante el cual una expresión arbitraria del cálculo relacional se puede reducir a la expresión semánticamente equivalente del álgebra relacional. Para una discusión más detallada sobre este punto, diríjase a [Date, 1994] y [Ullman, 1988].

Se dice a veces que los lenguajes basados en el cálculo relacional son de "más alto nivel" o "más declarativos" que los basados en el álgebra relacional porque el álgebra especifica (parcialmente) el orden de las operaciones, mientras el cálculo lo traslada a un compilador o interprete que determina el orden de evaluación más eficiente.