1. Bases de datos relacionales
Roberto Hernando Velasco
(http://www.rhernando.net)
24 de abril de 2004
1. Introducci´n
o
A finales de los setenta Codd introdujo la teor´ de las relaciones, proponiendo
ıa
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´ es uno de los modelos
ıa
m´s utilizados por los Sistemas Gestores de Bases de Datos.
a
2. Estructura del modelo de relaci´n
o
El elemento b´sico del modelo relacional es la relaci´n, que se representa me-
a o
diante una tabla (v´ase la figura 1).
e
relaci´n
o atributo 1 atributo 2 ... atributo n
xxxx xxxx ... xxxx
xxxx xxxx ... xxxx
xxxx xxxx ... xxxx
Figura 1: Representaci´n de una relaci´n en forma de tabla.
o o
En ella podemos distinguir un conjunto de columnas, denominadas atributos,
que representan propiedades de la misma, y un conjunto de filas llamadas tuplas,
que son las ocurrencias de la relaci´n. Cada uno de los atributos puede tomar valores
o
dentro de un rango determinado, que se denomina dominio.
El n´mero de filas de una relaci´n se llama cardinalidad, mientras que el n´mero
u o u
de columnas es el grado.
2.1. Ejemplo de relaci´n
o
En la figura 2 se tiene un ejemplo de relaci´n. El nombre de la relaci´n es
o o
Empleados, y est´ compuesta por un subconjunto de tres elementos formados a
a
partir del producto cartesiano de tres conjuntos de atributos (nombre, apellido,
sueldo).
Nombre Apellido Sueldo
Juan Garc´
ıa 1200
Pedro Guti´rrez
e 1700
Mar´
ıa L´pez
o 2100
Figura 2: Relaci´n Empleados
o
1
2. 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
e
n´meros positivos hasta cierta cantidad.
u
La cardinalidad de la relaci´n empleados es tres, correspondiente al n´mero de
o u
filas de la tabla, y su grado es cuatro, igual al n´mero de columnas.
u
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
a o o a
(tabla, filas y columnas) es intercambiable, por lo que se utilizan ambas indistinta-
mente.
2.2. Caracter´
ısticas de las relaciones
Dentro de la representaci´n de las relaciones como tablas se pueden hacer las
o
siguientes consideraciones:
No puede haber filas duplicadas. Todas las tuplas tienen que ser distintas.
El orden las filas es irrelevante.
El orden de los atributos no es significante.
No se admiten atributos multivaluados. Es decir, en cada celda de la tabla
s´lo puede haber un valor.
o
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.
o
A la clave candidata que se escoge para identificar las tuplas de una relaci´n se
o
la denomina clave primaria. La elecci´n de esta clave no es unica, aunque se suele
o ´
utilizar la m´s corta por razones de eficiencia. El resto de claves candidatas que no
a
han sido elegidas como clave primaria reciben el nombre de claves alternativas.
3. ´
Algebra Relacional
El ´lgebra relacional nos dice c´mo manipular las relaciones, mediante una serie
a o
de operaciones. Matem´ticamente el ´lgebra relacional es un ´lgebra completa, es
a a a
decir, por medio de ella se puede hacer cualquier acceso a la base de datos.
3.1. Operadores b´sicos
a
El ´lgebra relacional presenta cinco operadores b´sicos: uni´n, diferencia, pro-
a a o
ducto cartesiano, proyecci´n y selecci´n.
o o
A partir de estos cinco operadores es posible definir todos los dem´s, como
a
pueden ser la intersecci´n, el cociente y la uni´n natural.
o o
1 Por conjunto m´
ınimo se entiende aquel conjunto de atributos tal que si se elimina uno de ellos
el conjunto resultante deja de ser clave candidata.
2
3. 3.1.1. Uni´n, ∪
o
La uni´n de dos relaciones R y S (R ∪ S) se define como el conjunto formado
o
por todas las tuplas de R m´s todas las tuplas de S.
a
Este operador s´lo se puede aplicar a relaciones del mismo grado y con los
o
mismos atributos.
En la figura 3 tenemos un ejemplo de uni´n de dos relaciones.
o
Relaci´n R ∪ S
o
Relaci´n R
o Relaci´n S
o
C´digo
o Provincia
C´digo
o Provincia C´digo
o Provincia 01 ´
Alava
01 ´
Alava 03 Alicante 02 Albacete
02 Albacete 04 Almer´ıa 03 Alicante
04 Almer´ıa
Figura 3: Ejemplo del operador uni´n
o
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.
a
Este operador s´lo se puede aplicar a relaciones del mismo grado y con los
o
mismos atributos.
V´ase el ejemplo de la figura 4.
e
Relaci´n R
o Relaci´n S
o
Relaci´n R − S
o
C´digo
o Provincia C´digo
o Provincia
´ C´digo
o Provincia
01 Alava 03 Alicante
´ 02 Albacete
02 Albacete 01 Alava
Figura 4: Ejemplo del operador diferencia
3.3. Producto cartesiano, ×
El producto cartesiano de dos relaciones R y S (R × S), de grados m y n
respectivamente, se define como el conjunto formado por todas las posibles tuplas
de m + n elementos en las que los m primeros elementos son de R y los n restantes
pertenecen a S.
En la figura 5 se ve un ejemplo de producto cartesiano.
3.3.1. Proyecci´n, π
o
Si X es un subconjunto de atributos de la relaci´n R, se define la proyecci´n de R
o o
sobre X (πX (R)) como la relaci´n formada por las columnas de R correspondientes
o
a los atributos de X.
En la figura 6 se tiene un ejemplo de proyecci´n, siendo X = (provincia).
o
3
4. Relaci´n R × S
o
Relaci´n R
o Relaci´n S
o
C´digo
o Provincia Cantidad
C´digo
o Provincia Cantidad 01 ´
Alava 45
01 ´
Alava 45 01 ´
Alava 67
02 Albacete 67 02 Albacete 45
02 Albacete 67
Figura 5: Ejemplo del operador producto cartesiano
Relaci´n R
o Relaci´n πX (R)
o
C´digo
o Provincia Provincia
01 ´
Alava ´
Alava
02 Albacete Albacete
Figura 6: Ejemplo del operador proyecci´n
o
3.3.2. Selecci´n, σ
o
Si F es una f´rmula compuesta por operadores l´gicos, aritm´ticos y de compa-
o o e
raci´n, y sus operandos son los valores de los atributos de una relaci´n R, entonces
o o
la selecci´n σF (R) es el conjunto de tuplas de la relaci´n R que hacen verdadera la
o o
condici´n establecida por la f´rmula F .
o o
En la figura 7 tenemos un ejemplo, donde F = (c´digo = ’01’) OR (Provincia
o
> ’Alicante’)
Relaci´n R
o
Relaci´n σF (R)
o
C´digo
o Provincia
01 ´
Alava C´digo
o Provincia
02 Albacete 01 ´
Alava
03 Alicante 04 Almer´ıa
04 Almer´ıa
Figura 7: Ejemplo del operador selecci´n
o
4. El lenguaje SQL
El SQL (Structured Query Language) es el lenguaje de manipulaci´n de datos
o
relacionales m´s extendido, habi´ndose convertido en un est´ndar de facto.
a e a
SQL permite realizar consultas utilizando los recursos del ´lgebra relacional
a
combinados con el c´lculo relacional de tuplas.
a
4.1. Partes del lenguaje SQL
4.1.1. Lenguaje de Descripci´n de Datos, DDL (Data Description Lan-
o
guage)
Es el lenguaje utilizado para la creaci´n y mantenimiento de la estructura de
o
la base de datos. Se utiliza para definir y modificar los esquemas de las relaciones,
4
5. crear o destruir ´
ındices y eliminar relaciones. Permite tambi´n la definici´n de vistas
e o
y permisos de acceso para los usuarios.
Es el lenguaje que utiliza el administrador de la base de datos para realizar sus
tareas.
4.1.2. Lenguaje de Manipulaci´n de Datos, DML (Data Manipulation
o
Language)
Incluye todas las instrucciones para realizar consultas a las bases de datos, in-
sertar, modificar o eliminar datos.
Es el que utilizan los usuarios finales en la fase de explotaci´n de la base de
o
datos.
4.2. Definici´n de datos
o
4.2.1. Creaci´n de tablas
o
Las tablas se crean con el comando CREATE TABLE, de la siguiente forma:
CREATE TABLE nombreTabla (
nombreColumna1 tipoColumna1,
nombreColumna2 tipoColumna2,
...
PRIMARY KEY (columnasClave)
)
4.2.2. Actualizaci´n de tablas
o
Despu´s de crear las tablas se puede insertar, modificar o eliminar informaci´n
e o
en las mismas, mediante los siguientes comandos:
INSERT INTO nombreTabla
[(listaColumnas)]
{VALUES (datos) | comandoSelecci´n}
o
UPDATE nombreTabla
SET nombreColumna = expresi´n
o
DELETE FROM nombreTabla
WHERE condici´n
o
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]
o
En t´rminos de ´lgebra relacional, el comando SELECT es equivalente a la
e a
asociaci´n de una selecci´n, una proyecci´n y un producto cartesiano. Los atributos
o o o
de la proyecci´n se especifican en la cl´usula SELECT; la cl´usula FROM especifica
o a a
las relaciones de las que se han de tomar esos atributos; y la cl´usula WHERE (que
a
es opcional) contiene una condici´n de selecci´n.
o o
5