Bases de Datos Relacionales¶
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.
Estructura del modelo de relación¶
El elemento básico del modelo relacional es la relación, que se representa mediante una tabla .
relación | atributo 1 | atributo 2 | \(\dots\) | atributo n |
---|---|---|---|---|
xxxx | xxxx | \(\dots\) | xxxx | |
xxxx | xxxx | \(\dots\) | xxxx | |
xxxx | xxxx | \(\dots\) | xxxx |
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 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 de columnas es el grado.
Ejemplo de relación¶
En la siguiente tabla se tiene un ejemplo de relación. El nombre de la relación es Empleados, y está compuesta por un subconjunto de tres elementos formados a partir del producto cartesiano de tres conjuntos de atributos (nombre, apellido, sueldo).
Nombre | Apellido | Sueldo |
---|---|---|
Juan | García | \(1200\) |
Pedro | Gutiérrez | \(1700\) |
María | López | \(2100\) |
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 matemá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 indistintamente.
Características de las relaciones¶
Dentro de la representación de las relaciones como tablas se pueden hacer las 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.
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.
Á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.
Operadores básicos¶
El álgebra relacional presenta cinco operadores básicos: unión, diferencia, producto cartesiano, proyección y selección.
A partir de estos cinco operadores es posible definir todos los demás, como pueden ser la intersección, el cociente y la unión natural.
Unión, \(\cup\)¶
La unión de dos relaciones \(R\) y \(S\) (\(R \cup S\)) se define como el conjunto formado por todas las tuplas de \(R\) más todas las tuplas de \(S\).
Este operador sólo se puede aplicar a relaciones del mismo grado y con los mismos atributos.
En la siguientes tablas tenemos un ejemplo de unión de dos relaciones.
Código | Provincia |
---|---|
01 | Álava |
02 | Albacete |
Código | Provincia |
---|---|
03 | Alicante |
04 | Almería |
Código | Provincia |
---|---|
01 | Álava |
02 | Albacete |
03 | Alicante |
04 | Almería |
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 siguiente
Código | Provincia |
---|---|
01 | Álava |
02 | Albacete |
Código | Provincia |
---|---|
03 | Alicante |
01 | Álava |
Código | Provincia |
---|---|
02 | Albacete |
Producto cartesiano, \(\times\)¶
El producto cartesiano de dos relaciones \(R\) y \(S\) (\(R \times 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\).
A continuación se ve un ejemplo de producto cartesiano.
Código | Provincia |
---|---|
01 | Álava |
02 | Albacete |
Cantidad |
---|
45 |
67 |
Código | Provincia | Cantidad |
---|---|---|
01 | Álava | 45 |
01 | Álava | 67 |
02 | Albacete | 45 |
02 | Albacete | 67 |
Proyección, \(\pi\)¶
Si \(X\) es un subconjunto de atributos de la relación \(R\), se define la proyección de \(R\) sobre \(X\) (\(\pi_X (R)\)) como la relación formada por las columnas de \(R\) correspondientes a los atributos de \(X\).
A continuación se tiene un ejemplo de proyección, siendo \(X\) = (provincia).
Código | Provincia |
---|---|
01 | Álava |
02 | Albacete |
Provincia |
---|
Álava |
Albacete |
Selección, \(\sigma\)¶
Si \(F\) es una fórmula compuesta por operadores lógicos, aritméticos y de comparación, y sus operandos son los valores de los atributos de una relación \(R\), entonces la selección \(\sigma 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 el siguiente ejemplo, donde \(F\) = (código = ’01’) OR (Provincia \(>\) ’Alicante’)
Código | Provincia |
---|---|
01 | Álava |
02 | Albacete |
03 | Alicante |
04 | Almería |
Código | Provincia |
---|---|
01 | Álava |
04 | Almería |
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.
Partes del lenguaje SQL¶
Lenguaje de Descripción de Datos, DDL (Data Description Language)¶
Es el lenguaje utilizado para la creación y mantenimiento de la estructura de la base de datos. Se utiliza para definir y modificar los esquemas de las relaciones, 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.
Lenguaje de Manipulación de Datos, DML (Data Manipulation Language)¶
Incluye todas las instrucciones para realizar consultas a las bases de datos, insertar, modificar o eliminar datos.
Es el que utilizan los usuarios finales en la fase de explotación de la base de datos.
Definición de datos¶
Creación de tablas¶
Las tablas se crean con el comando CREATE TABLE
, de la siguiente
forma:
CREATE TABLE nombreTabla ( nombreColumna1 tipoColumna1, nombreColumna2 tipoColumna2, ... PRIMARY KEY (columnasClave) )
Actualización de tablas¶
Después de crear las tablas se puede insertar, modificar o eliminar información en las mismas, mediante los siguientes comandos:
INSERT INTO nombreTabla [(listaColumnas)] {VALUES (datos) | comandoSelección} UPDATE nombreTabla SET nombreColumna = expresión DELETE FROM nombreTabla WHERE condición
Consultas¶
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]
En términos de álgebra relacional, el comando SELECT es equivalente a la asociación de una selección, una proyección y un producto cartesiano. Los atributos de la proyección se especifican en la cláusula SELECT; la cláusula FROM especifica las relaciones de las que se han de tomar esos atributos; y la cláusula WHERE (que es opcional) contiene una condición de selección.
Pasos para la construcción de un Modelo E/R¶
-
Elaborar dos listas: una con los candidatos a ser entidades, y otra con las posibles interrelaciones junto con su tipo de correspondencia.
-
Construir una matriz de entidades, en la que las filas y columnas son nombres de entidades y cada celda puede contener o no nombres de interrelaciones.
-
Utilizando la matriz de entidades se construye un primer esquema E/R con las entidades, atributos, interrelaciones y sus tipos de correspondencia. A este esquema se le añaden las cardinalidades mínimas y máximas.
-
Se refina el esquema E/R estudiando las posibles redundancias.
-
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. ↩