Algebra Relacional
Algebra Relacional
Algebra Relacional
24 de abril de 2004
1. Introducción
A finales de los setenta Codd introdujo la teorı́a de las relaciones, proponiendo
un modelo de datos basado en relaciones o tablas. El modelo de datos relacional
tuvo un auge espectacular a finales de los setenta, y hoy en dı́a es uno de los modelos
más utilizados por los Sistemas Gestores de Bases de Datos.
1
El dominio de los atributos nombre y apellido es el conjunto de todas las cadenas
alfanuméricas de determinada longitud, y el dominio del atributo sueldo son los
números positivos hasta cierta cantidad.
La cardinalidad de la relación empleados es tres, correspondiente al número de
filas de la tabla, y su grado es cuatro, igual al número de columnas.
Como queda claro en el ejemplo, en el modelo relacional la nomenclatura ma-
temática (relación, cardinalidad y atributos) y la propia de su representación gráfica
(tabla, filas y columnas) es intercambiable, por lo que se utilizan ambas indistinta-
mente.
No puede haber filas duplicadas. Todas las tuplas tienen que ser distintas.
2.3. Claves
Como hemos visto, en una tabla no puede haber dos filas iguales. Por ello, debe
haber uno o varios atributos que se puedan utilizar para distinguir unas tuplas de
otras. Cualquier atributo o conjunto mı́nimo (1 ) de atributos que sirva para este
propósito se denomina clave candidata.
A la clave candidata que se escoge para identificar las tuplas de una relación se
la denomina clave primaria. La elección de esta clave no es única, aunque se suele
utilizar la más corta por razones de eficiencia. El resto de claves candidatas que no
han sido elegidas como clave primaria reciben el nombre de claves alternativas.
3. Álgebra Relacional
El álgebra relacional nos dice cómo manipular las relaciones, mediante una serie
de operaciones. Matemáticamente el álgebra relacional es un álgebra completa, es
decir, por medio de ella se puede hacer cualquier acceso a la base de datos.
1 Por conjunto mı́nimo se entiende aquel conjunto de atributos tal que si se elimina uno de ellos
2
3.1.1. Unión, ∪
Relación R ∪ S
Relación R Relación S
Código Provincia
Código Provincia Código Provincia 01 Álava
01 Álava 03 Alicante 02 Albacete
02 Albacete 04 Almerı́a 03 Alicante
04 Almerı́a
3.2. Diferencia, −
La diferencia de dos relaciones R y S (R−S) se define como el conjunto formado
por todas las tuplas de R que no están en S.
Este operador sólo se puede aplicar a relaciones del mismo grado y con los
mismos atributos.
Véase el ejemplo de la figura 4.
Relación R Relación S
Relación R − S
Código Provincia Código Provincia
Código Provincia
01 Álava 03 Alicante
02 Albacete
02 Albacete 01 Álava
3.3.1. Proyección, π
3
Relación R × S
Relación R Relación S
Código Provincia Cantidad
Código Provincia Cantidad 01 Álava 45
01 Álava 45 01 Álava 67
02 Albacete 67 02 Albacete 45
02 Albacete 67
3.3.2. Selección, σ
Si F es una fórmula compuesta por operadores lógicos, aritméticos y de compa-
ración, y sus operandos son los valores de los atributos de una relación R, entonces
la selección σF (R) es el conjunto de tuplas de la relación R que hacen verdadera la
condición establecida por la fórmula F .
En la figura 7 tenemos un ejemplo, donde F = (código = ’01’) OR (Provincia
> ’Alicante’)
Relación R
Relación σF (R)
Código Provincia
01 Álava Código Provincia
02 Albacete 01 Álava
03 Alicante 04 Almerı́a
04 Almerı́a
4. El lenguaje SQL
El SQL (Structured Query Language) es el lenguaje de manipulación de datos
relacionales más extendido, habiéndose convertido en un estándar de facto.
SQL permite realizar consultas utilizando los recursos del álgebra relacional
combinados con el cálculo relacional de tuplas.
4
crear o destruir ı́ndices y eliminar relaciones. Permite también la definición de vistas
y permisos de acceso para los usuarios.
Es el lenguaje que utiliza el administrador de la base de datos para realizar sus
tareas.
UPDATE nombreTabla
SET nombreColumna = expresión
4.3. Consultas
4.3.1. El comando SELECT
Las consultas en SQL son posibles gracias al comando SELECT, que tiene la
siguiente estructura:
SELECT atributos
FROM relaciones
[WHERE condición]