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.

Algebra Relacional

El Algebra Relacional fue introducida por E.F.Codd en 1972. Consiste en un conjunto de operariones con las relaciones.

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

Example 2-3. Una Query utilizando Algebra 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 algebra relacional con la siguiente operación:

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

Llamamos a estas operaciones una query. Si evaluamos la query 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 queries 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 Query utilizando Algebra Relacional utilizando TRC formularemos la siguiente query:

     {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 query contra las tablas de La Base de Datos de Proveedores y Artículos encontramos otra vez el mismo resultado de Una Query utilizando Algebra Relacional.

Algebra Relacional contra Cálculo Relacional

El algebra relacional y el cálculo relacional tienen el mismo poder de expresión; es decir, todas las queries que se pueden formular utilizando algebra 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.