Introducción
Un poco de historia
Las bases de datos son indispensables en cualquier desarrollo informático. En la mayoría de casos los datos se almacenan en una estructura de datos.
Se habla de BBDD para designar el almacenamiento de los datos y de SGBD para designar los elementos que se ponen a disposición del desarrollador para manipular estos datos.
Existen diferentes tipos de bases de datos.
De tipo jerárquico, como IMS/DL1, que se encuentran mayoritariamente en los Mainframes. Estos elementos se organizan como un árbol con un nivel de jerarquía y de punteros entre registros.
De datos en red (o Codasyl) como IDS2 o SOCRATE que prácticamente no se utilizan en la actualidad, y que utilizan un poco el modelo jerárquico, pero permiten navegar entre los elementos y no solo de forma descendente.
Desde hace algunos años, han aparecido otros tipos de bases de datos con los sitios de Internet utilizados por millones de usuarios:
-
Bases de datos que manejan la información en columnas y no en registros para gestionar enormes cantidades de datos, como Bigtable, desarrollado por Google, o Cassandra, utilizado por Facebook.
-
Bases de datos NoSQL, como Redis, más flexible con un esquema definido de manera no precisa, que se preocupa por la coherencia final.
-
Bases de datos de documentos, similar al tipo de base NoSQL. La más conocida y utilizada es MongoDB.
El sitio web db-engines.com actualiza periódicamente...
Las normas SQL
La primera versión de SQL normalizada por ANSI data de 1986.
Más tarde se sucedieron versiones más o menos importantes.
La norma SQL2 o SQL92 es la más importante. La mayoría de los SGBDR existentes implementan esta versión.
A continuación siguieron otras evoluciones SQL-3, SQL:2003, SQL:2008 y SQL:2011 que aportan algunas funciones complementarias.
Cada proveedor de SGBDR ha implementado a su manera el lenguaje SQL y ha agregado sus propias extensiones. Los ejemplos que se ofrecen en este libro para ilustrar los conceptos pueden no ser compatibles con todos los SGBDR.
Los ejemplos mostrados en este libro se crearon principalmente para las bases de datos más utilizadas: Oracle, SQL Server, PostgreSQL y MySQL.
Norma |
Nombre |
Comentarios |
ISO/CEI 9075:1986 |
SQL-86 o SQL-87 |
Editada por ANSI y adoptada por ISO en 1987. |
ISO/CEI 9075:1989 |
SQL-89 o SQL-1 |
Revisión menor. |
ISO/CEI 9075:1992 |
SQL-92 o SQL2 |
Revisión mayor. |
ISO/CEI 9075:1999 |
SQL-99 o SQL3 |
Expresiones racionales, consultas recursivas, disparadores, tipos no escalares y algunas funciones orientadas a objetos. |
ISO/CEI 9075:2003 |
SQL:2003 |
Introducción de funciones para la manipulación de XML, « window functions », comandos estandarizados y columnas con valores automáticos (incluyendo columnas de identidad). |
ISO/CEI 9075:2008 |
SQL:2008 |
Se añaden algunas funciones de ventanas... |
Descripción rápida del modelo relacional
El modelo relacional fue creado, como decíamos anteriormente, por un investigador, Edgard Codd, que trabajaba en IBM a principios de los años 70. Trabajó a partir de principios matemáticos simples, la teoría de conjuntos y la lógica de predicados.
El modelo relacional se basa en el concepto de conjunto. Esquemáticamente el modelo relacional se puede representar a través de una tabla (una tabla igualmente se puede llamar una relación).
Este conjunto tiene atributos (las columnas) y líneas que contienen los valores (los registros). La forma más comúnmente utilizada para representar una tabla es esta:

