Introducción
Un poco de historia
Las bases de datos son indispensables en todo 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 no relacional NoSQL (Not Only SQL), como Redis, de tipo Clave-valor más flexible con un esquema definido de manera no precisa, que se preocupa por la coherencia final.
-
Bases de datos de documentos, también no relacional. La más conocida y utilizada es MongoDB.
El sitio web db-engines.com...
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 hasta la última: 2023 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 con la incorporación de uniones. |
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:2006... |
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. Los ejemplos de este libro se basan en algunas tablas de una base de datos de una empresa en el sector hotelero. Esta base gestiona las tarifas de las habitaciones por tipo de habitación y por hotel. El esquema de la base se presenta más adelante en esta obra (véase el capítulo La definición de los datos (LDD) - La clave extranjera (FOREIGN KEY))
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 (TIPOB) 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 (TIPOCAMA) es otro dominio (individual...
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 |
Descripción |
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 |
Descripción |
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 |
Descripción |
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...
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.