El modelo relacional presenta los datos de forma lógica, es totalmente independiente del modelo físico. Es el proveedor el que decide el modo de almacenamiento físico de las tablas. Esta es la mayor ventaja de las bases de datos relacionales, la independencia entre lo lógico y lo físico.
Una vez se han definido las tablas, hay que disponer de un lenguaje para manipularlas, se trata del álgebra relacional. También lo inventó Edgard Codd. Con la ayuda de estos comandos, se pueden consultar las relaciones existentes y crear nuevas relaciones. Hablamos de operadores de unión, intersección, diferencia, producto cartesiano, división y composición.
SQL implementa el álgebra relacional y los sistemas de gestión de bases de datos relacionales (SGBDR) implementan el modelo relacional.
1. Principales conceptos del modelo relacional
Los tres principales conceptos del modelo relacional son el dominio, el producto cartesiano y las relaciones.
Dominio
Es un conjunto de valores representado por un nombre.
Por ejemplo:
El tipo de baño es un dominio que comprende los valores D, DW o BW para las duchas, duchas con WC separado o bañeras con WC separado.
El tipo de cama es otro dominio (individual, doble, XL, etc.).
El número de ocurrencias de cada uno de los dominios da la cardinalidad.
Para los tipos de cama, la cardinalidad es 3.
Producto cartesiano
Representa la unión entre dos dominios. Si, por ejemplo, se realiza el producto cartesiano entre los tipos de baño y los tipos de cama, se obtienen registros R1, R2.
En nuestro ejemplo, el producto...
El álgebra relacional
1. Aspectos generales
El álgebra relacional ha llevado al desarrollo de SQL que se ha convertido en el estándar en lo que respecta a la gestión de datos.
Es un método de extracción que permite la manipulación de tablas y columnas. Se basa en la creación de nuevas tablas (tablas resultantes) a partir de tablas existentes. Estas nuevas tablas se convierten en objetos que se pueden utilizar inmediatamente.
Los operadores del álgebra relacional que permiten crear las tablas resultantes se basan en la teoría de conjuntos.
La sintaxis y la notación utilizadas aquí son las que más se usan.
2. Los operadores
a. Unión
La unión entre dos relaciones de igual estructura (grado y dominios) da una tabla resultante de la misma estructura que tiene como elementos el conjunto de los diferentes elementos de las dos relaciones iniciales.

Ejemplos:
Consideremos las relaciones HOTELES_EUROPA y HOTELES_AFRICA
RELACIÓN HOTELES_EUROPA
idHotel |
Etiqueta |
Estrella |
1 |
Ski Hotel |
* |
2 |
Art Hotel |
** |
RELACIÓN HOTELES_AFRICA
idHotel |
Etiqueta |
Estrella |
1 |
Ski Hotel |
* |
2 |
Lions Hotel |
**** |
UNIÓN DE LAS DOS RELACIONES
idHotel |
Etiqueta |
Estrella |
1 |
Ski Hotel |
* |
2 |
Art Hotel |
** |
4 |
Lions Hotel |
**** |
b. Intersección
La intersección entre dos relaciones de igual estructura (grado y dominios) da una tabla resultante de igual estructura que tiene como elementos el conjunto de elementos comunes a las dos relaciones iniciales.

Ejemplo:
RELACIÓN HOTELSKI_TIPOHABITACION
NumHabitacion |
Descripcion |
1 |
1 cama individual con ducha |
4 |
1 cama doble con ducha |
6 |
1 cama doble con baño y WC separados |
RELACIÓN ARTHOTEL_TIPOHABITACION
NumHabitacion |
Descripcion |
1 |
1 cama individual con ducha |
4 |
1 cama doble con ducha |
6 |
1 cama doble con baño y WC separados |
7 |
1 cama doble grande con baño y WC separados |
TIPOHABITACION comunes a las dos relaciones:
NumHabitacion |
Descripcion |
1 |
1 cama individual con ducha |
4 |
1 cama doble con ducha |
6 |
1 cama doble con baño y WC separados |
c. Diferencia
La diferencia entre dos relaciones de igual estructura (grado y dominio) da una tabla resultante de igual estructura que tiene como elementos el conjunto de elementos de la primera relación que no están en la segunda.
Notación: Rx = R2 - R1
Ejemplo:
TIPOHABITACION presente...
Los sistemas de gestión de bases de datos que utilizan SQL
Los SGBDR en el mercado son bastante numerosos. Los más utilizados son Oracle, MySQL, SQL Server (Microsoft), PostgreSQL y DB2 (IBM) especialmente en empresas que tienen volúmenes de datos importantes y grandes restricciones de rendimiento transaccionales.
Aquí no vamos a poder comparar todas las características, ventajas e inconvenientes de todos estos SGBDR. La elección de una base de datos es una decisión que se debe reflexionar bien, en función de criterios como el volumen de datos, los tipos de datos, las restricciones de rendimiento, los costes de compra y mantenimiento, los conocimientos de los programadores, etc.