Está en la página 1de 130

Presencial

Módulo de
Base de datos
Claudio García
Módulo de
Base de datos
Claudio García
Quedan rigurosamente prohibidas, sin la autoriza-
ción escrita de los titulares de «Copyright», bajo las
sanciones establecidas en las leyes, la reproduc-
ción total o parcial de esta obra por cualquier me-
dio o procedimiento, comprendidos la reprografía y
el tratamiento informático, y la distribución de ejem-
plares de ella mediante alquiler o préstamo públi-
cos. Diríjase a CEDRO (Centro Español de Derechos
Reprográficos, http://www.cedro.org) si necesita fo-
tocopiar o escanear algún fragmento de esta obra.
Contenido

Objetivos del módulo

UNIDAD 1 | Introducción a las bases de datos


„ Introducción a las bases de datos

„ Modelo entidad-relación

„ Modelo relacional

„ Normalización

UNIDAD 2 | Lenguajes SQL: DML Y DDL


„ Lenguajes de la base de datos para manipular datos

„ Estrategias para el control de las transacciones y de la concurrencia

„ Lenguajes de la base de datos para crear la estructura de la base de datos

UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental


„ Gestión de usuarios

„ Programación en bases de datos

UNIDAD 4 | Bases de datos objeto-relacionales


„ Uso de bases de datos objeto-relacionales
Módulo de Base de datos

Objetivos del módulo


En este módulo vamos a profundizar en uno de los campos más
importantes de la informática: las bases de datos. Sin duda son una
herramienta esencial en el manejo de la información, tanto para su
conservación como para su manipulación y acceso, independiente-
mente de si estamos hablando del ámbito empresarial o personal.
Hoy en día, con el crecimiento de los dispositivos que pueden llegar
a obtener datos del entorno y con la mejora en la calidad y capacidad
de las conexiones para la transmisión de datos, es innegable que hay
una necesidad de guardar de forma correcta toda esa información, así
como saber de qué modo acceder a ella de la manera más eficiente.

Comenzaremos con una introducción donde aprenderemos los con-


ceptos básicos, incluyendo la definición de lo que es una base de
datos, sus objetivos y la importancia de su utilización. También vere-
mos los distintos tipos que existen, las diferencias entre ellas y sus
aplicaciones en el mundo real.

A medida que avanzamos en el módulo, aprenderemos lo que es el


modelo entidad-relación, que se utiliza para representar las relaciones
entre las entidades de una base de datos. También veremos el modelo
relacional, que es el modelo de base de datos más utilizado en la
actualidad, y aprenderemos a diseñar tablas y establecer diferentes
relaciones entre ellas.

Después de comprender los modelos conceptuales de las bases


de datos, profundizaremos en la normalización, una técnica que se
utiliza para optimizar el diseño de una base de datos, eliminando
redundancias y asegurando su integridad y coherencia.

Exploraremos los lenguajes de la base de datos para la manipulación


de la información, como el lenguaje SQL, que se utiliza para realizar
consultas y actualizaciones de datos en una base de datos relacional.
Profundizaremos en las estrategias para el control de las transacciones
y de la concurrencia, que son técnicas para asegurar la integridad y
la consistencia de los datos en situaciones de acceso concurrente a
la base de datos.

Continuando con el diseño de la estructura de la base de datos,


veremos los lenguajes de la base de datos para crear y modificar la
estructura de las mismas, incluyendo la creación de tablas, índices
y restricciones.

En lo referente a la gestión de usuarios, aprenderemos cómo crear


usuarios y roles para permitir el acceso controlado a las bases de
datos y cómo implementar medidas de seguridad para proteger la
información almacenada.
Objetivos del curso

A continuación, exploraremos la programación en bases de datos, lo


cual nos permitirá utilizar la funcionalidad programable de las bases
de datos; es decir, aprenderemos a gestionar y a administrar ciertos
automatismos, incluyendo la creación de procedimientos almacena-
dos, funciones y triggers.

Finalmente, abordaremos el uso de bases de datos objeto-relacio-


nales, una técnica que combina los beneficios de los modelos de
bases de datos relacionales y orientados a objetos. Aprenderemos
pues a cómo diseñar y utilizar bases de datos objeto-relacionales en
aplicaciones reales.

Sin duda, este módulo cubre los principales temas en bases de datos,
desde los conceptos fundamentales hasta los temas más avanzados
como el control de las transacciones y la programación en bases de
datos. Esperamos que este curso te proporcione una base sólida para
explorar y desarrollar tus habilidades en el mundo de las bases de
datos en el futuro. ¡Comencemos!
Módulo de Base de datos

Introducción
1 a las bases de datos
Las bases de datos son una herramienta fundamental para el alma-
cenamiento y gestión de grandes cantidades de información. Una
base de datos es una colección organizada de datos que se pueden
acceder, gestionar y actualizar de manera eficiente.

Las bases de datos se utilizan en una amplia variedad de aplicaciones,


desde sistemas de gestión de inventario y recursos humanos hasta
aplicaciones web y móviles. La mayoría de las bases de datos mo-
dernas son sistemas de bases de datos relacionales, que almacenan
los datos en tablas relacionales que se conectan entre sí a través de
claves primarias y claves foráneas.

Además, las bases de datos también permiten la realización de consul-


tas y búsquedas de datos, lo que facilita la obtención de información
relevante de manera rápida y precisa.

Vamos a ver que existen varios tipos de bases de datos, incluyendo


bases de datos centralizadas, bases de datos distribuidas, bases de
datos orientadas a objetos y bases de datos NoSQL, cada una con
sus propias ventajas y desventajas.

A lo largo de estas páginas, profundizaremos en cómo funcionan,


cuáles son los diferentes tipos que existen y qué conceptos y compo-
nentes son fundamentales para su correcto almacenamiento y acceso.

1. Introducción a las bases de datos


Seguidamente vamos a aprender sobre algo muy importante para
muchas aplicaciones informáticas: las bases de datos. Las bases de
datos son como grandes contenedores donde se guarda información
de todo tipo, desde números hasta textos, imágenes y videos.

Figura 1.1 Las bases de datos como contenedores de información.

8
UNIDAD 1 | Introducción a las bases de datos

En la gestión de bases de datos es fundamental tener en cuenta la


integridad de los datos, lo que significa asegurarse de que los datos
sean precisos y coherentes. Esto se logra mediante el uso de restric-
ciones y validaciones de datos, así como a través de la implementación
de procedimientos de copia de seguridad y recuperación.

Además, veremos cuándo es necesario utilizar bases de datos en


nuestras aplicaciones y cuáles son las opciones de gestores de bases
de datos disponibles para administrar estos sistemas.

„ Ficheros (planos, indexados, acceso


directo, entre otros)
Los archivos o ficheros los podemos entender como grupos de regis-
tros de información que comparten una temática común y que están
organizados para un propósito específico.

Figura 1.2 Podemos crear distintos tipos de fichero.

Dependiendo de la forma en la que esa información se organiza y de


cómo se puede acceder a ella, lo ficheros pueden ser de diferentes
Glosario
clases:
ASCII: son las siglas
de American Standard
„ Ficheros planos Code for Information
Interchange (Código
Estándar Americano
Almacenan la información en formato ASCII o también llamado para Intercambio de
de texto plano, es decir, uno a continuación del otro, y utilizan un Información) y se
refieren al formato
carácter especial para separarlos. basado en un sistema
de codificación que
asigna a cada carácter
El acceso a la información se realiza de forma secuencial; así alfanumérico (A-Z,
pues, el programa va accediendo a los registros uno a uno, inde- a-z, 0-9) o de control
(párrafo, salto de
pendientemente del registro o bloque de información al que se línea, etc.) un valor
quiera llegar. entre 0 y 255.

9
Módulo de Base de datos

Para hacernos una idea, podemos imaginar que somos los en-
cargados de una biblioteca y tenemos muchas fichas de libros
para ordenar. Si las ponemos una encima de otra, como si fuera
una pila, entonces estaríamos obteniendo una disposición de la
información similar a la de un fichero plano o secuencial.

„ Ficheros indexados

Los ficheros indexados son un tipo de archivo muy útil en in-


formática que permiten organizar y acceder a la información de
manera más rápida y eficiente.

En lugar de buscar un registro por toda la base de datos, se le


asigna una clave o índice único, que se guarda en una tabla junto
con la ruta exacta para encontrar el registro en cuestión.

De esta forma, cuando necesitamos acceder a un registro espe-


cífico, podemos utilizar su clave para encontrarlo directamente,
sin tener que buscarlo entre todos los demás registros. Esto hace
que el acceso a los datos sea mucho más rápido y eficiente.

Para que se entienda mejor, podemos pensar en un catálogo de una


tienda. Si queremos encontrar un producto específico, buscare-
mos en el índice (clasificador) en el que se indicará en qué página
está el producto que buscamos. De esta forma, nos ahorraremos
mucho tiempo en buscar por todo el catálogo.

„ Ficheros relativos

Los ficheros relativos son otro tipo de archivo que se utiliza en


informática para organizar y acceder a los datos.

En este caso, la clave asignada a cada registro está estrechamente


relacionada con su ubicación física en el archivo.

10
UNIDAD 1 | Introducción a las bases de datos

Dentro de los ficheros relativos, existen los de acceso directo,


que son aquellos que almacenan los registros de datos en posi-
ciones específicas de la memoria y utilizan los números de dichas
direcciones como clave para acceder a ellos.

Un ejemplo sería el de un libro en una biblioteca. Cada libro tiene


su propio número de identificación (ID) y su propia posición en la
biblioteca. Si conocemos el ID del libro que buscas, podemos ir
directamente a la posición física donde está ubicado, sin necesidad
de buscar por todo el estante.

„ Bases de datos. Conceptos, usos y tipos


según el modelo de datos, la ubicación
de la información
Como ya hemos dicho anteriormente, podemos visualizar las bases
de datos como grandes contenedores de información organizada, Recuerda
compuestos por varios ficheros de datos que están relacionados entre Un SGBD
sí. A estos ficheros pueden acceder múltiples usuarios y aplicaciones (Sistema de Gestión de
Bases de Datos) es un
al mismo tiempo. Para gestionar y acceder a estos datos se utilizan software que permite
sistemas gestores de bases de datos (SGBD). crear, almacenar,
organizar y recuperar
información de una
base de datos de
manera eficiente
y segura.

Figura 1.3 Esquema de base de datos distribuida.

11
Módulo de Base de datos

La razón principal de utilizar bases de datos es poder modificar la


estructura de los datos sin tener que cambiar los programas que
utilizan dicha información. Para lograr esto, se utilizan representa-
ciones a través de diferentes niveles de abstracción: el nivel físico,
el nivel lógico o conceptual, y el nivel externo o de vistas.

• Confidencialidad
Nivel externo • Vistas

Nivel • Integridad /
coherencia
conceptual • Esquema lógico

• Ges�ón de acceso
Nivel interno • Esquema �sico

Figura 1.4 Niveles de las bases de datos.

De esta manera, se logra independizar los programas o aplicaciones de


la estructura de datos con la que trabajan, permitiendo a los usuarios
y aplicaciones acceder a la información de manera más eficiente y
sin interrupciones.

Los datos que se almacenan en una base de datos se guardan como


información relacionada. Estos datos pueden representarse de forma
Recuerda lógica en formatos de tablas, en las que cada fila es un objeto y cada
Las bases de datos columna es un atributo de dicho objeto, haciendo que un objeto se
contienen tablas, las
tablas contienen
componga de diversas celdas de información. Es decir, que cada fila
registros y los registros es un bloque de información y cada columna marca el tipo de dato o
contienen datos. información que va a tener esa celda en concreto, como se muestra
en la tabla de ejemplo siguiente:

Nombre Apellido Provincia Coche

Paco Sánchez Valencia Peugeot

Pablo García Alicante Mercedes

Pedro Santiesteban Castellón Aston Martin

Las vistas son una representación virtual de una o varias tablas en


una base de datos que pueden ser consultadas o utilizadas por los
usuarios o aplicaciones como si fueran una tabla real.

Las vistas son el nivel más externo en lo que a niveles de abstracción


se refiere, pudiendo haber tantas como el usuario quiera.

En otras palabras, una vista es una consulta predefinida que se ejecuta


sobre una o varias tablas y que devuelve un conjunto de resultados

12
UNIDAD 1 | Introducción a las bases de datos

que se presentan como si fueran una tabla independiente. Las vistas


son muy útiles porque permiten a los usuarios acceder a información
específica y personalizada de la base de datos sin tener que escribir
una consulta cada vez que necesiten la información.

Un ejemplo puede ser una vista que muestre los resultados de una
unión entre dos o más tablas, lo que permite a los usuarios ver la
información combinada de esas tablas en una sola vista. En general,
las vistas son una herramienta muy útil para simplificar el acceso
a los datos y mejorar la eficiencia en la gestión de bases de datos.

Figura 1.5 Representación de una vista

Pero ¿qué pasos hemos de seguir para crear una vista? Puede parecer
un concepto un poco «etéreo» ya que no implica guardado en memoria
ni es una consulta propiamente dicha. Sigamos los siguientes pasos:

1. Crear la consulta SQL que incluya las tablas que deseas combinar.
Por ejemplo, si tienes dos tablas llamadas clientes y ventas, y
deseas combinarlas, podrías crear una consulta SQL así:

En este ejemplo, la consulta utiliza un INNER JOIN para combinar


las tablas clientes y ventas usando la columna id_cliente como
clave de relación.

13
Módulo de Base de datos

2. Una vez que tengas la consulta SQL, puedes utilizarla para crear
la vista utilizando la sentencia CREATE VIEW. Por ejemplo:

En este ejemplo, la vista se llama vista_clientes_ventas y está ba-


sada en la consulta SQL que combina las tablas clientes y ventas.

3. Una vez que la vista se ha creado, puedes utilizarla en otras con-


sultas SQL como si fuera una tabla real. Por ejemplo, vamos a
utilizar la vista vista_clientes_ventas para seleccionar todas
las ventas realizadas por los clientes durante el año 2022.:

SELECT * FROM vista_clientes_ventas


WHERE fecha
BETWEEN '2022-01-01'
AND '2022-12-31';

Los modelos de datos son las herramientas conceptuales que sirven


para describir de forma abstracta la estructura de una base de datos
(los datos, las relaciones y las restricciones que existen entre ellos).
Se dividen en tres grupos:

„ Modelos lógicos basados en objetos

Se utilizan para describir datos en el nivel conceptual y externo.


Los más conocidos son el modelo entidad-relación y el orientado
a objetos.

⚪ El modelo entidad-relación consiste en la elaboración de un


diagrama que representa el modelado de los datos en un sis-
tema de información.
⚪ El modelo orientado a objetos pretende representar el para-
digma de la programación orientada a objetos en la que los
elementos a almacenar en la base de datos adquieren carac-
terísticas y propiedades parecidas a elementos de la vida real.

„ Modelos lógicos basados en registros

Se utilizan para describir datos en el nivel conceptual y físico. Los


más aceptados son los modelos relacionales, de red y jerárquicos.

„ Modelos físicos de datos

Se utilizan para describir cómo se almacenan los datos. Los más


conocidos son el modelo unificador y el de memoria de elementos.

14
UNIDAD 1 | Introducción a las bases de datos

Funcionan al más bajo nivel para representar la manera en la que


se almacenan los datos en el sistema.

„ Sistemas gestores de base


de datos. Funciones, componentes,
tipos y objetivos
Las principales funciones de los sistemas gestores de bases de datos
(SGBD), también llamados DBMS (Data Base Management Systems),
son definir, construir, manipular y controlar las bases de datos.

Figura 1.6 Esquema de acceso a un SGDB.

Para proporcionar estos servicios, los SGBD constan de varios com-


ponentes. Veamos a continuación cuáles son:

„ El diccionario de datos es como el libro de instrucciones de una


base de datos, donde se guarda toda la información acerca de
los datos que se utilizan en ella. Esencialmente, cuando se crea y
define una base de datos se guarda en el diccionario de datos la
especificación de la estructura, el tipo de datos, las restricciones,
las relaciones y otros detalles relevantes.

De esta forma, el diccionario de datos es fundamental para el


correcto funcionamiento de la base de datos, ya que permite
que los usuarios y aplicaciones comprendan la estructura y el
contenido de la base de datos.

15
Módulo de Base de datos

Asimismo, es una herramienta esencial para el mantenimiento y


la actualización de la base de datos, ya que permite identificar
rápidamente los datos y las relaciones que deben ser actualizados
o modificados.

„ Para trabajar con los datos de una base de datos se utilizan los
lenguajes de los sistemas gestores de bases de datos (SGBD).
Estos lenguajes permiten definir las características de la base de
datos y manipular los datos que se encuentran en ella.

El lenguaje de definición de datos (LDD o DDL) es utilizado por los


diseñadores y administradores de la base de datos para especi-
ficar las características de las mismas. Por otro lado, el lenguaje
de manipulación de datos (LMD o DML) es utilizado por todos los
usuarios para consultar y actualizar los datos de la base de datos.

DML DDL
Ges�onar la información Definir tablas y vistas

Lenguaje SQL

DCL TCL
Protección del dato Transacciones

Figura 1.7 Diferentes lenguajes SQL según su propósito,

Dentro del LMD existen los LMD procedimentales, en los que el


usuario debe especificar los datos que quiere y cómo acceder a
ellos, y los LMD no procedimentales, en los que el usuario indica
directamente los datos que necesita sin especificar cómo obte-
nerlos.
Saber más
La principal diferencia Además, en el proceso de gestión de bases de datos se utilizan
entre LDD y LMD es
que el primero se herramientas como el diccionario de datos, el gestor de archivos y
utiliza para definir la el procesador de consultas para almacenar y manipular los datos.
estructura de la base
de datos, mientras Todo esto con el fin de garantizar un acceso seguro y eficiente a
que el segundo se los datos almacenados en la base de datos.
utiliza para manipular
los datos
almacenados Un ejemplo de DDL sería la creación de una tabla nueva en nuestra
en ella.
base de datos, que normalmente realiza el administrador:

CREATE TABLE test (a INT NOT NULL


AUTO_INCREMENT, PRIMARY KEY (a), KEY(b))
TYPE=MyISAM SELECT b,c FROM test2;

Por otro lado, una consulta para obtener un dato concreto sería:

SELECT persona FROM empresa WHERE sueldo>1000;

16
UNIDAD 1 | Introducción a las bases de datos

„ Los mecanismos para garantizar la seguridad e integridad de los


datos sirven para controlar que solo los usuarios autorizados
puedan acceder a la base de datos, para que se realicen copias
de seguridad y se pueda acceder con facilidad a los datos sin
perder su consistencia, etc.

„ La administración de la base de datos, que recae sobre un ad-


ministrador que posee el máximo nivel de privilegios o permisos
sobre ella. La administración no solo incluye la información con-
tenida en la base de datos, sino también la creación de perfiles,
grupos y jerarquías de usuarios.

„ Tipos de usuarios y de lenguajes


de bases de datos
Cada tipo de usuario tiene diferentes necesidades y requisitos en
términos de acceso y uso de la base de datos. Por lo tanto, es muy
importante que los administradores de bases de datos comprendan
completamente las necesidades de cada tipo de usuario para propor-
cionar el acceso adecuado y los permisos necesarios para que cada
usuario pueda interactuar con la base de datos de manera efectiva
y segura.

„ Administrador de base de datos

Es el usuario encargado de la gestión de la base de datos en su


totalidad. Sus funciones incluyen la creación de usuarios, asigna-
ción de permisos, monitoreo de la base de datos, configuración
y mantenimiento del servidor de la base de datos.

„ Desarrollador de aplicaciones

Utiliza la base de datos para crear aplicaciones y programas que


interactúen con la misma. Se encarga de diseñar y desarrollar
aplicaciones que utilicen la información almacenada en la base
de datos para realizar operaciones y presentar los resultados.

„ Usuario final

Este es el usuario que va a utilizar la aplicación o programa desa-


rrollado para acceder a la información almacenada en la base de
datos. Suelen ser personas que no tienen conocimientos técnicos
en bases de datos y utilizan la aplicación para realizar consultas,
ingreso de datos, informes y otras tareas.

„ Analista de datos

Va a realizar un uso de la base de datos para obtener información


significativa a partir de los datos almacenados. Su trabajo inclu-
ye el análisis de datos, la creación de informes, la identificación

17
Módulo de Base de datos

tanto de tendencias como de patrones y la toma de decisiones


basada en los datos.

„ Usuario de consulta

Este tipo de usuario utiliza la base de datos para realizar consul-


tas directas sobre la información almacenada en la misma. Por lo
general, estos usuarios tienen conocimientos técnicos en bases
de datos y utilizan lenguajes de consulta como SQL para acceder
y manipular los datos.

Figura 1.8 Jerarquía de usuarios.

Por otro lado, hay varios lenguajes de bases de datos que son rele-
vantes hoy en día, cada uno con sus propias fortalezas y debilidades.

En un primer momento, los podemos dividir en dos grandes grupos:

„ Lenguajes declarativos

Los lenguajes declarativos se utilizan para definir qué es lo que


se quiere hacer con los datos, sin necesidad de especificar cómo
hacerlo. Estos lenguajes se centran en la descripción del resultado
deseado y no en la secuencia de instrucciones necesarias para
obtener ese resultado.

El ejemplo más conocido de un lenguaje declarativo es SQL, que


se utiliza para interactuar con bases de datos relacionales.

„ Lenguajes imperativos

Los lenguajes imperativos se utilizan para definir cómo se deben


realizar las tareas en una base de datos. Estos lenguajes se cen-
tran en la secuencia de instrucciones que se deben seguir para
obtener el resultado deseado.

Dentro de la programación imperativa se incluyen lenguajes de


programación como Java, Python, PHP y C#, que se utilizan para
crear aplicaciones y programas que interactúan con bases de datos.

18
UNIDAD 1 | Introducción a las bases de datos

Programación Programación
impera�va declara�va

Programación Programación funcional


estructurada •Las funciones son elementos
•Divida en bloques indispensables
•Secuencias
•Iteraciones

Programación modular Programación lógica


•Segmentación •Los programas se componen
•Aislamiento de hechos, predicados
•Compar�mentalización y relaciones entre ellos
•Construcción de estructuras
por módulos individuales

Figura 1.9 Distintos tipos de paradigmas de programación. Saber más


Un lenguaje procedural
Ambos tipos de lenguajes tienen sus ventajas y desventajas. Los utiliza procedimientos
o subrutinas para
lenguajes declarativos, como SQL, son más fáciles de aprender y organizar el código en
utilizar para tareas específicas de bases de datos, como consultas bloques estructurados
y actualizaciones de datos. y reutilizables. Las
instrucciones se
organizan en una
Por otro lado, los lenguajes procedurales son más flexibles y per- secuencia lógica
para realizar tareas
miten una programación más compleja y avanzada, lo que los hace específicas y se utilizan
adecuados para aplicaciones empresariales y proyectos a gran escala. variables y estructuras
de control de flujo para
manipular los datos y
Más allá de la diferenciación entre lenguajes procedurales y lenguajes tomar decisiones
en tiempo de
declarativos, podemos hacer otra diferenciación entre los lenguajes SQL ejecución.
y los NoSQL.

NoSQL

En lugar de utilizar tablas y relaciones entre ellas, las bases de datos


NoSQL utilizan diversos modelos de datos para almacenar y recupe-
rar información, como documentos, grafos, columnas y claves-valor.

Por lo tanto, NoSQL abarca una gran variedad de tecnologías y lengua-


jes de programación. Algunos ejemplos de lenguajes de programación
utilizados para trabajar con bases de datos NoSQL son:

„ MongoDB

Utiliza un lenguaje de consultas llamado MongoDB Query Lan-


guage (MQL) que se basa en el formato de documentos BSON
(Binary JSON) y permite buscar y manipular datos almacenados
en MongoDB.

19
Módulo de Base de datos

„ Cassandra

Hace uso de su propio lenguaje de consulta llamado Cassandra


Query Language (CQL), que se parece a SQL en su sintaxis, pero
está optimizado para trabajar con grandes conjuntos de datos
distribuidos.

„ Apache CouchDB

Utiliza JavaScript como lenguaje de consulta para acceder y ma-


nipular los datos almacenados en la base de datos.

„ Neo4j

Realiza las consultas a través de Cypher, un lenguaje específico


para bases de datos de grafos que permite buscar y manipular
datos en un grafo de manera eficiente.

SQL

Los lenguajes SQL se utilizan para crear, modificar y eliminar bases


Glosario de datos y sus objetos, como tablas, vistas e índices. Además, per-
miten realizar consultas para recuperar datos de una o varias tablas
SQL (Structured Query
Language, Lenguaje de de la base de datos.
Consulta Estructurada,
en español): es
un lenguaje de Los lenguajes SQL se utilizan para crear, modificar y eliminar bases
programación utilizado de datos y sus objetos, como tablas, vistas e índices. Además, per-
en la gestión de bases
de datos relacionales miten realizar consultas para recuperar datos de una o varias tablas
para crear, modificar de la base de datos.
y consultar
información
almacenada Existen varios lenguajes de programación que se califican como SQL.
en ellas.
Algunos de los más utilizados son:

„ MySQL: es un sistema de gestión de bases de datos relacionales


de código abierto que utiliza el lenguaje SQL para interactuar con
la base de datos.

„ Oracle Database: es un sistema de gestión de bases de datos


relacionales desarrollado por Oracle Corporation que también
utiliza el lenguaje SQL.

„ Microsoft SQL Server: es un sistema de gestión de bases de da-


tos relacionales desarrollado por Microsoft que también utiliza
el lenguaje SQL.

„ PostgreSQL: es un sistema de gestión de bases de datos relacio-


nales de código abierto que utiliza el lenguaje SQL.

„ SQLite: es un sistema de gestión de bases de datos relacionales


ligero que también utiliza el lenguaje SQL.

20
UNIDAD 1 | Introducción a las bases de datos

Estos son solo algunos ejemplos de sistemas de gestión de bases


de datos que utilizan el lenguaje SQL. La mayoría de los sistemas de
gestión de bases de datos relacionales utilizan SQL como lenguaje
principal para interactuar con la base de datos.

Hay que considerar que la elección de una base de datos NoSQL o


SQL va a depender no solo del sistema, el usuario o la aplicación de
recuperación y muestra de datos (en menor medida), sino de la infor-
mación que ha de guardarse en la base de datos propiamente dicha.

Cuando la información está bien estructurada, ordenada, segmentada


y queremos hacer consultas complejas, lo lógico es apostar por SQL.

Si, por el contrario, los datos no están estructurados, el tipo de


datos es complejo y están relacionados entre sí por grafos o pares
clave-valor, lo más lógico es seleccionar una base de datos NoSQL.

NoSQL SQL

Juegos Tablas

IoT Almacenaje

Redes sociales Empresa

Figura 1.10 Principales áreas de actuación de bases de datos SQL y NoSQL.

Debido al tipo de datos que se están generando hoy en día a través


de dispositivos IoT, aplicaciones, juegos, redes sociales, etc., está Recuerda
creciendo mucho el uso de bases de datos NoSQL. El término IoT, o
Internet de las cosas,
describe la red de
En cuanto al rendimiento y otros factores a tener en cuenta ajenos a objetos físicos
los datos, existen diferencias significativas entre ambos sistemas de («cosas") que llevan
incorporados sensores,
bases de datos, tal y como se muestra en la siguiente tabla: software y otras
tecnologías que
permiten
la conexión y el
Factor NoSQL SQL intercambio de datos
con diferentes
Rendimiento Muy bueno Bajo dispositivos y sistemas
a través de Internet.
Confiabilidad Bajo Bueno

Disponibilidad Bueno Bueno

Consistencia Bajo Bueno

Almacenamiento Muy bueno Bueno

Escalabilidad Muy bueno Bueno

21
Módulo de Base de datos

„ Diccionario de datos: concepto,


contenidos, tipo y uso
Ya hemos definido anteriormente el concepto de diccionario de datos,
como una de las piezas clave en cuanto a la información de una base
de datos. Vamos a verlo más en detalle:

Cuando se crea y define una base de datos se deposita en ella


la especificación de la estructura, el tipo de datos, las restric-
ciones, las relaciones, etc., por tanto, un diccionario de datos
es el lugar donde se almacena la información referente a todos
los datos que forman la base de datos.

Es una herramienta importante en la administración y gestión de ba-


ses de datos. En términos generales, un diccionario de datos es una
base de datos que contiene información sobre otras bases de datos.
Es decir, es una especie de «meta-base de datos» que describe los
datos y objetos que se encuentran en la base de datos principal.

• Es un listado • Datos E/S,


organizado de componentes,
todos los datos flujos, detalles de
que pertenecen a las relaciones, etc.
una base de datos

¿Qué ¿Qué
es? define?

¿Qué ¿Qué
guarda? aporta?
• Detalles del • Precisión sobre
diagrama del flujo los datos que se
de datos manejan en un
sistema, evitando
ambigüedades

Figura 1.11 Preguntas sobre un diccionario de datos.

El contenido de un diccionario de datos puede variar dependiendo


del sistema de gestión de bases de datos utilizado, pero suele incluir
información sobre:

„ Tablas y vistas: Nombre de la tabla, número de columnas, nombres


de las columnas, tipos de datos de las columnas, restricciones
de integridad, etc.

„ Índices: Nombre del índice, tabla a la que pertenece, columnas


incluidas en el índice, tipo de índice, etc.

„ Procedimientos almacenados y funciones: Nombre del procedi-


miento o función, parámetros de entrada y salida, código fuente
del procedimiento o función, etc.

22
UNIDAD 1 | Introducción a las bases de datos

„ Usuarios y permisos: Nombres de usuario, roles y privilegios de


acceso a las diferentes partes de la base de datos.

„ Configuración de la base de datos: Tamaño y ubicación de los


archivos de datos y de registro, opciones de configuración de la
base de datos, etc.

En cuanto al tipo de diccionario de datos, hay dos tipos principales:


el diccionario de datos interno y el diccionario de datos externo.

„ El diccionario de datos interno está integrado en el sistema de


gestión de bases de datos y se utiliza para almacenar información
sobre la propia base de datos.

„ El diccionario de datos externo es una base de datos separada que


contiene información adicional sobre la base de datos principal.

El diccionario de datos se utiliza para varias funciones, entre ellas:

„ Ayuda en la planificación y diseño de bases de datos.

„ Facilita el mantenimiento y administración de bases de datos, ya


que proporciona información sobre la estructura y contenido de
la base de datos.

„ Proporciona información esencial para los desarrolladores de


aplicaciones que necesitan conocer los datos que se encuentran
en la base de datos.

„ Arquitectura ANSI/X3/SPARC: nivel


interno, nivel conceptual y nivel externo
La arquitectura ANSI/X3/SPARC es un modelo conceptual de arquitec-
tura de bases de datos que se utiliza para describir cómo se organizan
las bases de datos y cómo se accede a ellas.

Figura 1.12 Las arquitecturas como modelo de eficiencia.

23
Módulo de Base de datos

La arquitectura está compuesta por tres niveles: el nivel interno, el


nivel conceptual y el nivel externo.

Figura 1.13 Niveles de la arquitectura.

„ Nivel interno

El nivel interno se refiere a cómo se almacenan los datos física-


mente en la base de datos. Este nivel describe la estructura de
almacenamiento físico de los datos, como los archivos de datos
y las estructuras de índice, así como la forma en la que se acce-
de a ellos mediante técnicas de acceso físico como la lectura y
escritura en disco.

Este nivel es manejado por el sistema de gestión de bases de


datos y es responsable de la implementación de la base de datos.

„ Nivel conceptual

El nivel conceptual alude a cómo se organizan los datos lógica-


mente en la base de datos. Describe la estructura de la base de
datos de manera abstracta, independientemente del hardware o
software utilizado para almacenarla.

En este nivel se define la estructura de la base de datos, inclu-


yendo tablas, relaciones entre tablas, restricciones de integridad
y reglas de negocio.

Este nivel es manejado por los diseñadores de bases de datos y


es el nivel más importante para los usuarios finales y los desa-
rrolladores de aplicaciones.

24
UNIDAD 1 | Introducción a las bases de datos

„ Nivel externo

El nivel externo señala cómo los usuarios acceden a los datos en


la base de datos. Proporciona una vista personalizada de la base
de datos para cada usuario o grupo de usuarios. Cada vista se
basa en el nivel conceptual de la base de datos, pero se ajusta
para satisfacer las necesidades específicas de los usuarios.

Por ejemplo, un usuario puede acceder a una vista que muestre


solo los datos relevantes para su trabajo diario.

Este nivel es manejado por los desarrolladores de aplicaciones y


proporciona una interfaz de usuario para acceder a la base de datos.

„ Modelos de bases de datos: jerárquico,


red y relacional
El modelo relacional es el más utilizado en la actualidad para la
creación de bases de datos. Consiste en una estructuración de los Recuerda
datos de manera que todos estén relacionados entre sí y agrupados Una tupla es un registro
en tuplas a las que se añade la información en forma de registros. o fila individual en una
tabla de una base de
datos que contiene
información específica
en campos o columnas
relacionados.

Figura 1.14 Modelo de tablas relacional.

25
Módulo de Base de datos

El sistema jerárquico es un modelo de almacenamiento de datos


en el que la información se organiza como un árbol, donde un nodo
padre contiene a los hijos. Para acceder a los datos, se sigue una ruta
padre-hijo desde el nodo padre. Sin embargo, este modelo presenta
limitaciones, como la dificultad para controlar la duplicación de datos y
la posible afectación de la integridad referencial, ya que la eliminación
de un nodo padre puede afectar a otros datos dependientes de él.

Figura 1.15 Modelo jerárquico.

El modelo de red también utiliza las referencias a otros nodos padre


para construir los registros almacenados. La diferencia con el modelo
jerárquico es que un nodo puede tener más de un padre, haciéndolo
más flexible.

Figura 1.16 Modelo de red.

26
UNIDAD 1 | Introducción a las bases de datos

„ Bases de datos centralizadas y bases


de datos distribuidas. Introducción,
ventajas e inconvenientes. Técnicas
de fragmentación: vertical, horizontal,
mixta. Técnicas de distribución
de datos. Esquemas de asignación
y replicación de datos
Dependiendo de si los componentes de la base de datos están ubi- Saber más
cados en una misma máquina o bien distribuidos en distintos orde-
Un sistema de bases
nadores de una red, las bases de datos se clasifican en centralizadas de datos distribuido
o distribuidas. proporciona una
mayor disponibilidad
y escalabilidad al
Antiguamente, la mayoría de los sistemas de información era de ca- permitir que múltiples
usuarios accedan a los
rácter centralizado; sin embargo, en la actualidad, debido al aumento datos desde diferentes
de la capacidad de las redes de comunicación y a la globalización de ubicaciones
geográficas.
las empresas, resulta cada vez más interesante tener los datos re-
partidos entre los distintos sitios desde donde se gestionan.

Figura 1.17 Base de datos distribuida.

27
Módulo de Base de datos

Cuando se tienen datos distribuidos en varios lugares, es común que


la relación entre ellos quede dividida en diferentes partes. Para mane-
jar esta situación, se utiliza un proceso llamado fragmentación, que
puede llevarse a cabo de diversas formas: horizontal, vertical o mixta.

En términos sencillos, podemos pensar en la base de datos como una


tabla con filas de registros y columnas con sus respectivos campos. En
una fragmentación horizontal se distribuyen las filas, en una vertical
se distribuyen las columnas y en una mixta se establece un criterio
para hacer una combinación de ambas soluciones.

Figura 1.18 Fragmentación de la información en una base de datos.

Para que la estructura física de una base de datos resulte transparente


al usuario, el administrador deberá escoger un SGBD que soporte la
distribución.

28
UNIDAD 1 | Introducción a las bases de datos

2. Modelo entidad-relación


El modelo entidad-relación (ER) es un modelo conceptual utilizado
en el diseño de bases de datos en el que se representan los objetos
y relaciones relevantes en un sistema.
Saber más
Se utiliza para describir la estructura de una base de datos de ma- El modelo entidad-
relación es importante
nera independiente del sistema de gestión de base de datos especí- en la gestión de
fico utilizado. bases de datos ya que
permite representar de
manera visual y clara la
estructura de los datos

„ El concepto de modelo entidad-relación y sus relaciones, lo


que facilita su diseño,
implementación
y mantenimiento.

Figura 1.19 Ejemplo de modelo entidad-relación.

El modelo ER se basa en el concepto de entidades y las relaciones


que mantienen entre sí. Una entidad representa un objeto o concepto
del mundo real, como un cliente, un producto o una factura. Cada
entidad tiene atributos que describen las características de la entidad,
como el nombre, la dirección o el número de teléfono de un cliente.

Las relaciones en el modelo ER describen las conexiones entre las


entidades.

Por ejemplo, un cliente puede realizar varios pedidos, lo que representa


una relación entre las entidades «cliente» y «pedido». Cada relación
tiene un tipo que describe cómo se relacionan las entidades, como
«uno a uno», «uno a muchos» o «muchos a muchos».

Además, el modelo ER también incluye conceptos como la cardina-


lidad, que se utiliza para describir el número de instancias de una

29
Módulo de Base de datos

entidad que pueden estar relacionadas con otra entidad. La cardi-


nalidad puede ser «uno», «muchos» u «opcional» y se utiliza sobre
todo para definir las restricciones de integridad referencial en la base
de datos. Este concepto lo veremos en profundidad más adelante.

Figura 1.20 Modelo entidad-relación con dos entidades y atributos.

Este tipo de modelo se representa gráficamente utilizando diagramas


entidad-relación, que consisten en entidades, relaciones y atributos.

„ Las entidades se representan como rectángulos.

„ Las relaciones como líneas a través de rombos que conectan las


entidades.

„ Los atributos como óvalos que se conectan a las entidades.

Figura 1.21 Modelo con dos relaciones.

30
UNIDAD 1 | Introducción a las bases de datos

También se utilizan subconjuntos de entidades y relaciones llamados


modelos de datos para representar una vista específica de la base de
datos. Por ejemplo, un modelo de datos puede incluir solo las enti-
dades y las relaciones necesarias para representar una funcionalidad
específica del sistema.

„ Entidad: representación gráfica,


atributos y tipos de llaves
Un diagrama entidad-relación es una representación visual que se
usa para hacer el modelado de datos de un sistema de información.
Es una manera de plasmar en forma de diagrama una situación de la
vida real para facilitar la posterior construcción de una base de datos.

Cada entidad dentro del modelo ER tiene uno o más atributos que
describen las características de la entidad.

Figura 1.22 Elementos gráficos de una entidad.

Por ejemplo, si estamos diseñando una base de datos de una tienda


online, una entidad podría ser «producto» y sus atributos podrían
incluir el nombre del producto, la descripción, el precio y el número
de existencias.

Además, cada entidad en el modelo ER tiene una o más claves que


identifican de forma única cada instancia de la entidad. Las claves se
utilizan para garantizar que no se puedan insertar registros duplicados
en la tabla de la base de datos.

En general, existen tres tipos de claves:

„ Clave única: Garantiza que no se pueden insertar registros du-


plicados en la tabla, pero no necesariamente identifica de forma
única cada registro.

„ Clave primaria: Es única y se utiliza para identificar (obviamente,


de forma única) cada registro de la tabla. Cada tabla en la base de
datos debe tener una llave primaria.

31
Módulo de Base de datos

„ Clave foránea: Establece relaciones entre tablas. Se utiliza para


conectar registros en una tabla con registros en otra tabla.

Figura 1.23 Relación entre claves foráneas y claves primarias.

En el diagrama ER, la llave primaria de una entidad se representa


gráficamente subrayando el atributo correspondiente en la entidad.
Las llaves únicas y foráneas también se representan gráficamente
en el diagrama ER.

„ Relación: representación gráfica,


atributos, grado y cardinalidad
Una relación en el contexto del modelo entidad-relación (ER) repre-
senta la conexión lógica entre dos o más entidades. Esta relación se
utiliza para describir cómo las entidades están conectadas entre sí
en la base de datos.

Figura 1.24 Relación de dos entidades.

32
UNIDAD 1 | Introducción a las bases de datos

En la representación gráfica del modelo ER, las relaciones se mues-


tran como líneas que conectan dos o más entidades. Las líneas se
etiquetan con el nombre de la relación, y también pueden incluir
información adicional como la cardinalidad y la participación de las
entidades en la relación.

Los atributos en una relación hacen referencia a las características


o propiedades que describen a una entidad y que se utilizan para
definir su naturaleza o función en el sistema.

Figura 1.25 Entidad con atributos.

En una relación de bases de datos, los atributos se utilizan para


definir las columnas de una tabla, que representan las entidades y
sus propiedades.

Cada atributo define un tipo de datos específico, como un número


entero, una cadena de texto, una fecha, un booleano, etc., y propor-
ciona información valiosa sobre las entidades en la tabla.

Figura 1.26 Entidad «disco» con atributos.

El grado de una relación se refiere al número de entidades que parti-


cipan en la relación. Una relación puede tener dos entidades, lo que se
conoce como relación binaria, o puede tener más de dos entidades,
lo que se conoce como relación n-aria.

En la Figura 1.27 podemos ver un ejemplo de relación binaria o de grado 2:

Figura 1.27 Relación de grado 2.

33
Módulo de Base de datos

Se asume que un grupo está relacionado con una canción porque la


toca, bien sea en un directo, en un disco, etc.

Si vamos un poco más allá con el mismo ejemplo, podemos llegar a


una relación ternaria o de grado tres, puesto que podemos relacionar
tres entidades:

Figura 1.28 Relación de grado 3.

Estas tres entidades están relacionadas porque un grupo toca un


concierto, toca una canción y, obviamente, en un concierto puede
tocar una canción.

En el diagrama ER, una relación se representa como una línea que


conecta las entidades participantes. La línea de relación puede tener
una flecha que apunta hacia una entidad, lo que indica que la entidad
es la entidad principal de la relación.

Figura 1.29 Relación de grado 3 con entidad principal.

En el caso anterior, consideramos a la entidad «Grupo» como a la


entidad principal de todo el modelo.
Recuerda
No hay que confundir Los atributos de la relación se pueden mostrar en el diagrama ER
los términos
cardinalidad y grado, ya mediante una etiqueta que se coloca cerca de la línea de la relación.
que la cardinalidad se
refiere a la relación que
existe entre dos Supongamos que estamos creando una base de datos para una tienda
entidades, mientras de música online. Una de las entidades que podríamos tener es la en-
que el grado se refiere
al número de entidades tidad «Canción», que tiene atributos como «Título», «Artista», «Álbum»
que participan en una y «Duración». Otra entidad que podríamos tener es la entidad «Lista de
relación.
reproducción», que tiene atributos como «Nombre» y «Descripción».

34
UNIDAD 1 | Introducción a las bases de datos

Para conectar estas dos entidades podemos crear una relación llamada
«Contiene», que muestra qué canciones están incluidas en qué listas
de reproducción. La relación «Contiene» tendría un grado 2, ya que
conecta la entidad «Canción» con la entidad «Lista de reproducción».
La relación tendría un atributo de cardinalidad «muchos a muchos»,
ya que una lista de reproducción puede contener muchas canciones
y una canción puede estar en varias listas de reproducción.

En el diagrama ER, la relación «Contiene» se representaría como una


línea que conecta las entidades «Canción» y «Lista de reproducción»,
etiquetada con el nombre de la relación.

Figura 1.30 Ejemplo de relación de dos entidades.

La línea de la relación también tendría una flecha que apunta hacia la


entidad «Lista de reproducción», lo que indica que la entidad «Lista
de reproducción» es la entidad principal de la relación. Además, la
línea de la relación tendría una etiqueta que indica la cardinalidad
«muchos a muchos».

„ Diagramas entidad-relación
Cardinalidad

Pese a que ya hemos nombrado y descrito brevemente el concepto


de cardinalidad anteriormente, vamos a tratarlo más a fondo.

35
Módulo de Base de datos

La cardinalidad representa el número de relaciones que existen en-


tre varias entidades. Esta se representa mediante una etiqueta en el
exterior de la relación.

Las relaciones pueden ser entre uno y uno (1:1), entre uno y varios
(1:N), o entre varios y varios (N:M). Veamos algunos ejemplos:

„ 1:1

En este tipo de relación se unen dos entidades de manera única;


eso quiere decir que en ningún caso cualquiera de las dos están
relacionadas con una tercera entidad.

Figura 1.31 Relación 1 y 1.

Este sería el caso, por ejemplo, de un matrimonio: un marido


(entidad) está casado (relación) con una única esposa y viceversa.

„ 1:N

Es la relación en la que una entidad está relacionada con varias


entidades, pero estas, a su vez, solo pueden estar conectadas
con la primera, pero con ninguna más.

Figura 1.32 Relación entre uno y varios.

36
UNIDAD 1 | Introducción a las bases de datos

Como ejemplo, podemos imaginarnos que una persona (entidad)


puede tener (relación) varias guitarras, pero una guitarra solo
puede tener un dueño.

„ N:M

Es la relación en la que todas las entidades pueden estar rela-


cionadas con varias entidades.

Figura 1.33 Relación entre varios y varios.

Este es el caso, por ejemplo, de un supermercado, en el que una


marca (entidad) puede ser adquirida (relación) por varios clientes
(entidad); de la misma manera, varios clientes pueden adquirir
varias marcas.

Tipos de correspondencias en las relaciones:


binaria, reflexiva y otros

Los modelos entidad-relación no son capaces de representar to-


talmente algunas situaciones de la vida real debido a una serie de
limitaciones semánticas.

Por ello, en algunos casos, se opta por utilizar modelos ampliados o


extendidos que añaden nuevas funcionalidades al modelo original.

Las entidades reflexivas son aquellas que tienen alguna relación


con ellas mismas. Suelen emplearse para representar las relaciones
entre personas.

37
Módulo de Base de datos

Figura 1.34 Entidad reflexiva.

Por ejemplo, la entidad «Alumno» puede ser reflexiva si se utiliza la


relación «Delegado», ya que un alumno puede ser delegado de otros
alumnos

Figura 1.35 Relación reflexiva.

Entidades fuertes y débiles

En el modelo entidad-relación es común que una de las entidades


dentro de una relación adopte una posición de debilidad. Estas en-
tidades no pueden ser identificadas únicamente por sus atributos y
dependen de otras para tener un significado dentro del modelo.

Por ejemplo, en una guitarra que tiene 6 cuerdas (cada una


con un grosor determinado) la entidad «Cuerda» no tiene
mucho sentido si no está unida a la entidad «Guitarra», ya
que, si bien la cuerda tiene el atributo «Grosor», no tiene el
identificador de la guitarra a la que pertenece. Por tanto,
la entidad «Cuerda» sería una entidad débil puesto que
no podemos llegar a explicarla sin tener que explicar la
entidad «Guitarra».

Las entidades débiles nunca pueden ir solas, sino que


necesitan de otra entidad para adquirir un sentido.

Una entidad fuerte es aquella que tiene una existencia


independiente, es decir, que puede existir por sí misma
sin necesidad de estar relacionada con otras entidades.

Una entidad fuerte se caracteriza por tener atributos que


la identifican de manera única y que permiten distinguirla
Figura 1.36 Entidades fuertes y débiles. de otras entidades en el modelo.

38
UNIDAD 1 | Introducción a las bases de datos

Por ejemplo, en un modelo de una biblioteca, una entidad fuerte


podría ser la entidad «Libros», que tiene atributos como «ISBN», «Tí-
tulo», «Autor», etc., y que puede existir independientemente de otras
entidades como «Estudiante» o «Profesor».

Figura 1.37 Entidades fuertes.

Además, una entidad fuerte puede participar en relaciones con otras


entidades, ya sea como entidad principal o secundaria en la relación.

Por ejemplo, en un modelo de una tienda online, la entidad «Produc-


to» es una entidad fuerte que puede estar relacionada con la entidad
«Cliente» a través de la relación de «Compra».

Por otra parte, las entidades pueden relacionarse de forma jerárquica;


es decir, estableciendo un modelo lógico en el que se aprecie una
jerarquía de unas entidades sobre otras.

La jerarquía es una manera de estructurar el modelo ER en forma de


árbol, de modo que se acerque a la programación orientada a objetos.
Estamos hablando de las entidades con relaciones binarias.

La relación conectará a dos entidades (de ahí lo de binaria) o dicho


de otra forma: la relación se considerará de grado 2. Se da cuando
esas dos entidades se relacionan para compartir datos a través de los
atributos. Se puede dar entre entidades fuertes o entre una entidad
débil y una fuerte.

Glosario
Grafo dirigido: es
Figura 1.38 Relación entre dos entidades. una estructura de
datos en la que los
nodos (vértices) están
En algunos casos será necesario representar situaciones que no conectados por aristas
o flechas que indican
pueden ser interpretadas mediante la estructura de árbol; en ese una dirección
caso el modelo ER jerárquico puede romper el esquema de manera específica entre
ellos.
puntual y permitir las relaciones entre nodos hermanos, haciendo que
el esquema jerárquico se convierta en un grafo dirigido.

39
Módulo de Base de datos

„ El modelo entidad-relación extendido


El modelo entidad-relación extendido (ER extendido) es una técnica
Recuerda de diseño de bases de datos que extiende el modelo entidad-relación
La abstracción en (ER) para incluir más detalles y relaciones entre los objetos. El ER
programación es el extendido se utiliza para modelar las relaciones complejas entre los
proceso de ocultar
detalles complejos de datos y para representar la información en términos de entidades,
implementación y atributos y relaciones.
mostrar solo los
aspectos esenciales y
relevantes de un En el modelo ER, las entidades representan objetos del mundo real,
objeto, función o los atributos representan las características de esas entidades y
proceso, lo que permite
al programador trabajar las relaciones representan las conexiones entre las entidades. El
con un nivel de modelo ER extendido agrega dos conceptos adicionales: jerarquías
complejidad reducido y
aumenta la legibilidad y y generalizaciones.
mantenibilidad del
código.

Figura 1.39 La jerarquía es la base para el flujo de datos.

„ Una jerarquía es una relación entre entidades en la que una entidad


es una «subclase» de otra entidad «superior». La entidad superior
se conoce como la entidad padre y las entidades hijas se cono-
cen como subentidades. Las subentidades heredan los atributos
y las relaciones de la entidad padre, pero también pueden tener
atributos y relaciones propias.
Saber más
Dependiendo de „ La generalización es un proceso mediante el cual se agrupan
la nomenclatura, varias entidades en una entidad general.
podemos hablar de
«clases y subclases»,
«clases padre y clases Por ejemplo, en un modelo de base de datos de una empresa, se
hija», «clases madre puede tener una entidad «Empleado» que tenga varias subentidades,
y clases hija»
o de «clase como «Gerente» y «Trabajador». La entidad «Empleado» se puede
superior y generalizar como una entidad «Persona», que representa todas las
subclase».
personas en la empresa, independientemente de su cargo.

40
UNIDAD 1 | Introducción a las bases de datos

El modelo ER extendido es útil para diseñar bases de datos com-


plejas con muchas entidades y relaciones. Al utilizar jerarquías y
generalizaciones se pueden crear modelos de datos más precisos y
detallados que reflejen mejor la realidad del mundo. Esto permite
a los desarrolladores de bases de datos crear bases de datos más
eficientes y precisas que satisfagan las necesidades de los usuarios.

3. Modelo relacional


En 1970, el informático inglés Edgar Frank Codd introdujo el modelo
relacional de una base de datos en los laboratorios de IBM en San Saber más
José, California. Este modelo rápidamente se consolidó como un Edgar Frank Codd
(1923-2003) fue un
nuevo paradigma en los modelos de bases de datos. La estructura informático británico
de datos dentro de este nuevo modelo se basa en relaciones simples y pionero en el campo
de las bases de
y uniformes, lo que significa que se trata de una nueva forma de es- datos. Además de sus
tructurar y procesar una base de datos, en la que el lugar y el modo contribuciones en este
en que se almacenen los datos no tienen relevancia. campo, Codd también
realizó investigaciones
importantes en el
Una de las principales ventajas que va a representar el modelo rela- campo de
la lógica y la
cional es que los datos se almacenan de una manera que resulta más teoría de la
fácil de entender y utilizar para los usuarios. Los datos se organizan computación.
en tablas, lo que permite establecer conexiones (relaciones) entre
los datos de distintas tablas de manera versátil y sencilla.

Figura 1.40 Elementos en niveles de una base de datos.

41
Módulo de Base de datos

A través de estas conexiones, los datos de ambas tablas pueden re-


lacionarse, lo que es la razón por la cual se le conoce como «modelo
relacional».

Figura 1.41 Modelo de base de datos distribuida.

Durante su diseño, una base de datos relacional pasa por un proceso


llamado normalización de una base de datos.

„ Terminología del modelo relacional


Como ya hemos comentado anteriormente en varias ocasiones, cuando
hablamos de un modelo relacional, estamos hablando de un modelo
de datos orientado a describir las características de una base de datos.

Figura 1.42 Interconexión de tablas.

Pero ¿qué describe o qué información exactamente es la que nos va a


aportar este tipo de modelo? Un modelo de datos permite describir:

„ Estructuras de datos: Son los tipos de datos contenidos en la


base de datos y la forma en que estos se relacionan.

„ Restricciones de integridad: Son las condiciones que los datos


deben cumplir para reflejar correctamente la realidad deseada.

„ Operaciones de manipulación: Son aquellas operaciones de agre-


gado, borrado, modificación y recuperación de los datos de la base.

42
UNIDAD 1 | Introducción a las bases de datos

En la anterior Figura 1.42 se puede observar la estructura de una


base de datos, incluyendo las relaciones entre las diferentes tablas
mediante las flechas correspondientes y con la relación de cantidad
pertinente (1 y 1, 1 y varios…).

La clasificación de los modelos de datos se realiza según el nivel de


abstracción que presentan:

Conceptuales

• Describen las estructuras de los datos y sus restricciones


de integridad.
• Se u�lizan en la etapa de análisis, y representan los
elementos que intervienen y sus relaciones.

Lógicos

• Son los orientados a las operaciones.


• Normalmente se implementan en algún manejador
de base de datos.

Físicos

• Son las estructuras de datos en bajo nivel, implementadas


dentro del propio manejador.

Figura 1.43 Modelos de datos según el nivel.

Por otra parte, podemos entender también la base de datos como un


conjunto o colección de relaciones entre elementos. Vamos a ver la
terminología correcta para este tipo de representación:

Relación

• Conjunto de datos organizados en forma tabular.


Se compone de tuplas y atributos; cada intersección de tupla
y atributo con�ene un valor.

Tupla

• Cada uno de los registros dentro de una tabla.

Atributo

• Corresponde a las divisiones ver�cales de la relación.


El conjunto de todos los atributos es lo que compone
una tupla.

Figura 1.44 Nomenclatura para elementos de una base de datos.

43
Módulo de Base de datos

Lo cierto es que tanto el término relación y como el de tupla han caído


en desuso. Así pues, utilizaremos para ellos la terminología más co-
mún y denominaremos tabla (table) a la relación y fila (row) a la tupla.

En cambio, el término atributo, denominado también columna (co-


lumn), se utiliza indistintamente al hablar del modelo relacional.

MODELO RELACIONAL SGBD

Relación Tabla Fichero

Tupla Fila Registro

Atributo Columna Campo

„ El concepto de relación. Propiedades


y relaciones
En el modelo relacional de bases de datos, una relación se define
como una conexión o vínculo entre dos o más entidades (o tablas).
Cada relación tiene un nombre único que la identifica y está com-
puesta por uno o más atributos.

Las propiedades de una relación en un modelo relacional son:

„ Nombre: Cada relación tiene un nombre único que la identifica.

„ Grado: El grado de una relación se refiere al número de entidades


o tablas que participan en la relación. Una relación binaria invo-
lucra dos entidades, mientras que una relación ternaria involucra
tres entidades, y así sucesivamente.

„ Cardinalidad: La cardinalidad de una relación se refiere al número


de instancias de una entidad que se relacionan con instancias de
otra entidad. La cardinalidad puede ser uno-a-uno, uno-a-muchos,
muchos-a-uno o muchos-a-muchos.

„ Restricciones de integridad referencial: Las restricciones de in-


tegridad referencial se utilizan para garantizar que las relaciones
entre las tablas sean coherentes y precisas.

Por ejemplo, una restricción de integridad referencial podría re-


querir que cada registro en una tabla secundaria esté relacionado
con un registro en una tabla primaria.

„ Atributos de relación: Los atributos de relación se utilizan para


describir la relación en sí misma y se almacenan en una tabla se-
parada llamada tabla de relación. Estos atributos pueden incluir
información como la fecha de inicio de la relación o el estado de
la relación.

44
UNIDAD 1 | Introducción a las bases de datos

Cada relación se representa mediante una línea que conecta las ta-
blas involucradas. Los atributos que se comparten entre las tablas
se utilizan para definir la relación.

„ Atributos y dominio de los atributos


En el modelo relacional de bases de datos, los atributos son las
características o propiedades de las entidades o relaciones que se
están modelando. Cada atributo tiene un nombre único y un tipo de
datos asociado que define su dominio.

Por ejemplo, si estamos modelando una tabla de empleados, el atri-


buto «Nombre» podría tener un dominio de caracteres alfanuméricos, Recuerda
mientras que el atributo «Edad» podría tener un dominio de números El dominio de un
enteros. atributo se refiere al
conjunto de valores
permitidos para ese
El dominio de un atributo en una base de datos es el conjunto de atributo.
valores permitidos que puede tomar ese atributo, lo que establece
las restricciones para los datos que pueden ser almacenados en ese
campo.

Es importante elegir el tipo de datos adecuado para cada atributo


para garantizar la integridad de los datos en la base de datos.

Por ejemplo, si el atributo «Edad» se define como una cadena de


caracteres en lugar de un número entero, los cálculos o consultas
que involucren ese atributo pueden producir resultados incorrectos.

Los atributos se utilizan para describir las características de las en-


tidades en el modelo relacional, y cada atributo se almacena en una
columna dentro de la tabla que representa esa entidad. El conjunto
de atributos y sus dominios definen el esquema de la tabla, que se
utiliza para crear y mantener la estructura de la base de datos.

„ El concepto de claves y tipos


de claves: claves candidatas,
claves primarias, claves
foráneas, claves alternativas
Una clave candidata es un conjunto de una o varias columnas que
pueden ser consideradas como claves primarias potenciales en una
tabla. Cada clave candidata es única e irrepetible, lo que significa
que no puede haber dos registros que tengan el mismo valor en las
columnas de la clave candidata.

Aquí hay un ejemplo de cómo se puede utilizar una clave candidata


en una tabla:

45
Módulo de Base de datos

Figura 1.45 Clave candidata.

En este ejemplo, la columna «Correo electrónico» puede ser consi-


derada como una clave candidata para identificar de manera única a
cada cliente en la tabla de «Clientes».

Cada dirección de correo electrónico es única en la tabla, lo que


significa que no puede haber dos clientes con la misma dirección de
correo electrónico. Por lo tanto, esta columna es una clave candidata
efectiva que puede ser considerada como una posible clave primaria
en la tabla de «Clientes».

Es importante destacar que una tabla puede tener varias claves can-
didatas, pero solo una de ellas puede ser seleccionada como la clave
primaria de la tabla, que es la clave candidata que se utiliza para
establecer relaciones con otras tablas en la base de datos.

Figura 1.46 Relaciones entre tablas.

No hay que confundir las claves candidatas con otro termino, llamado
superclaves. Si bien son términos que guardan muchas similitudes y
relación, la diferencia radica en que una superclave puede contener
atributos adicionales que no son necesarios para identificar de manera

46
UNIDAD 1 | Introducción a las bases de datos

única cada tupla, mientras que una clave candidata no tiene atributos
redundantes y es la mínima combinación de atributos necesaria para
identificar de forma única cada tupla.

Figura 1.47 Superclave.

Por lo que, todas las claves candidatas son superclaves, pero no todas
las superclaves son claves candidatas.

Por otra parte, cuando hablamos de una clave primaria, nos referimos
a un atributo (o conjunto de atributos) de una tabla que se utiliza
para identificar de manera única cada fila o registro en esa tabla. La
clave primaria actúa como un identificador único para cada fila de
la tabla y se utiliza para establecer relaciones con otras tablas en la
base de datos.

Es importante destacar que una tabla solo puede tener una clave
primaria y esta clave no puede ser nula ni repetirse en otras filas
de la misma tabla. Además, la clave primaria debe ser estable y no
modificarse con el tiempo.

Figura 1.48 Clave primaria.

Por ejemplo, en una tabla de «Clientes» de una tienda online, el atri-


buto «ID de cliente» puede ser la clave primaria, ya que identifica de
manera única cada cliente en la tabla. Otros atributos de la tabla,
como el nombre o la dirección del cliente, pueden no ser únicos y,
por lo tanto, no pueden ser claves primarias.

47
Módulo de Base de datos

Las claves primarias se utilizan para establecer relaciones entre ta-


blas en la base de datos.

Una clave foránea es un campo o conjunto de campos en una tabla


que hace referencia a la clave primaria de otra tabla, lo que establece
una relación entre ellas. La clave foránea se utiliza para mantener la
integridad referencial entre las tablas, asegurando que no se puedan
insertar o actualizar filas en la tabla secundaria que hagan referencia
a filas inexistentes en la tabla principal.

Figura 1.49 Clave foránea.

„ Reglas de integridad: integridad


de entidad e integridad referencial
Uno de los principales hándicaps a la hora de realizar cambios en
los datos mediante el borrado y la modificación de registros es la
integridad referencial.

Debemos tener en cuenta que las bases de datos siguen un modelo


Recuerda relacional, lo que significa que las tablas están interconectadas entre
La integridad, cuando sí. Si eliminamos un registro que está referenciado en otra tabla, no
hablamos de bases de haríamos más que dejar dicha tabla «huérfana» y un «cabo suelto», lo
datos, se refiere a la
precisión, consistencia que pondría en peligro la integridad estructural de la base de datos.
y validez de los datos
almacenados, lo que
garantiza que los datos
Para solucionar este problema, debemos repasar todas las tablas y
sean confiables y útiles modificar esos registros, lo que nos puede suponer un trabajo ina­
para los usuarios y barcable dependiendo del volumen de la base de datos. Por esta
aplicaciones que los
utilizan. razón, los sistemas gestores ofrecen una función que permite realizar
los cambios en cascada, una tarea que consiste en analizar todas
las tablas de la base de datos y aplicarles, de manera automáti-
ca, los cambios necesarios a aquellos registros que hagan referencia
a los datos modificados.

Para que esto sea posible, es necesario establecer correctamente las


relaciones entre claves primarias y claves foráneas entre las tablas.

En el siguiente ejemplo (Figura 1.50) se muestra cómo la tabla padre


tiene la clave primaria id PRIMARY KEY (id) y que la tabla hijo tiene

48
UNIDAD 1 | Introducción a las bases de datos

la instrucción FOREIGN KEY (padre_id) que indica que su atribu-


to padre_id está vinculado a la id de la tabla padre REFERENCES
padre(id).

Esto significa que, si eliminamos el registro padre (o modificamos la


ID), existirá un registro hijo que quedará huérfano y se producirá un
error de integridad referencial.

Para solucionarlo, disponemos de las instrucciones ON UPDATE y ON


DELETE, que se encargan de modificar automáticamente el registro
de la tabla hijo al realizar modificaciones en la tabla padre.

Los cambios pueden ser:

FOREIGN KEY [id] (nombre_índice, …)

REFERENCES nombre_de_tabla (nombre_índice, …)

[ON DELETE {RESTRICT | CASCADE | SET NULL |


NO ACTION}]

[ON UPDATE {RESTRICT | CASCADE | SET NULL |


NO ACTION}]

Dichos cambios soportan los siguientes modificadores:

„ CASCADE: Modifica el valor de la clave foránea por el nuevo valor.

„ SET NULL: Modifica la clave foránea y pone el valor NULL.

„ NO ACTION: Omite la sentencia ON UPDATE y ON DELETE, con lo


que no se realiza ninguna acción.

„ RESTRICT: Equivale a NO ACTION.

Figura 1.50 Código con reglas de integridad.

49
Módulo de Base de datos

„ Traducción del modelo entidad-relación


al modelo relacional
Después de crear un diagrama de entidad-relación que representa
las relaciones entre los elementos del mundo real, el siguiente paso
para construir una base de datos es convertir el diagrama ER en un
modelo relacional.

Figura 1.51 Traducción de modelo ER a modelo relacional.

Esto implica convertir los esquemas de entidades en tablas que con-


tengan los atributos más importantes de esas entidades. Aunque
puede parecer complicado al principio, este proceso se puede realizar
de manera sistemática siguiendo algunos pasos específicos:

Cada en�dad se transformará en una tabla.

Cada atributo se transformará en una columna de la


tabla a la que pertenece.

El iden�ficador de la en�dad será la clave primaria


de la tabla.

Figura 1.52 Proceso de transformación.

Una vez llegados a este punto, dependiendo del tipo de relación,


podemos tomar un par de alternativas:

En una relación 1:N


• Se pasa la clave primaria de la en�dad con cardinalidad 1 a la
en�dad con cardinalidad N.

En las relaciones N:M


• Si la cardinalidad es (0,1) en ambas en�dades, se crea una tabla.
• Si la cardinalidad es (0,1) y la otra es (1,1), se pasa la clave
primaria de (1,1) a la de (0,1).
• Si la cardinalidad de ambas es (1,1), se pasa la clave de
cualquiera de ellas a la otra.
Figura 1.53 Alternativas.

50
UNIDAD 1 | Introducción a las bases de datos

4. Normalización
La normalización de bases de datos es un proceso de diseño que
busca mejorar la eficiencia, la integridad y la calidad de las bases de
datos. El objetivo principal de la normalización es reducir la redun-
dancia de datos, lo que puede conducir a problemas de integridad y
consistencia en la base de datos.

La normalización se lleva a cabo mediante una serie de reglas y


directrices que permiten organizar los datos de una manera lógica
y coherente. En general, la normalización implica dividir una tabla
grande en varias tablas más pequeñas, y establecer relaciones entre
ellas a través de claves primarias y claves foráneas.

„ El concepto de normalización
y la relación universal
La normalización en bases de datos es un proceso de diseño de ba-
ses de datos que se utiliza para minimizar la redundancia de datos y Saber más
evitar errores y anomalías en los datos. El objetivo de la normalización La normalización de
una base de datos se
es organizar los datos de una manera que garantice la integridad de utiliza para eliminar la
los datos y facilite su mantenimiento y modificación. redundancia de datos
y mejorar la integridad
y consistencia de los
Las formas normales o reglas de la normalización están numeradas del mismos, lo que ayuda
1 al 5, siendo la primera forma normal (1FN) la más básica y la quinta a evitar problemas
como la inconsistencia
forma normal (5FN) la más avanzada. Cada forma normal impone de datos y la
pautas adicionales sobre las tablas que garantizan la eliminación de pérdida de
información.
redundancias y anomalías en los datos.

Figura 1.54 La normalización es clave para el buen funcionamiento de la base de datos.

51
Módulo de Base de datos

Las más comunes son la primera, segunda y tercera forma normal


(llamadas como 1FN, 2FN y 3FN). Cada nivel se basa en un conjunto
de reglas que se aplican a las tablas de la base de datos para eliminar
la redundancia y garantizar la integridad de los datos.

Son una manera de dividir los atributos según su dependencia res-


pecto de la clave principal. Se trata de una nomenclatura que permite
estructurar los atributos de manera estándar para facilitar el trabajo
con las bases de datos en proyectos complejos.

La utilización de formas normales en el diseño de bases de datos


permite estructurar los atributos de manera estándar y facilita el
trabajo con bases de datos en proyectos complejos.

La relación universal es una técnica utilizada en la normalización de


bases de datos que implica la eliminación de atributos repetidos y la
creación de una tabla separada para almacenar esos atributos. Esta
tabla se relaciona con las tablas originales a través de una clave externa.

Se utiliza desde la segunda forma normal (2FN) en adelante para


reducir la redundancia de datos y mejorar la integridad de los datos.
Esta técnica ayuda a garantizar que cada tabla en la base de datos
se centre en un solo tema y que los datos se almacenen de manera
coherente y sin duplicidades.

„ El concepto de dependencias
funcionales y sus tipos
Las dependencias funcionales son una parte fundamental del diseño
de bases de datos relacionales. Se la puede considerar como una
relación entre dos o más atributos de una tabla en la que el valor de
uno de ellos determina el valor de otro; es decir, una dependencia
funcional se produce cuando el valor de un atributo determina el valor
de otro atributo en la misma tabla.

Existen diferentes tipos de dependencias funcionales:

„ Dependencia funcional aumentativa

Una dependencia funcional aumentativa ocurre cuando un conjunto


de atributos determina completamente otro conjunto de atributos,
pero el segundo conjunto de atributos contiene más columnas que
el primero. Esto significa que el segundo conjunto de atributos es
«aumentativo» en relación al primer conjunto de atributos.

Por ejemplo, en una tabla de una base de datos de empleados,


el conjunto de atributos:

{ID de empleado, nombre}

52
UNIDAD 1 | Introducción a las bases de datos

puede determinar completamente el conjunto de atributos,

{ID de empleado, nombre, dirección, salario}.

En este caso, decimos que hay una dependencia funcional au-


mentativa entre los dos conjuntos de atributos.

Las dependencias funcionales aumentativas pueden tener im-


plicaciones importantes en el diseño y la optimización de bases
de datos, ya que pueden llevar a redundancias de datos y a la
necesidad de actualizar varias tablas cuando se realiza un cambio
en los datos.

Por lo tanto, es importante tener en cuenta las dependencias


funcionales al diseñar las bases de datos relacionales.

„ Dependencia funcional transitiva

Se origina cuando la dependencia funcional se produce a través


de dos o más atributos; es decir, cuando un atributo determina
otro atributo que, a su vez, determina un tercer atributo.

Por ejemplo, si en una tabla de empleados el salario depende


del departamento y el departamento depende del gerente, en-
tonces hay una dependencia funcional transitiva entre el salario
y el gerente.

„ Dependencia funcional simple

Es la relación directa entre dos atributos de una tabla.

Por ejemplo, si en una tabla de estudiantes el número de identi-


ficación del estudiante determina su nombre, entonces hay una
dependencia funcional simple entre el número de identificación
y el nombre del estudiante.

„ Primera forma normal (1FN)


Saber más
La primera forma normal (1FN) es un requisito básico para el diseño Los datos elementales
de una base de datos relacional. La 1FN implica que cada columna o atómicos no se
pueden dividir en
de una tabla debe contener un solo valor, sin valores repetidos o componentes más
combinaciones de valores. En otras palabras, los datos deben ser pequeños sin perder
su significado o valor
indivisibles; es decir, elementales (también denominados atómicos). original. Esto es
importante porque los
sistemas que procesan
Por ejemplo, supongamos que tenemos una tabla llamada «Clientes» datos suelen trabajar
con los siguientes campos: con unidades de
datos atómicas para
garantizar la integridad
„ ID del cliente y consistencia de
los mismos.

„ Nombre del cliente

53
Módulo de Base de datos

„ Dirección del cliente

„ Teléfono del cliente

Si se permite que el campo «Dirección» contenga múltiples valores,


como «Calle 1, Ciudad 1 / Calle 2, Ciudad 2», entonces la tabla no
estaría en 1FN.

En su lugar, deberíamos crear una tabla separada para almacenar la


dirección del cliente, y vincularla a la tabla de clientes mediante una
clave externa.

Otro ejemplo sería una tabla llamada «Pedidos» con los siguientes
campos:

„ Número de pedido

„ Fecha del pedido

„ Productos solicitados

Si el campo «Productos solicitados» contiene múltiples valores, como


«Producto 1, Cantidad 1 / Producto 2, Cantidad 2», entonces la tabla
no estaría en 1FN. En su lugar, deberíamos crear una tabla separada
para almacenar los detalles de los productos solicitados, y vincularla
a la tabla de pedidos mediante una clave externa.

Esta primera forma normal es importante porque permite que las


tablas sean más fáciles de entender y manipular. Además, asegura la
integridad de los datos y evita redundancias innecesarias.

La 1FN es el primer paso para crear una base de datos relacional


eficiente y coherente.

„ Segunda forma normal (2FN)


La segunda forma normal (2FN) se aplica a tablas que ya cumplen
con la primera forma normal (1FN) y establece que todos los atributos
que no son clave de una tabla; deben depender completamente de
la clave principal.

En otras palabras, la segunda forma normal garantiza que cada atri-


buto de una tabla dependa solo de la clave principal y no de una
combinación de clave principal y otro atributo no clave.

Por ejemplo, supongamos que tenemos una tabla llamada «pedidos»


que contiene información sobre los pedidos realizados por los clien-
tes de una tienda. La tabla tiene los siguientes atributos: «id_pedi-
do», «id_cliente», «nom_cliente», «fecha_pedido», «nom_producto» y
«cantidad».

54
UNIDAD 1 | Introducción a las bases de datos

Figura 1.55 Entidad pedidos.

En esta tabla, los dos atributos juntos «id_pedido» e «id_cliente»


forman la clave principal. Sin embargo, el atributo «nom_cliente» y el
atributo «nom_producto» no dependen completamente de la clave
principal, ya que pueden ser diferentes para cada pedido realizado
por un cliente.

Para cumplir con la segunda forma normal, se podría crear una nueva
tabla llamada «clientes» que contenga el «id_cliente» y el «nom_clien-
te», y otra tabla llamada «productos» que contenga el «nom_producto»
y «descripción».

Figura 1.56 Traducción a la segunda forma (2FN).

Luego, se podría utilizar la clave principal «id_pedido» para relacionar


estas nuevas tablas con la tabla «pedidos». De esta manera, se eli-
minaría la redundancia de información y se aseguraría que todos los
atributos dependan completamente de la clave principal.
Saber más

„ Tercera forma normal (3FN) Raymond Boyce y Edgar


F. Codd son famosos en
el campo de las bases
de datos por su trabajo
La tercera forma normal (3FN) también se conoce como Tercera For- pionero en la teoría y
ma Normal de Boyce-Codd (3FN o BCFN), en honor a sus creadores, práctica de las bases
de datos relacionales.
Raymond Boyce y Edgar F. Codd. Sus contribuciones han
sido fundamentales
para el diseño y
Esta es una forma normal en la que cada atributo que no es clave de funcionamiento de las
una tabla está relacionado solo con la clave principal y no depende bases de datos
relacionales
de otros atributos no clave. modernas.

55
Módulo de Base de datos

En otras palabras, si un atributo no clave de una tabla se relaciona


con otro atributo no clave de la misma tabla, entonces se debe se-
parar en una nueva tabla y relacionarla con la tabla original a través
de una clave foránea. Se basa en la eliminación de las dependencias
transitivas.

Una dependencia transitiva ocurre cuando una columna en una ta-


bla depende de otra columna que a su vez depende de una tercera
columna.

Para ilustrar esto, consideremos una tabla simple de una base de datos
de estudiantes que contiene la información de los cursos que toman:

Figura 1.57 Tabla inicial.

En esta tabla, podemos ver que la información de los departamentos


y edificios es redundante, ya que cada vez que un estudiante toma un
curso, la información del departamento y el edificio se repite.

Esta redundancia puede aumentar el tamaño de la base de datos y


hacer que sea más difícil de actualizar. Para solucionar este problema,
podemos aplicar la Tercera Forma Normal (3FN).

Primero, podemos crear dos tablas nuevas: una tabla de «Cursos»


que contenga información sobre los cursos, los profesores y los de-
partamentos, y una tabla de «Edificios» que contenga información
sobre los edificios.

Figura 1.58 Creación de tablas de referencia.

56
UNIDAD 1 | Introducción a las bases de datos

Luego, podemos actualizar la tabla original de la siguiente manera:

Figura 1.59 Tabla optimizada con la tercera forma (3FN).

Ahora, la información de los edificios está en una tabla separada, y


solo se repite una vez por cada edificio. Esto reduce la redundancia
de datos y consigue que la base de datos sea más eficiente y fácil
de actualizar.

Además, la 3FN garantiza que la tabla esté libre de dependencias


transitivas, lo que mejora la integridad de los datos.

57
Módulo de Base de datos

Lenguajes SQL:
2 DML Y DDL
Los lenguajes SQL (Structured Query Language) son una herramien-
ta esencial en la gestión de bases de datos relacionales. SQL es un
lenguaje estándar utilizado para manipular y consultar datos en una
base de datos. En SQL hay dos tipos principales de lenguajes: DML
(Data Manipulation Language) y DDL (Data Definition Language).

El lenguaje DML se utiliza para manipular los datos en una base


de datos. Algunos de los comandos más comunes se utilizan para
seleccionar, insertar, actualizar y eliminar datos de una tabla en la
base de datos.

El lenguaje DDL se utiliza para definir y modificar la estructura de la


base de datos. Algunos de los comandos más comunes en el len-
guaje DDL se utilizan para crear, modificar y eliminar objetos en la
base de datos, como tablas, índices, restricciones y otros objetos de
base de datos.

Los lenguajes DML y DDL son esenciales en la gestión de bases de


datos relacionales. Al utilizar estos lenguajes de manera efectiva y
segura, se puede asegurar la precisión y coherencia de los datos en
una base de datos.

1. Lenguajes de la base de datos


para manipular datos
Una vez tenemos nuestra base de datos lista, ya podemos ponernos
a trabajar con la información. Esto se consigue con el lenguaje de
manipulación de datos o DML, con el que vamos a poder desempeñar
tareas básicas sobre los datos e información que ha de contener la
base de datos.

„ El lenguaje de manipulación
de datos (DML)
El Lenguaje de Manipulación de Datos (DML, por sus siglas en inglés)
es un lenguaje de programación utilizado para realizar operaciones
de inserción, modificación, selección y eliminación de datos en una
base de datos. El DML es el conjunto de comandos que se utilizan
para realizar operaciones en los datos almacenados en la base de
datos.

58
UNIDAD 2 | Lenguajes SQL: DML Y DDL

•Estructura •Registro de datos


•ddbb •Añadir registros
•tablas •Modificar registros
•campos •Borrar registros
•índices •Consultar registros
•restricciones
•código

DDL DML

DCL TCL
•Permisos •Transacciones
•Grant •Transac�on Recuerda
•Revoke •Commit
•Rollback El lenguaje de
manipulación de datos
(DML) proporciona una
forma fácil y eficiente
Figura 2.1 Lenguaje DML.
de insertar, actualizar y
eliminar datos en una
base de datos, lo que
En esencia, el DML se utiliza para manipular los datos de una base permite una gestión
de datos y es una parte fundamental de cualquier sistema de gestión más efectiva y un
acceso rápido a la
de bases de datos (DBMS, por sus siglas en inglés). Los DBMS más información.
populares, como MySQL, Oracle y SQL Server, tienen sus propias
implementaciones del DML.

Construcción de consultas de selección simples

Para construir una consulta de selección simple basada en DML se


utiliza la sentencia SELECT. Esta sentencia se utiliza para recuperar
datos de una o varias tablas de la base de datos. La estructura básica
de una consulta SELECT es la siguiente:

Donde columna1, columna2, …, columnaN son las columnas que se


quieren recuperar de la tabla1, que es la tabla de la que se quieren
recuperar los datos. Y condición es una condición opcional que se
utiliza para filtrar los datos que se quieren recuperar.

Por ejemplo, si se quiere recuperar el nombre y la edad de todos los


estudiantes de una tabla llamada estudiantes, la consulta SELECT
sería la siguiente:

59
Módulo de Base de datos

Si se quiere recuperar solo los estudiantes que tienen más de 18 años,


se puede añadir una condición en la cláusula WHERE de la consulta
SELECT de la siguiente manera:

De esta manera, solo se recuperarán los estudiantes que cumplen la


condición especificada.

También es posible ordenar los resultados de una consulta SELECT


utilizando la cláusula ORDER BY. Por ejemplo, si se quiere ordenar
los resultados de la consulta anterior por edad de forma ascendente,
la consulta SELECT quedaría de la siguiente manera:

Por último, es posible utilizar la cláusula LIMIT para limitar el número


de resultados que se quieren recuperar. Por ejemplo, si se quiere re-
cuperar solo los 5 estudiantes más jóvenes que cumplen la condición
especificada, la consulta SELECT sería la siguiente:

Construcción de sentencias de inserción,


modificación y eliminación

„ Inserción de datos: El comando INSERT se utiliza para insertar


nuevos datos en una tabla.

Por ejemplo, si queremos insertar un nuevo registro en una tabla


clientes con las columnas id, nombre y email, la sentencia INSERT
podría verse así:

60
UNIDAD 2 | Lenguajes SQL: DML Y DDL

„ Modificación de datos: El comando UPDATE se utiliza para mo-


dificar los datos existentes en una tabla.

Por ejemplo, si queremos actualizar el correo electrónico de un


cliente con el id = 1 en la tabla clientes, la sentencia UPDATE
podría verse así:

„ Eliminación de datos: El comando DELETE se utiliza para eliminar


registros de una tabla.

Por ejemplo, si queremos eliminar un registro de la tabla clientes


con el id = 1, la sentencia DELETE podría verse así:

Construcción de consultas a más de una tabla


y consultas cruzadas

Cuando necesitamos consultar información que se encuentra en más


de una tabla, utilizamos consultas que involucran la unión de varias
tablas. Para hacer esto, se utilizan operaciones de conjuntos, como
la unión, intersección y diferencia, para combinar los resultados de las
tablas que se quieren unir.

Por ejemplo, supongamos que tenemos una tabla Clientes y otra tabla
Pedidos, donde la tabla de Pedidos tiene una columna que hace re-
ferencia a la clave primaria de la tabla Clientes. Si queremos obtener
los nombres de los clientes que han hecho pedidos, podemos utilizar
la siguiente consulta:

En esta consulta, estamos utilizando la cláusula INNER JOIN para


unir las dos tablas, indicando la columna que se utiliza para hacer la
unión con la cláusula ON.

61
Módulo de Base de datos

Figura 2.2 Distintos tipos de Join.

Pero el comando INNER JOIN es solo la «punta del iceberg» en lo que


a uniones entre tablas diferentes se refiere.

Existen 4 tipos diferentes de uniones:

„ INNER JOIN o JOIN

Devuelve los registros que tienen coincidencias en ambas tablas.


Por ejemplo:

Podemos ver cómo se devolverán los registros que tengan el mismo


valor en el campo CustomerID de las tablas Orders y Customers.

„ LEFT JOIN o LEFT OUTER JOIN

Devuelve todos los registros de la tabla izquierda y los registros


coincidentes de la tabla derecha. Si no hay coincidencias, se de-
volverán valores NULL. Por ejemplo:

62
UNIDAD 2 | Lenguajes SQL: DML Y DDL

En este ejemplo, se devolverán todos los clientes, independiente-


mente de si tienen o no pedidos. Si un cliente no tiene pedidos,
el campo OrderID se rellenará con un valor NULL.

„ RIGHT JOIN o RIGHT OUTER JOIN

Devuelve todos los registros de la tabla derecha y los registros


coincidentes de la tabla izquierda. Si no hay coincidencias, se
devolverán valores NULL. Por ejemplo:

Como vemos, se devolverán todos los pedidos, independiente-


mente de si tienen o no clientes. Si un pedido no tiene cliente, el
campo CustomerName se rellenará con un valor NULL.

„ FULL JOIN o FULL OUTER JOIN

Devuelve todos los registros de ambas tablas, coincidentes y no


coincidentes. Si no hay coincidencias, se devolverán valores NULL.
Por ejemplo:

Aquí se devolverán todos los clientes y todos los pedidos, inde- Recuerda
pendientemente de si tienen o no coincidencias en la otra tabla. Si
Una tabla pivote es una
un cliente o un pedido no tiene coincidencias, los campos OrderID herramienta de análisis
o CustomerName se rellenarán con valores NULL. de datos que permite
resumir, agrupar y
realizar cálculos sobre
Otro tipo de consulta que se puede hacer con DML es la consulta de una tabla de datos para
obtener una vista
tablas cruzadas o pivote. Esta consulta permite agrupar y resumir resumida de la
información de varias tablas y presentarla en forma de tabla cruzada. información en forma
de tabla.

Por ejemplo, supongamos que tenemos una tabla Ventas con infor-
mación de las ventas realizadas por un negocio en diferentes meses,
y queremos saber cuánto se vendió por cada mes para cada producto.
Podemos utilizar la siguiente consulta:

63
Módulo de Base de datos

En esta consulta, estamos utilizando la cláusula GROUP BY para


agrupar los resultados por el nombre del producto y la función SUM
para sumar la cantidad de ventas por mes.

La cláusula CASE se utiliza para filtrar las ventas por mes, y la cláusula
INNER JOIN para unir las tablas de productos y ventas.

Construcción de subconsultas

Una subconsulta es una consulta anidada dentro de otra consulta. Se


utiliza para recuperar datos más específicos y detallados de la base
de datos. En SQL, las subconsultas se pueden utilizar en la cláusula
WHERE o en la cláusula FROM de una consulta principal.

Figura 2.3 Identificación de subquery (subconsulta).

Supongamos que tenemos dos tablas, clientes y pedidos, donde


cada cliente puede realizar múltiples pedidos. Queremos encontrar
los clientes que hayan realizado al menos un pedido con un valor
superior a 1000 euros.

Podemos utilizar una subconsulta en la cláusula WHERE de la si-


guiente manera:

La subconsulta devuelve los ids de los clientes que han realizado al


menos un pedido con valor superior a 1000 euros, y la consulta prin-
cipal devuelve todos los datos de los clientes que tienen esos ids.

64
UNIDAD 2 | Lenguajes SQL: DML Y DDL

2. Estrategias para el control


de las transacciones y de la
concurrencia
Vemos ahora las particularidades del lenguaje TCL o los comandos,
operaciones y propiedades relativas al control de las transacciones.

•Estructura •Registro de datos


•ddbb •Añadir registros
•tablas •Modificar registros
•campos •Borrar registros
•índices •Consultar registros
•restricciones
•código

DDL DML

DCL TCL
•Permisos •Transacciones
•Grant •Transac�on
•Revoke •Commit
•Rollback

Figura 2.4 Lenguaje TCL.

„ Concepto de integridad
En el contexto de las bases de datos, la integridad se refiere a la
precisión, consistencia y validez de los datos almacenados. Se asegura
que los datos sean precisos y estén libres de errores, duplicados o in-
consistencias que puedan dañar la calidad de los datos y, por tanto,
su utilidad para los usuarios a la hora de servir los datos o realizar
las operaciones que este haya indicado.

Figura 2.5 El lenguaje TCL se encarga de parte de la seguridad del dato.

65
Módulo de Base de datos

La integridad de los datos puede ser garantizada mediante la imple-


mentación de reglas y restricciones que se aplican a los datos alma-
cenados en la base de datos. Estas reglas y restricciones se aplican
durante la inserción, actualización o eliminación de los datos. El
objetivo es asegurar que los datos almacenados en la base de datos
sean correctos y precisos en todo momento.

Integridad
de en�dad

Integridad
de
Integridad Integridad
de
restricción de datos dominio

Integridad
referencial

Figura 2.6 Características de la integridad de datos.

Existen varios tipos de integridad de datos, incluyendo integridad de


entidad, integridad de dominio, integridad referencial e integridad de
restricción. Cada tipo se refiere a un aspecto específico de la preci-
sión y consistencia de los datos almacenados en la base de datos.

Integridad de entidad La característica fundamental de una base de datos relacional que


almacena datos en un formato tabular y que se puede interconectar y
utilizar de varias formas es la integridad de la entidad. Esta se refiere a
un conjunto de procedimientos que garantizan el almacenamiento y uso
de datos adecuados y consistentes.

Integridad de dominio La precisión de cada elemento de datos se mantiene dentro de un


dominio específico gracias a una variedad de procedimientos de garantía.
En este contexto, un dominio se define como un conjunto de valores
apropiados que una columna puede contener.

Integridad referencial La sincronización entre dos tablas se mantiene durante las operaciones
de actualización y eliminación gracias a la integridad referencial, una
propiedad presente en todas las bases de datos relacionales. Esta
característica es garantizada por el software gestor de base de datos.

Integridad de restricción La consistencia entre las filas de dos relaciones es mantenida por la
restricción de integridad referencial. Esta restricción garantiza que los
valores de uno o más atributos que están presentes en una relación,
también se encuentran como valores de atributos en otra relación.

Figura 2.7 Tipos de integridad.

66
UNIDAD 2 | Lenguajes SQL: DML Y DDL

„ Concepto de transacción. Control


El concepto de control en el contexto de transacciones y concu-
rrencia en bases de datos se refiere a la capacidad de garantizar
la consistencia de los datos en un entorno de múltiples usuarios y
múltiples transacciones que acceden y modifican los mismos datos
al mismo tiempo.

El control de la concurrencia implica la gestión de las transacciones


concurrentes para garantizar que se respeten las reglas de aislamiento,
consistencia, durabilidad y atomicidad (conocidas como propiedades
ACID) en todas las operaciones realizadas en la base de datos.

Asegura que una transacción se realiza como


Atomicidad una única operación atómica, es decir, o se
completa por completo o no se hace nada.

Cuando una transacción lleva la base de datos


Consistencia desde un estado consistente a otro estado
consistente.

Hace que las transacciones se ejecuten de


forma aislada entre sí, de tal forma que los
Aislamiento cambios realizados por una transacción no
afectan a otras transacciones que se estén
ejecutando simultáneamente.

Una vez que se completa una transacción y los


Durabilidad cambios se han guardado en la base de datos,
estos cambios permanecen incluso en caso de
fallo del sistema o de la energía.

Figura 2.8 Descripción de las propiedades ACID aplicadas en la gestión de transacciones.

Esto se logra mediante la implementación de mecanismos que per-


miten la coordinación entre las transacciones para evitar situaciones
de conflicto y mantener la integridad de los datos.

En otras palabras, el control de la concurrencia se encarga de ga-


rantizar que todas las transacciones se ejecuten de forma correcta
y coherente, sin interferir entre sí y sin afectar negativamente a la
base de datos en su conjunto.

67
Módulo de Base de datos

Existen diferentes estrategias para el control de la concurrencia en


Recuerda bases de datos, tales como bloqueo de registros, control de versiones,
La elección del método serialización o control de conflictos, entre otros.
de control de
concurrencia en una
base de datos depende La elección de la estrategia adecuada depende del tipo de base de da-
de varios factores,
como el tipo de tos, la cantidad de usuarios, transacciones y otros factores relevantes.
transacciones que se
realizan, el tamaño de

„ Propiedades de las transacciones:


la base de datos, el
número de usuarios
que acceden a ella
y el nivel de aislamiento
requerido para
atomicidad, consistencia, aislamiento
garantizar la
consistencia de
y permanencia
los datos.
Las propiedades de las transacciones son un conjunto de caracterís-
ticas que aseguran la fiabilidad de las operaciones realizadas sobre
una base de datos.

Ya hemos hecho mención en el apartado anterior a las propiedades


ACID, pero vamos a verlas más a fondo, tanto en su definición como
en lo que implican.

Figura 2.9 Expresiones que componen las siglas ACID.

A continuación, se explican cada una de estas propiedades:

„ Atomicidad: Se considera como una operación única e indivisible,


es decir, o se realiza en su totalidad o no se realiza en absoluto.
En otras palabras, si una transacción falla en algún momento,
todas las operaciones realizadas hasta ese momento se deshacen
Glosario y se vuelven a su estado anterior (rollback), y si la transacción se
completa correctamente, todas las operaciones se confirman y
Commit: (traducido
del inglés como se hacen permanentes (commit).
«confirmación») se
refiere a la acción
de confirmar los Por ejemplo, supongamos que se realiza una transferencia bancaria
cambios realizados que involucra dos cuentas. Si por alguna razón la transferencia no
en una transacción.
Una transacción es se puede completar, se asegura que el dinero no se pierda, y que la
una secuencia de cantidad que se retiró de una cuenta se regrese a su saldo original.
operaciones de base de
datos que deben
ser tratadas como „ Consistencia: Asegura que una transacción no violará las reglas de
una sola unidad
lógica de trabajo. integridad de la base de datos. Si una transacción intenta modifi-
car una tabla y esa modificación no cumple con las restricciones

68
UNIDAD 2 | Lenguajes SQL: DML Y DDL

definidas, la transacción se revertirá a su estado original (rollback)


para mantener la coherencia de los datos en la base de datos.

„ Aislamiento: Es la propiedad que garantiza que las transacciones


que se ejecutan simultáneamente no interfieran entre sí. Es de-
cir, cada transacción es independiente de las demás y se ejecuta
como si fuera la única en la base de datos, sin importar cuántas
transacciones estén activas en el momento. Esto evita que las
operaciones realizadas por una transacción afecten a otra, lo que
puede generar inconsistencias en la base de datos.

Por ejemplo, si dos usuarios intentan acceder al mismo registro


al mismo tiempo, se evita que uno de ellos lea o escriba datos
que ya han sido modificados por el otro.

„ Durabilidad: Asegura que los cambios realizados por una tran-


sacción se mantengan permanentemente en la base de datos,
incluso en caso de fallas en el sistema. Una vez que una tran-
sacción ha sido confirmada (commit), los cambios realizados por
esa transacción deben permanecer en la base de datos incluso si
se produce un fallo en el sistema, como una pérdida de energía
o un error del sistema.

Por ejemplo, si un usuario realiza una transacción de compra online


y el sistema falla después de confirmar la transacción, se asegura
que la compra se mantenga en la base de datos para que pueda
ser procesada posteriormente.

„ Estados de una transacción: activa,


parcialmente comprometida, quiebra,
abortada y comprometida

Figura 2.10 Estados de una transacción.

69
Módulo de Base de datos

Es importante tener en cuenta que una transacción puede moverse


entre estados, dependiendo de cómo se ejecuta y cómo interactúa
con otros procesos de la base de datos.

„ Activa: Una transacción se encuentra en este estado desde el


momento en que comienza hasta que se completa o se aborta.
Durante este estado, la transacción realiza operaciones de lectura
y escritura en la base de datos.

„ Parcialmente comprometida: Una transacción se encuentra en


este estado después de que ha ejecutado su última operación de
escritura, pero antes de que se haya confirmado su finalización.
Durante este estado, la transacción ha enviado una solicitud de
confirmación, pero aún no ha recibido una respuesta.

„ Error/Fail/Quiebra: Una transacción entra en este estado cuando


ocurre un fallo en el sistema, como un corte de energía o una falla
del servidor. En este estado, se pierde toda la información sobre
la transacción y no se puede recuperar.

„ Abortada: Sucede cuando se detecta un error en la transacción o


cuando se le indica al sistema que la aborte manualmente. Durante
este estado, cualquier cambio que haya realizado la transacción
se deshace y se revierten a su estado anterior.

„ Comprometida: Se considera que una transacción está com-


prometida en el momento en el que todas las operaciones de
escritura que ha realizado se han confirmado con éxito. Durante
este estado, los cambios realizados por la transacción se han
aplicado permanentemente a la base de datos y no se pueden
revertir.

„ Problemas derivados de la ejecución


concurrente de transacciones
La ejecución concurrente de transacciones en bases de datos pue-
de llevar a una serie de problemas que afectan la consistencia y la
integridad de los datos.

Algunos de estos problemas son:

Pérdida de Ocurre cuando dos o más transacciones intentan actualizar la misma


actualizaciones información al mismo tiempo. Como resultado, una transacción puede
sobrescribir los cambios realizados por otra transacción, lo que lleva a la
pérdida de datos.

Lectura sucia Sucede cuando una transacción lee datos que han sido modificados por
otra transacción y aún no han sido confirmados. Si la transacción que
realizó la modificación se deshace, la lectura de la primera transacción
se basó en información errónea.

70
UNIDAD 2 | Lenguajes SQL: DML Y DDL

Lectura no repetible Sucede cuando una transacción lee los mismos datos varias veces,
pero los datos cambian entre lecturas debido a la actualización de otra
transacción. Esto puede llevar a inconsistencias en los datos.

Lectura fantasma Sucede cuando una transacción lee un conjunto de datos dos veces y
la segunda vez encuentra nuevas filas que no estaban presentes en la
primera lectura debido a la inserción o eliminación de otra transacción.

Figura 2.11 Problemas derivados de la concurrencia.

Para evitar estos problemas, es necesario implementar técnicas de


control de concurrencia, como bloqueo de registros, control de ver-
siones y aislamiento de transacciones, que garantizan que las tran-
sacciones se ejecuten en un orden seguro y controlado.

„ Control de concurrencia:
técnicas optimistas y pesimistas
El control de concurrencia es el conjunto de técnicas y estrategias
utilizadas para asegurar que las transacciones que acceden a una Saber más
base de datos se ejecuten de manera consistente y aislada, evitando El control de
problemas de lectura o escritura sucia entre otros problemas deri- concurrencia es
vados de la ejecución concurrente de transacciones. importante en las
bases de datos porque
garantiza que múltiples
Entre las técnicas utilizadas en el control de concurrencia se encuen- transacciones puedan
acceder y actualizar
tran las técnicas optimistas y las técnicas pesimistas. los datos de manera
segura y consistente,
evitando así problemas
de inconsistencia
y pérdida de
datos.

Figura 2.12 Enfoque pesimista versus enfoque optimista.

„ La técnica optimista se basa en la idea de que la mayoría de las


transacciones no entrarán en conflicto entre sí y, por tanto, no
necesitan ser bloqueadas para garantizar la consistencia de la
base de datos.

Se permite que las transacciones se ejecuten libremente y se


realiza una verificación al final para detectar conflictos y revertir
las transacciones si es necesario.

71
Módulo de Base de datos

Esta técnica es adecuada para bases de datos con un alto número


de transacciones de lectura y pocas de escritura.

„ La técnica pesimista se basa en la idea de que es mejor bloquear


las transacciones para garantizar la consistencia de la base de
datos.

Saber más En esta técnica se utiliza algún mecanismo de bloqueo, como


bloqueo de lectura o bloqueo de escritura, para evitar que las
A largo plazo no
hay una respuesta transacciones accedan a los mismos datos al mismo tiempo.
clara acerca de qué
técnica de control
de concurrencia es Esta técnica es adecuada para bases de datos con un alto número
más eficiente, ya que de transacciones de escritura y pocas de lectura.
cada una tiene sus
ventajas y desventajas
en diferentes Ambas técnicas tienen tanto ventajas como desventajas y su elección
escenarios.
dependerá de las necesidades específicas de la aplicación además
de las características de la base de datos en cuestión.

„ Recuperación ante fallos. Mecanismos


para deshacer transacciones
La recuperación ante fallos es un conjunto de técnicas y mecanismos
que se utilizan en los sistemas de bases de datos para garantizar la
consistencia de los datos y la integridad del sistema después de una
falla o interrupción del sistema.

Figura 2.13 Explicación gráfica del rollback.

72
UNIDAD 2 | Lenguajes SQL: DML Y DDL

Uno de los mecanismos más importantes para la recuperación ante


fallos es el mecanismo de deshacer transacciones, también conoci- Glosario
do como rollback en inglés. Rollback: en bases
de datos es una
La idea básica detrás del mecanismo de deshacer transacciones es operación que revierte
una transacción a su
que, si una transacción no se completa correctamente debido a una estado anterior antes
falla del sistema o de otro tipo, se deben deshacer todos los cambios de que se produjera un
fallo o se detectara un
que se efectuaron en la base de datos durante la transacción que no error, garantizando la
ha sido completada para asegurar que la base de datos regrese a un integridad de los datos
y evitando cambios
estado consistente y correcto. no deseados en la
base de datos.
Por ejemplo, si una transacción consiste en tres operaciones: A, B y
C, y la operación B falla debido a un error en el sistema, entonces el
mecanismo de deshacer transacciones deshará todas las operacio-
nes que se realizaron después de la operación A. En este caso, se
deshará la operación B y cualquier operación posterior que haya sido
ejecutada como resultado de la operación B.

El mecanismo de deshacer transacciones es posible gracias a la


implementación de un registro de transacciones, que se encarga de
almacenar información sobre todas las transacciones que se ejecutan
en el sistema de bases de datos. Este registro incluye información
sobre todas las operaciones realizadas durante la transacción, así
como información adicional como la hora de inicio y finalización de
la transacción.

3. Lenguajes de la base de datos


para crear la estructura de la
base de datos
Un lenguaje de base de datos es un conjunto de comandos y sintaxis
utilizados para definir y manipular la estructura de una base de datos,
como tablas, índices y restricciones.

Existen varios lenguajes de base de datos, cada uno con su propia


sintaxis y comandos específicos, pero todos comparten un objetivo
común: proporcionar una forma de definir y manipular la estructura
de la base de datos de manera precisa y eficiente.

Por ejemplo, un lenguaje de base de datos común es el lenguaje


de definición de datos (DDL). El DDL es un conjunto de comandos
utilizados para definir la estructura de la base de datos, incluyendo
la creación de tablas, columnas, claves primarias, claves foráneas,
restricciones y otros objetos de base de datos.

Además, ya hemos visto anteriormente un lenguaje de base de datos


orientado a la manipulación de datos (DML), que se utiliza para in-
sertar, actualizar o eliminar datos en la base de datos. Más adelante
veremos que también existen lenguajes de control de transacciones,

73
Módulo de Base de datos

que se emplean para controlar y administrar las transacciones de la


base de datos.

„ Tipos de lenguajes para gestionar


los datos en un SGBDR corporativo
En un sistema de gestión de bases de datos relacionales (SGBDR)
corporativo existen varios tipos de lenguajes utilizados para gestionar
los datos.

Figura 2.14 Lenguajes de gestión de bases de datos.

Estos lenguajes se dividen generalmente en cuatro categorías:

„ Lenguaje de definición de datos (DDL)

Este tipo de lenguaje se utiliza para definir la estructura de la base


de datos, incluyendo la creación, modificación o eliminación de
tablas, índices, restricciones, vistas, procedimientos almacenados,
funciones y otros objetos de base de datos.

Algunos de sus comandos principales son:

Comando DDL Descripción

CREATE Crea un objeto de base de datos como una tabla, vista o índice.

ALTER Modifica una estructura de objeto de base de datos existente como una tabla,
vista o índice.

DROP Elimina un objeto de base de datos como una tabla, vista o índice.

TRUNCATE Elimina todos los datos de una tabla sin afectar su estructura.

RENAME Cambia el nombre de un objeto de base de datos existente como una tabla, vista
o índice.

COMMENT Agrega comentarios a objetos de base de datos como tablas, columnas


o usuarios.

74
UNIDAD 2 | Lenguajes SQL: DML Y DDL

„ Lenguaje de manipulación de datos (DML)

Se utiliza para insertar, actualizar o eliminar datos en la base de datos.

Algunos de sus comandos principales son:

Comando DML Descripción

SELECT Selecciona datos de una o varias tablas.

INSERT Inserta nuevos registros en una tabla.

UPDATE Actualiza los valores de uno o varios registros en una tabla.

DELETE Elimina uno o varios registros de una tabla.

MERGE Combina operaciones de INSERT, UPDATE y DELETE en una sola sentencia.

CALL Invoca una función o procedimiento almacenado.

EXPLAIN PLAN Obtiene información sobre el plan de ejecución de una consulta SELECT.

COMMIT Confirma una transacción en la base de datos.

ROLLBACK Deshace los cambios realizados en una transacción no confirmada.

SAVEPOINT Crea un punto de guardado en una transacción.

SET Establece una variable de entorno o una opción de configuración del sistema.

LOCK TABLE Bloquea una tabla en modo de exclusión para evitar conflictos de concurrencia.

„ Lenguaje de control de datos (DCL)

Controla el acceso a los datos y asegura la integridad de la base


de datos.

Algunos de sus comandos principales son:

Comando DCL Descripción

GRANT Concede permisos específicos de acceso a la base de datos a un usuario


o un conjunto de usuarios.

REVOKE Revoca los permisos otorgados previamente a un usuario o un conjunto


de usuarios.

DENY Niega el acceso a un usuario o un conjunto de usuarios a un objeto


de la base de datos.

AUDIT Registra la actividad de los usuarios y los intentos de acceso a la base de datos.

ALTER SYSTEM Permite a los administradores del sistema modificar los parámetros
y configuraciones del sistema de bases de datos.

CREATE Crea un alias para una tabla, una vista, una secuencia, un procedimiento
SYNONIM almacenado u otro objeto de la base de datos.

DROP SYNONIM Elimina un alias o sinónimo de un objeto de la base de datos.

COMMENT Agrega un comentario o una descripción a un objeto de la base de datos,


como una tabla o una vista

75
Módulo de Base de datos

„ Lenguaje de consulta de datos (DQL)

Utilizado principalmente para consultar los datos almacenados


en la base de datos y recuperar la información.

Algunos de sus comandos principales son:

Comando DQL Descripción

SELECT Se utiliza para seleccionar datos de una o varias tablas.

FROM Se emplea para indicar de qué tabla o tablas se seleccionan los datos.

WHERE Se usa para filtrar los resultados de la consulta según una o varias condiciones.

GROUP BY Se utiliza para agrupar los resultados de la consulta según una o varias columnas.

HAVING Se aplica para filtrar los resultados de la consulta que han sido agrupados por
GROUP BY.

ORDER BY Se usa para ordenar los resultados de la consulta según una o varias columnas.

JOIN Se utiliza para combinar datos de dos o más tablas relacionadas en una consulta.

En general, los sistemas de gestión de bases de datos relacionales


utilizan una variedad de lenguajes de bases de datos para gestionar
los datos almacenados en la base de datos.

Cada lenguaje tiene su propio conjunto de comandos y sintaxis; por


tanto, es importante que los profesionales de bases de datos conoz-
can estos lenguajes para poder utilizarlos eficazmente en un entorno
corporativo.

„ Herramientas gráficas proporcionadas


por el sistema gestor para la
implementación de la base de datos
Existen varias herramientas gráficas proporcionadas por los sistemas
gestores de bases de datos (SGBD) para la implementación de bases
de datos.

Figura 2.15 Bases de datos diferentes.

76
UNIDAD 2 | Lenguajes SQL: DML Y DDL

Algunas de las más comunes son:

„ SQL Server Management Studio (SSMS)

Nos llega desde Microsoft SQL Server y permite la administración


y el desarrollo de bases de datos SQL Server.

Incluye herramientas gráficas para diseñar tablas, vistas, procedi-


mientos almacenados, funciones, y otros objetos de base de datos.

„ MySQL Workbench

Propia de MySQL, ofrece una variedad de herramientas gráficas


para el diseño y desarrollo de bases de datos MySQL.

Posee una interfaz gráfica de usuario para la creación de tablas,


relaciones, vistas, y otros objetos de base de datos.

„ Oracle SQL Developer:

Esta herramienta es propia de Oracle y ofrece una variedad de


herramientas gráficas para el diseño y desarrollo de bases de da-
tos Oracle

Se debe destacar su interfaz gráfica para la creación de tablas,


vistas, procedimientos almacenados, funciones y otros objetos
de base de datos.

„ PostgreSQL

Perteneciente a PostgreSQL, proporciona herramientas gráficas


para el diseño y desarrollo de bases de datos PostgreSQL.

Incluye una interfaz gráfica de usuario para la creación de tablas,


vistas, funciones, y otros objetos de base de datos.

Figura 2.16 Principales tipos de bases de datos (SQL y NoSQL).

77
Módulo de Base de datos

Estas son solo algunas de las herramientas gráficas más comunes


proporcionadas por los sistemas gestores de bases de datos. En ge-
neral, el principal uso que se les da a estas herramientas es facilitar la
implementación de bases de datos mediante el uso de sus interfaces
gráficas de usuario intuitivas y eficientes.

„ El lenguaje de definición de datos (DDL)


El lenguaje de definición de datos (DDL) es un conjunto de comandos
utilizados para definir y modificar la estructura de una base de datos.
Se utiliza para crear y eliminar tablas, vistas, índices, restricciones y
otros objetos de la base de datos.

•Estructura •Registro de datos


•ddbb •Añadir registros
•tablas •Modificar registros
•campos •Borrar registros
•índices •Consultar registros
•restricciones
•código

DDL DML

DCL TCL
•Permisos •Transacciones
•Grant •Transac�on
•Revoke •Commit
•Rollback

Figura 2.17 Lenguaje DDL.

A continuación, vamos a ver una serie de ejemplos de manipulación


de bases de datos y su contenido basado en el lenguaje de defini-
ción de datos; no obstante, es importante tener en cuenta que estos
comandos pueden variar según el sistema de gestión de bases de
datos que se esté utilizando, por lo que siempre es recomendable
consultar la documentación del sistema de gestión de bases de datos
para conocer los comandos específicos necesarios.

Creación, modificación y eliminación


de la base de datos

Con el comando CREATE se origina una nueva base de datos llamada


mydatabase.

78
UNIDAD 2 | Lenguajes SQL: DML Y DDL

No es posible modificar directamente el nombre de una base de


datos en MySQL, pero se puede renombrar creando una nueva base
de datos con el nuevo nombre y moviendo los objetos de la base de
datos anterior a la nueva. Por ejemplo:

Con los comandos mencionados en el ejemplo anterior, se crea una


nueva base de datos llamada newdatabase, se selecciona como la
base de datos actual y mueve la tabla table1 de la base de datos
anterior a la nueva base de datos.

El comando DROP se usaría para la eliminación de la base de datos


mydatabase:

Creación, modificación y eliminación de tablas

El comando CREATE TABLE genera una nueva tabla llamada customers


con tres columnas: id, name y age. La columna id se define como clave
primaria utilizando la palabra clave PRIMARY KEY. La columna name
es del tipo VARCHAR y no puede ser nula, mientras que la columna
age es del tipo INT y puede ser nula.

Para modificar una tabla existente, se pueden utilizar comandos


como ALTER TABLE para agregar, modificar o eliminar columnas de
la tabla. Por ejemplo:

El comando DROP TABLE elimina completamente la tabla customers


y todos los datos almacenados en ella.

79
Módulo de Base de datos

Creación y eliminación de índices

La creación y eliminación de índices es otra tarea común que se rea-


liza a través del lenguaje de definición de datos (DDL) en una base
de datos.

Los índices son estructuras de datos que mejoran la eficiencia de las


consultas en una tabla, ya que permiten acceder a los datos de manera
más rápida. A continuación, vamos a ver ejemplos de cómo crear y
eliminar índices utilizando SQL.

„ Creación de índices

Para crear un índice, se utiliza el comando CREATE INDEX, se-


guido del nombre que le queramos poner al índice, el nombre de
la tabla y el nombre del campo o campos que se utilizarán para
crear el índice.

Por ejemplo, si queremos crear un índice en la tabla clientes en


el campo apellido, usaríamos el siguiente comando:

Este comando crea un índice llamado idx_apellido en la tabla


clientes en el campo apellido. También podemos crear índices
en múltiples campos de una tabla.

Por ejemplo, si queremos crear un índice en la tabla «clientes» en


los campos apellido y nombre, usaríamos el siguiente comando:

Este comando crea un índice llamado idx_apellido_nombre en la


tabla clientes en los campos apellido y nombre.

„ Eliminación de índices

Para eliminar un índice, se utiliza el comando DROP INDEX, se-


guido del nombre del índice y el nombre de la tabla en la que se
encuentra el índice. Por ejemplo, si queremos eliminar el índice
idx_apellido de la tabla clientes, usaríamos el siguiente comando:

Este comando elimina el índice idx_apellido de la tabla clientes.


También podemos eliminar índices que abarcan múltiples campos

80
UNIDAD 2 | Lenguajes SQL: DML Y DDL

de una tabla. Por ejemplo, si queremos eliminar el índice idx_ape-


llido_nombre de la tabla clientes, usaríamos el siguiente comando:

Este comando elimina el índice idx_apellido_nombre de la tabla


clientes.

„ Extensiones del lenguaje


Vistas Recuerda
La principal ventaja de
Las vistas son objetos de las base de datos que actúan como ven- las vistas en las bases
de datos es que
tanas virtuales a las tablas de la base de datos. proporcionan una
representación
personalizada de los
Una vista es una consulta almacenada en la base de datos que produce datos almacenados en
un conjunto de resultados. Estos resultados se pueden utilizar como las tablas, lo que
si se tratara de una tabla real en la base de datos. A continuación, permite a los usuarios
acceder a una versión
veremos cómo crear, manipular y borrar vistas en una base de datos específica y filtrada de
utilizando el lenguaje de consulta SQL: los datos sin tener que
acceder directamente a
la tabla subyacente, lo
„ Creación de una vista que a su vez mejora la
seguridad y el
rendimiento del
Para crear una vista, se utiliza la cláusula CREATE VIEW seguida sistema.
del nombre de la vista y la consulta que define la vista.

Por ejemplo, supongamos que tenemos una tabla ventas que con-
tiene información sobre las ventas de una empresa. Si queremos
crear una vista que muestre solo las ventas de los últimos seis
meses, podemos utilizar la siguiente consulta:

Esta consulta crea una vista llamada ultimas_ventas que selecciona


todas las columnas de la tabla ventas donde la fecha es mayor o
igual a seis meses antes de la fecha actual.

„ Manipulación de una vista

Una vista se puede manipular utilizando la cláusula ALTER VIEW.

Por ejemplo, si queremos agregar una columna a la vista ultimas_


ventas que muestre el nombre del vendedor, podemos utilizar la
siguiente consulta:

81
Módulo de Base de datos

Esta consulta agrega la columna nombre_vendedor a la vista ul-


timas_ventas y la relaciona con la tabla vendedores mediante
una unión.

„ Borrado de una vista


Saber más
El borrado de una vista Para borrar una vista, se utiliza la cláusula DROP VIEW seguida
no libera espacio en la del nombre de la vista.
base de datos porque
una vista no almacena
datos físicamente, sino Por ejemplo, si queremos borrar la vista ultimas_ventas, podemos
que es una consulta
que se ejecuta utilizar la siguiente consulta:
cada vez que se
accede a ella.

Restricciones

Las restricciones de integridad son reglas que se aplican a las tablas


de una base de datos para garantizar la consistencia y validez de los
datos almacenados.

Existen varios tipos de restricciones de integridad, incluyendo primary


key, foreign key, check, not null y unique.

„ Clave primaria o primary key

Una clave primaria es una restricción que asegura que una co-
lumna o combinación de columnas en una tabla tienen valores
únicos y no nulos.

Para crear una clave primaria, se utiliza la cláusula PRIMARY KEY


en la definición de la tabla.

Por ejemplo, la siguiente consulta crea una tabla clientes con una
clave primaria en la columna id_cliente:

82
UNIDAD 2 | Lenguajes SQL: DML Y DDL

„ Clave foránea o foreign key

Una clave foránea es una restricción que asegura que los valores
de una columna en una tabla corresponden a los valores de otra
columna en otra tabla.

Para crear una clave foránea, se utiliza la cláusula FOREIGN KEY


en la definición de la tabla.

Por ejemplo, la siguiente consulta crea una tabla pedidos con una
clave foránea en la columna id_cliente:

„ Restricción de verificación o check

Una restricción de verificación o check asegura que los valores de


una columna en una tabla cumplan ciertas condiciones.

Para crear una restricción de verificación, se utiliza la cláusula


CHECK en la definición de la tabla.

Por ejemplo, la siguiente consulta crea una tabla productos con


una restricción de verificación en la columna precio:

„ Restricción not null

Una restricción not null asegura que los valores en una columna
no sean nulos.

Para crear una restricción not null, se utiliza la cláusula NOT NULL
en la definición de la tabla.

Por ejemplo, la siguiente consulta crea una tabla empleados con


una restricción NOT NULL en la columna nombre_empleado:

83
Módulo de Base de datos

Esta consulta crea una restricción NOT NULL en la columna nom-


bre_empleado, lo que significa que cada registro en la tabla em-
pleados debe tener un valor en la columna nombre_empleado.

„ Restricción unique

Una restricción unique asegura que los valores en una columna


sean únicos.

Para crear una restricción unique, se utiliza la cláusula UNIQUE


en la definición de la tabla.

Por ejemplo, la siguiente consulta crea una tabla departamentos


con una restricción UNIQUE en la columna nombre_departamento:

Esta consulta crea una restricción UNIQUE en la columna nom-


bre_departamento, lo que significa que cada valor en esta columna
debe ser único en la tabla departamentos.

Para modificar o eliminar una restricción ya existente, se puede uti-


Saber más lizar la sentencia ALTER TABLE.
Una forma alternativa
de obtener el mismo Por ejemplo, para agregar una restricción NOT NULL a la columna
resultado que con el
comando UNIQUE en
fecha_contratacion en la tabla empleados, se puede utilizar la si-
SQL sería a través de la guiente consulta:
creación de una clave
única (UNIQUE KEY)
en la tabla. Ambos
métodos garantizan
que los valores
en una columna
sean únicos.

Para eliminar una restricción, se utiliza la cláusula DROP en la sen-


tencia ALTER TABLE.

Por ejemplo, para eliminar la restricción UNIQUE en la columna nom-


bre_departamento en la tabla departamentos, se puede utilizar la
siguiente consulta:

Las vistas de restricciones son vistas que se utilizan para limitar el


conjunto de datos disponibles en una tabla o vista.

84
UNIDAD 2 | Lenguajes SQL: DML Y DDL

Se pueden crear vistas de restricciones utilizando la cláusula WITH


CHECK OPTION en la definición de la vista.

Por ejemplo, la siguiente consulta crea una vista de restricciones en la


tabla pedidos que solo muestra los pedidos con una fecha posterior
a enero de 2022:

Esta vista solo muestra los pedidos con una fecha posterior a enero
de 2022 y asegura que cualquier registro insertado o actualizado en
la vista cumpla esta condición.

85
Módulo de Base de datos

Lenguajes SQL:
3 DCL y extensión
procedimental
Ya hemos visto lenguajes de bases de datos como el DML y DDL que
permiten la manipulación y definición de la estructura de la base de
datos. Sin embargo, existen otros dos tipos de lenguajes SQL que son
igualmente importantes: DCL (Data Control Language) y la extensión
procedimental.

El lenguaje DCL se utiliza principalmente para controlar el acceso


a la base de datos y establecer los permisos de los usuarios. Los
comandos más comunes en el lenguaje DCL son GRANT y REVOKE.

Por otro lado, veremos cómo la extensión procedimental de SQL


permite a los usuarios crear código personalizado en la base de da-
tos para llevar a cabo tareas específicas. Además, al tener el código
almacenado en la base de datos, se puede acceder de forma rápida
y eficiente, lo que mejora la velocidad y eficiencia de las operaciones
de la base de datos.

1. Gestión de usuarios


El lenguaje DCL se utiliza para controlar el acceso a la base de datos y
establecer los permisos de los usuarios. Los comandos más comunes
en el lenguaje DCL son GRANT y REVOKE.

•Estructura •Registro de datos


•ddbb •Añadir registros
•tablas •Modificar registros
•campos •Borrar registros
•índices •Consultar registros
•restricciones
•código

DDL DML

DCL TCL
•Permisos •Transacciones
•Grant •Transac�on
•Revoke •Commit
•Rollback

Figura 3.1 Lenguaje DCL.

86
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

El comando GRANT se utiliza para otorgar permisos a los usuarios


para acceder a objetos de la base de datos, como tablas y vistas. El
comando REVOKE se emplea para retirar los permisos de los usuarios
para acceder a los objetos de la base de datos.

Todo esto lo vamos a ver a través de los comandos del lenguaje DCL.

DCL es el acrónimo de Data Control Language (Lenguaje de Control


de Datos), o lo que es lo mismo, un conjunto de comandos utilizados
para administrar los permisos y la seguridad de la base de datos. Los
comandos DCL se utilizan para definir los permisos de los usuarios,
controlar el acceso a los objetos de la base de datos y proteger los
datos de posibles ataques.

„ Creación, modificación
y eliminación de usuarios
En la mayoría de los sistemas gestores de bases de datos (SGBD), la
creación, modificación y eliminación de usuarios se realiza a través
de comandos DCL, que son un conjunto de comandos utilizados para
administrar la seguridad y los permisos en la base de datos.

Figura 3.2 Permisos de usuario.

La creación de usuarios se realiza con el comando CREATE USER,


que se usa para generar un nuevo usuario y especificar su contraseña
y otros atributos.

Por ejemplo, la siguiente consulta crea un nuevo usuario llamado


johndoe con la contraseña mypassword:

CREATE USER johndoe IDENTIFIED BY ‘mypassword’;

87
Módulo de Base de datos

La modificación de usuarios se realiza con el comando ALTER USER,


que se utiliza para modificar la información de un usuario existente,
como su contraseña o sus privilegios.

Por ejemplo, la siguiente consulta modifica la contraseña del usuario


johndoe:

ALTER USER johndoe IDENTIFIED BY ‘newpassword’;

La eliminación de usuarios se realiza con el comando DROP USER, que


se utiliza para eliminar un usuario existente. Por ejemplo, la siguiente
consulta elimina el usuario johndoe:

DROP USER johndoe;

Es importante tener en cuenta que, en algunos SGBD, como MySQL,


los usuarios se asocian a un host desde donde se conectan a la base
de datos, por lo que se debe especificar el host correspondiente al
crear, modificar o eliminar un usuario.

Por ejemplo, la siguiente consulta crea un nuevo usuario johndoe con


la contraseña mypassword y el host localhost en MySQL:

CREATE USER ‘johndoe’@’localhost’ IDENTIFIED BY


‘mypassword’;

También es posible conceder permisos a los usuarios utilizando co-


mandos DCL como GRANT y REVOKE.

Por ejemplo, la siguiente consulta concede al usuario johndoe el


permiso de selección (SELECT) en la tabla clientes:

GRANT SELECT ON clientes TO johndoe;

„ Administración de perfiles,
privilegios y roles
La administración de perfiles, privilegios y roles de usuario se realiza
mediante comandos DCL en la mayoría de los Sistemas gestores de
bases de datos (SGBD). En general, los perfiles y roles de usuario
se utilizan para agrupar usuarios que tienen permisos y privilegios
similares, lo que permite una administración más eficiente y segura
de la base de datos. Los privilegios de usuario son los permisos es-
pecíficos que se conceden a un usuario o perfil para realizar acciones
en la base de datos, como crear tablas, insertar datos o modificar
registros.

En Oracle, por ejemplo, se pueden crear perfiles utilizando el comando


CREATE PROFILE, y se pueden asignar privilegios específicos a esos
perfiles utilizando el comando GRANT.

88
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

Por ejemplo, la siguiente consulta crea un nuevo perfil llamado «deve-


loper» con una cuota de tabla máxima de 1 GB y concede el privilegio
de crear tablas a los usuarios que tengan asignado este perfil:

Por otro lado, los roles de usuario se pueden crear utilizando el co-
mando CREATE ROLE, y se pueden asignar privilegios específicos a
esos roles utilizando el comando GRANT.

Por ejemplo, la siguiente consulta crea un nuevo rol llamado db_admin


y concede el privilegio de crear tablas y crear usuarios a los usuarios
que tengan asignado este rol:

Los usuarios se pueden asignar a perfiles y roles utilizando los co-


mandos ALTER USER y GRANT.

Por ejemplo, la siguiente consulta asigna al usuario johndoe al perfil


developer y al rol db_admin:

Es importante tener en cuenta que la forma en que se administran


los perfiles, roles y privilegios puede variar entre los diferentes SGBD.

89
Módulo de Base de datos

„ Asignación y desasignación
de privilegios a usuarios sobre
objetos de la base de datos
La asignación y desasignación de privilegios a usuarios sobre objetos
de la base de datos es una tarea común en la administración de ba-
ses de datos y se realiza utilizando comandos DCL.

En general existen varios tipos de privilegios que se pueden asignar


a usuarios sobre objetos de la base de datos, incluyendo SELECT,
INSERT , UPDATE , DELETE , CREATE , DROP y ALTER . Los usuarios
también pueden tener privilegios de administración como el pri-
vilegio de GRANT, que les permite otorgar o revocar privilegios a
otros usuarios.

En SQL, los comandos para asignar y desasignar privilegios a usuarios


son los siguientes:

„ Para asignar un privilegio a un usuario sobre un objeto específico:

GRANT [privilege] ON [object] TO [user];

Por ejemplo, para otorgar el privilegio SELECT a un usuario lla-


mado johndoe en una tabla llamada employees, se utilizaría el
siguiente comando:

GRANT SELECT ON employees TO johndoe;

„ Para desasignar un privilegio de un usuario sobre un objeto es-


pecífico:

REVOKE [privilege] ON [object] FROM [user];

Por ejemplo, para revocar el privilegio SELECT de un usuario lla-


mado johndoe en una tabla llamada employees, se utilizaría el
siguiente comando:

REVOKE SELECT ON employees FROM johndoe;

También es posible asignar o desasignar privilegios a todos los usua-


rios de un rol en lugar de a usuarios individuales. Para hacer esto, se
utiliza el nombre del rol en lugar del nombre de usuario en el comando
GRANT o REVOKE.

Es importante tener en cuenta que la forma en que se asignan y


desasignan los privilegios puede variar entre los diferentes sistemas
gestores de bases de datos (SGBD).

Además, es primordial tener en consideración la seguridad y la pri-


vacidad de los datos al asignar privilegios a usuarios y roles. Es re-

90
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

comendable otorgar solo los privilegios necesarios para realizar las


tareas requeridas y revocar los privilegios innecesarios para evitar
posibles vulnerabilidades de seguridad.

„ Definición de roles. Asignación


y desasignación de roles usuarios
La asignación y desasignación de roles de usuario se realiza de ma-
nera similar a la forma que hemos visto actuar anteriormente sobre
objetos de la base de datos, esto es, utilizando los comandos GRANT
y REVOKE respectivamente.

Para asignar un rol a un usuario se utiliza el comando GRANT seguido


del nombre del rol y del nombre del usuario al que se le está asig-
nando el rol.

Por ejemplo, la siguiente consulta asigna el rol db_admin al usuario


johndoe:

GRANT db_admin TO johndoe;

De manera similar, para desasignar un rol de un usuario, se utiliza el


comando REVOKE seguido del nombre del rol y del nombre del usuario
del que se está eliminando el rol.

Por ejemplo, la siguiente consulta elimina el rol db_admin del usuario


johndoe:

REVOKE db_admin FROM johndoe;

Es importante tener en cuenta que los roles de usuario se emplean


para agrupar permisos y privilegios específicos, lo que permite una
administración más eficiente y segura de la base de datos.

Al asignar o desasignar un rol a un usuario, se le conceden o retiran


automáticamente todos los privilegios asociados con ese rol.

También es relevante considerar que la forma en que se asignan y


desasignan los roles puede variar según el sistema gestor de bases
de datos (SGBD) que se esté utilizando.

„ Normativa legal vigente sobre


protección de datos
La normativa actual sobre la Ley Orgánica de Protección de Datos
(LOPD) en España es el Reglamento General de Protección de Da-
tos (RGPD), que entró en vigor en mayo de 2018 y se aplica en todos
los países de la Unión Europea (UE).

91
Módulo de Base de datos

El RGPD establece una serie de medidas de protección de datos


personales de los ciudadanos de la UE con el objetivo de garantizar
Saber más
la privacidad y seguridad de los datos que se procesan.
La principal diferencia
entre la LOPD y el
RGPD radica en que el
RGPD es una norma
de ámbito europeo
y la LOPD es una
norma específica de
España, aunque ambas
comparten principios
y fundamentos
comunes en materia
de protección de
datos personales.
Figura 3.3 Aplicación ámbito europeo.

En España, la normativa se complementa con la Ley Orgánica de


Protección de Datos y Garantía de Derechos Digitales (LOPDGDD),
que se aprobó en 2018 para adaptar la legislación española al RGPD.

La LOPDGDD regula el tratamiento de los datos personales, los de-


rechos de los ciudadanos sobre sus datos, la figura del Delegado de
Protección de Datos (DPO) y las sanciones por incumplimiento de la
normativa.

Además, en España existe la Agencia Española de Protección de Datos


Recuerda (AEPD), que es la entidad encargada de velar por el cumplimiento de
la normativa de protección de datos y de supervisar el tratamiento de
La principal atribución
del Delegado de datos personales en España. La AEPD tiene la capacidad de sancionar
Protección de Datos a las empresas y organizaciones que no cumplan con la normativa,
(DPO) es supervisar el
cumplimiento del y también ofrece información y recursos para ayudar a las empresas
Reglamento General de a cumplir con sus obligaciones en materia de protección de datos.
Protección de Datos
(RGPD) dentro de una
organización y asesorar
a la misma sobre
cuestiones relacionadas
con la protección de
datos personales.

Figura 3.4 Logotipo AEPD.

2. Programación en bases de datos


La programación en bases de datos tiene como objetivo principal
permitir que las aplicaciones interactúen con las bases de datos, y
puedan manipular y recuperar datos de ellas. Para lograr esto, los
desarrolladores utilizan diferentes entornos de desarrollo y lenguajes
de programación específicos para bases de datos, como SQL, PL/SQL,
T-SQL, entre otros.

Además, permite a los desarrolladores interactuar con las bases de


datos, realizar operaciones de consulta y manipulación de datos, y
garantizar la integridad y la calidad de los datos.

92
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

„ Entornos de desarrollo
en torno a la base de datos
Los entornos de desarrollo de bases de datos son conjuntos de he-
rramientas y tecnologías utilizadas por los desarrolladores y admi-
nistradores de bases de datos para diseñar, desarrollar y mantener
bases de datos. Estos entornos se centran en el diseño, modelado,
gestión, optimización y prueba de bases de datos y aplicaciones fun-
damentadas en bases de datos.

Los entornos de desarrollo de bases de datos incluyen herramientas


para la gestión de esquemas, la creación y modificación de tablas, la
definición de restricciones de integridad, la optimización de consultas
y la monitorización del rendimiento de la base de datos.

También pueden incluir herramientas para la administración de usua-


rios, la gestión de permisos y roles, y la realización de copias de
seguridad y restauración de la base de datos.

Algunos de los entornos de desarrollo de bases de datos más co-


munes son:

„ Entornos de desarrollo integrados (IDEs) específicos para bases


de datos como SQL Server Management Studio, Oracle SQL De-
veloper, MySQL Workbench o PostgreSQL Studio.

Figura 3.5 Interfaz MySQL Workbench.

93
Módulo de Base de datos

„ Herramientas de modelado de bases de datos, como ER/Studio,


SQL Power Architect, DBDesigner o Toad Data Modeler.

Figura 3.6 Interfaz de Toad.

„ Herramientas de control de versiones, como Git, SVN o Mercurial,


que permiten a los desarrolladores trabajar en equipo y realizar
un seguimiento de los cambios realizados en la base de datos.

Figura 3.7 Interfaz de SVN.

94
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

„ Herramientas de automatización de la construcción y despliegue


de bases de datos, como Redgate SQL Change Automation, DbUp
o Flyway.

Figura 3.8 Interfaz de DbUp.

„ Tipo de guiones: guiones simples,


procedimientos y funciones
En programación de bases de datos hay tres tipos principales de
guiones: guiones simples, procedimientos almacenados y funciones
almacenadas.

Figura 3.9 Guiones en programación.

Los guiones son secuencias de comandos escritos en lenguaje SQL que


se pueden ejecutar de forma interactiva o como un archivo por lotes.

Los tres tipos de guiones en SQL son:

„ Guiones simples: Son guiones que contienen una serie de coman-


dos SQL que se ejecutan secuencialmente. Son útiles para reali-
zar tareas sencillas, como insertar datos en una tabla, actualizar
registros o eliminar datos.

„ Procedimientos almacenados: Son un conjunto de instrucciones


SQL que se agrupan y se guardan como un objeto en la base de

95
Módulo de Base de datos

datos. Se utilizan para realizar tareas complejas que requieren


varias instrucciones SQL y que se ejecutan con frecuencia. Los
procedimientos almacenados pueden aceptar parámetros de en-
trada y pueden devolver resultados como conjuntos de resultados
o valores escalares.

Por ejemplo, un procedimiento almacenado puede ser utilizado


para realizar un cálculo complejo en una tabla y actualizar los
resultados automáticamente.

„ Funciones almacenadas: Son similares a los procedimientos al-


macenados, pero en lugar de ejecutar una serie de instrucciones
SQL, se utilizan para devolver un valor específico. Las funciones
almacenadas se pueden utilizar en expresiones SQL y se pueden
emplear para realizar cálculos complejos, realizar búsquedas o
ejecutar tareas específicas.

Por ejemplo, una función almacenada se puede usar para obtener


el promedio de una columna específica de una tabla.

„ La sintaxis del lenguaje


de programación
En el ámbito de las bases de datos existen diferentes lenguajes de
programación que se utilizan para acceder y manipular datos en la
base de datos. En general, estos lenguajes de programación tienen
una sintaxis específica que es importante entender para poder trabajar
con ellos de manera efectiva.

„ Tipos de datos, identificadores, variables, constantes

Los tipos de datos se refieren a los diferentes tipos de informa-


ción que pueden ser almacenados en una base de datos, como
números, caracteres, fechas, etc.

Los identificadores se utilizan para dar nombres a las variables


y objetos dentro del lenguaje de programación, mientras que las
variables son contenedores para almacenar valores y las cons-
tantes son valores fijos que no cambian a lo largo del tiempo.

„ Operadores

Los operadores son símbolos especiales que se utilizan para rea-


lizar operaciones matemáticas, comparaciones y combinaciones
lógicas.

Por ejemplo, el signo + se utiliza para sumar dos números, el


signo == se utiliza para comparar si dos valores son iguales y
los operadores lógicos and, or y not se utilizan para combinar
expresiones lógicas.

96
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

Si nos basamos en el lenguaje PHP, tenemos los siguientes ope-


radores lógicos:

Operador Descripción
&& (and) Retorna true si ambas expresiones son verdaderas. Si alguna de ellas es falsa,
retorna false.
|| (or) Retorna true si al menos una de las expresiones es verdadera. Si ambas son falsas,
retorna false.
! (not) Retorna el valor opuesto de una expresión. Si la expresión es verdadera, retorna
false. Si la expresión es falsa, retorna true.
and Retorna true si ambas expresiones son verdaderas. Si alguna de ellas es falsa,
retorna false. Tiene la misma funcionalidad que el operador &&.
or Retorna true si al menos una de las expresiones es verdadera. Si ambas son falsas,
retorna false. Tiene la misma funcionalidad que el operador ||.
xor Devuelve true si exactamente una de las expresiones es verdadera y la otra es falsa.
Si ambas son verdaderas o falsas, retorna false.

„ Estructuras de control de flujo y librerías de funciones

Se utilizan para controlar el flujo de ejecución de un programa y


tomar decisiones basadas en ciertas condiciones.

Por ejemplo, las estructuras if-else se utilizan para tomar deci-


siones basadas en si una condición es verdadera o falsa, mientras
que los bucles for y while se utilizan para repetir una serie de
instrucciones varias veces.

Si atendemos al lenguaje de programación Java, tenemos las


siguientes estructuras de control:

Estructura Descripción
If Estructura condicional que permite que un bloque de código se ejecute si se
cumple una condición.
If-else Estructura condicional que permite que un bloque de código se ejecute si se cumple
una condición, y otro bloque de código se ejecuta si la condición no se cumple.
Switch Estructura de control que permite que el código elija entre varias opciones
basadas en una variable o una expresión.
For Estructura de control de bucle que permite que un bloque de código se ejecute
varias veces, normalmente con un contador o índice.
While Estructura de control de bucle que permite que un bloque de código se ejecute
varias veces mientras se cumpla una condición.
Do-while Estructura de control de bucle que permite que un bloque de código se ejecute
varias veces hasta que se cumpla una condición.
Foreach Estructura de control de bucle que permite que un bloque de código se ejecute
para cada elemento de una colección, como un arreglo o una lista.
Break Declaración que se usa dentro de un bucle para salir del bucle.
Continue Declaración que se usa dentro de un bucle para saltar a la siguiente iteración del bucle.
Return Declaración que se usa para salir de una función y devolver un valor opcional.

97
Módulo de Base de datos

Figura 3.10 Representación de la estructura de control de bucle While.

Por otro lado, las librerías de funciones son conjuntos de fun-


ciones predefinidas que se pueden utilizar en un lenguaje de
programación para realizar tareas específicas, como la manipu-
lación de cadenas, la gestión de archivos y la conexión a bases
de datos.

Por ejemplo, las principales librerías de funciones existentes en


Python para el manejo de bases de datos son:

Librería Descripción

sqlite3 Proporciona una interfaz para trabajar con la base de datos SQLite, una base de datos
relacional ligera que se puede integrar fácilmente en aplicaciones.

MySQL Proporciona una interfaz para trabajar con la base de datos MySQL, una base de datos
Connector relacional muy popular en el mundo empresarial y web.

psycopg2 Proporciona una interfaz para trabajar con la base de datos PostgreSQL, una base
de datos relacional muy poderosa y escalable que se utiliza en muchos sistemas
empresariales y de Big Data.

pymongo Proporciona una interfaz para trabajar con MongoDB, una base de datos NoSQL
orientada a documentos muy popular en la web y en aplicaciones de Big Data.

pyodbc Proporciona una interfaz para trabajar con cualquier base de datos que soporte el
estándar ODBC (Open Database Connectivity), como Microsoft SQL Server, Oracle, DB2,
entre otras.

98
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

„ Procedimientos y funciones
Procedimientos

Un procedimiento es un bloque de código que realiza una tarea espe-


cífica en una base de datos. Pueden aceptar parámetros de entrada
y pueden devolver resultados en forma de parámetros de salida. Los
procedimientos se pueden utilizar para realizar tareas repetitivas,
realizar operaciones de mantenimiento en la base de datos o para
encapsular operaciones complejas en una única unidad lógica.

En general, los procedimientos se componen de una declaración de


encabezado que indica el nombre del procedimiento y los parámetros
de entrada y salida, seguida de una sección de cuerpo que contiene
el código del procedimiento.

Supongamos que tenemos una tabla llamada Empleados (Figura 3.11)


con las columnas Nombre y Salario.

Queremos crear un procedimiento almacenado llamado Aumen-


tarSalario que reciba un nombre de empleado y un porcentaje de
aumento, y actualice el salario del empleado correspondiente en la
tabla Empleados aplicando el aumento proporcionado:

Una vez que se haya creado el procedimiento almacenado, podremos


llamarlo utilizando la siguiente sintaxis:

99
Módulo de Base de datos

En este ejemplo, el procedimiento almacenado AumentarSalario


recibe el nombre del empleado y el porcentaje de aumento como
parámetros. Luego, realiza una actualización en la tabla Empleados,
multiplicando el salario actual por el factor de aumento calculado.

La condición WHERE se utiliza para asegurarse de que solo se ac-


tualice el salario del empleado especificado.

Funciones

Las funciones son similares a los procedimientos, pero devuelven un


valor de salida después de realizar una tarea específica. Las funciones
pueden aceptar parámetros de entrada y pueden devolver resultados
en forma de valores escalares o tablas.

Al igual que los procedimientos, las funciones se componen de una


declaración de encabezado que indica el nombre de la función y los
parámetros de entrada y salida, seguida de una sección de cuerpo
que contiene el código de la función.

Queremos crear una función en SQL que calcule el área de un círculo


basado en su radio. La función se llamará CalcularAreaCirculo y tomará
el radio como parámetro. Devolverá el área calculada.

En este ejemplo, la función CalcularAreaCirculo toma un parámetro


llamado @radio de tipo FLOAT y devuelve un valor FLOAT. Dentro de
la función, se declara una variable @area para almacenar el resultado
del cálculo del área.

Luego, se realiza el cálculo utilizando la fórmula del área del círculo


(π × radio2) y se asigna el resultado a la variable @area. Finalmente,
se devuelve el valor del área mediante la instrucción RETURN @area.

„ Control de errores
El control de errores en la programación de bases de datos se re-
fiere a la identificación, manejo y prevención de errores que puedan
ocurrir durante la ejecución de una instrucción o un conjunto de

100
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

instrucciones. Los errores pueden ser causa-


dos por diferentes factores, como problemas
de sintaxis, falta de permisos, violaciones de
integridad o errores de conexión, entre otros.

Para manejar estos errores, los lenguajes de


programación de bases de datos ofrecen di-
ferentes mecanismos de control de errores,
como el uso de bloques try-catch o if-else
para identificar y manejar errores específicos.
Además, en algunos lenguajes de programa-
ción, como PL/SQL, se pueden definir proce-
dimientos y funciones que encapsulan las
instrucciones y que pueden manejar errores
de manera más efectiva.

Es crucial realizar un buen control de errores Saber más


en la programación de bases de datos para ga- Un bloque try-catch
se utiliza para capturar
rantizar la integridad y seguridad de los datos, y manejar excepciones
Figura 3.11 así como para prevenir problemas y pérdidas que puedan ocurrir
Gestión de excepciones. durante la
de información. Además, el control de errores ejecución de
puede ayudar a mejorar el rendimiento de las un programa.
aplicaciones y a reducir el tiempo de inactividad en la base de datos.

„ Cursores y transacciones
Los cursores y las transacciones son dos conceptos importantes en
programación de bases de datos.

Un cursor es un objeto que se utiliza para recorrer los registros de


una tabla o resultado de una consulta de manera secuencial; dicho
de otra forma, permite acceder a los registros de una tabla uno por
uno, lo que puede ser útil en situaciones donde se necesite realizar
una operación específica sobre cada registro. Por ejemplo, se puede
utilizar un cursor para actualizar el valor de un campo en cada registro
de una tabla. No hay que confundir las propiedades y el uso de un
cursor con otro concepto como puede ser el de puntero.

Aunque ambos pueden ser utilizados para acceder a información en


una base de datos, un cursor se enfoca más en la manipulación de
datos de forma programática, mientras que un puntero se enfoca más
en la gestión de la memoria y la localización de los datos almacenados
en la base de datos.

Es decir, un puntero es una referencia a una ubicación específica en


la memoria de una computadora. En las bases de datos, los punteros
a menudo se utilizan para apuntar a la dirección de memoria de un
objeto de datos en particular. Los punteros se usan para moverse
dentro de la memoria y acceder a los datos almacenados en una
base de datos.

101
Módulo de Base de datos

Por otro lado, una transacción es un conjunto de operaciones que


se realizan sobre una base de datos como una sola unidad. Las
transacciones se utilizan para garantizar que todas las operaciones
se realicen correctamente o que no se realicen en absoluto. Si una
operación en una transacción falla, todas las operaciones realizadas
en la transacción se deshacen y la base de datos vuelve al estado
anterior a la transacción.

En general, se utilizan transacciones para garantizar la integridad de


los datos en la base de datos y prevenir la corrupción de datos. Por
ejemplo, como ya habíamos apuntado anteriormente, si una tran-
sacción involucra una transferencia de dinero entre dos cuentas
bancarias, se garantiza que la transferencia se realice por completo
o no se realice en absoluto para evitar que los datos se corrompan.

„ Facilidades para el desarrollo


de entornos gráficos
Cuando hablamos de programación en bases de datos, existen varias
facilidades para el desarrollo de entornos gráficos que permiten crear
aplicaciones de manera visual y rápida. Algunas de estas facilidades son:

„ Herramientas de modelado de datos

Aquí se engloban las herramientas que permiten crear diagramas


para representar la estructura de la base de datos, incluyendo
las tablas, relaciones y campos. Algunos ejemplos de estas he-
rramientas son ERWin, PowerDesigner y Visio.

Figura 3.12 Interfaz de Visio.

102
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

„ Entornos de desarrollo integrado (IDE)

Son herramientas que incluyen un editor de código, un depu-


rador y otras funcionalidades que facilitan la creación de apli-
caciones. Ya hemos hablado anteriormente de ellas, por lo que
añadiremos la característica de que pueden tener conexiones
con programas de terceros para facilitar las tareas, mediante
plugins o módulos.

Algunos ejemplos de IDE para bases de datos son Oracle SQL


Developer, Microsoft SQL Server Management Studio y MySQL
Workbench.

Figura 3.13 Interfaz de Oracle SQL Developer.

„ Generadores de código

Usados por los desarrolladores para ahorrar tiempo en ciertas


funciones que son comunes o para generar bloques de código cuya
base es estándar y que solo necesitan de ese pequeño punto de
partida para escalar y perfeccionar el código o directamente para
personalizar el bloque generado.

Estas herramientas permiten generar código automáticamente


a partir de diagramas o diseños visuales. Pueden generar código
para lenguajes de programación de alto nivel como Java, C# y PHP.

103
Módulo de Base de datos

Ejemplos de generadores de código son JHipster y Visual Paradigm.

Figura 3.14 Interfaz de Visual Paradigm.

„ Bibliotecas de componentes

Son colecciones de componentes visuales que pueden ser reuti-


lizados para construir aplicaciones. Estos componentes pueden
incluir elementos de interfaz de usuario como botones, cuadros
de texto y tablas.

Algunos ejemplos de bibliotecas de componentes son JavaFX,


.NET Framework y Bootstrap.

Figura 3.15 Interfaz de programación en Bootstrap.

104
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

En general, estas facilidades permiten a los desarrolladores de bases


de datos crear aplicaciones de manera más rápida y eficiente, ya que
proporcionan herramientas visuales y automatizadas que simplifican
el proceso de desarrollo.

Además, estas herramientas suelen tener una curva de aprendizaje


más corta, lo que significa que los desarrolladores pueden comenzar a
utilizarlas rápidamente para crear aplicaciones y solucionar problemas.

„ Disparadores
Los disparadores (triggers en inglés) en programación de bases de
datos son objetos que se utilizan para disparar o automatizar ciertas
acciones o tareas cuando se producen ciertos eventos en la base de
datos, como, por ejemplo, cuando se inserta, actualiza o elimina un
registro en una tabla.

En términos técnicos, un disparador es un bloque de código SQL que


se ejecuta automáticamente en respuesta a un evento determinado.
El bloque de código está asociado a una tabla específica y se define
en la base de datos con una sintaxis específica.

Los disparadores se utilizan para realizar tareas tales como validar


los datos que se están insertando en una tabla, actualizar auto-
máticamente ciertos campos en otras tablas en respuesta a una
actualización en la tabla original, enviar notificaciones por correo
electrónico o mensajes de texto en respuesta a ciertos eventos en
la base de datos.

Podemos hacer una división de los disparadores de la siguiente manera:

„ Disparadores de fila (row triggers)

Los disparadores de fila se activan para cada fila que se inserta,


actualiza o elimina de una tabla. Los disparadores de fila se utilizan
para realizar acciones específicas en una fila de la tabla. Algunos
ejemplos de acciones que se pueden realizar con un disparador de
fila son: validar la entrada, realizar un cálculo complejo o realizar
cambios en otras tablas.

Por ejemplo, supongamos que tenemos una


tabla llamada ventas con las siguientes co-
lumnas: id_venta, id_producto, cantidad y
precio_unitario.

Podríamos utilizar un disparador de fila para


realizar un cálculo del total de ventas cada
vez que se inserta o actualiza una fila en la
tabla y guardarlo en una variable $TOTAL. El
disparador de fila podría estar diseñado para Figura 3.16 Calculo de campos.

105
Módulo de Base de datos

calcular el total de ventas multiplicando


la cantidad por el precio unitario y luego
insertar esa variable calculada en otra tabla
o sacarla por pantalla.

En el ejemplo de la Figura 3.17, creamos una


tabla llamada clientes con columnas para
«id», «nombre» y «saldo». Luego, creamos
un trigger llamado actualiza_saldo que se
ejecutará antes de cada inserción o actua-
lización en la tabla clientes.

Dentro del trigger, verificamos si el nue-


vo saldo (representado por NEW.saldo) es
negativo. Si es así, establecemos el saldo
a cero (NEW.saldo = 0) para asegurarnos
de que no se permitan saldos negativos
Figura 3.17 en la tabla.

„ Disparadores de instrucción (statement triggers)

Los disparadores de instrucción se activan una vez para cada


operación de inserción, actualización o eliminación de una tabla.
Los disparadores de instrucción se utilizan para realizar acciones
específicas en un conjunto de filas de la tabla. Algunos ejemplos
de acciones que se pueden realizar con un disparador de instruc-
ción son: actualizar una tabla secundaria o realizar una auditoría
de cambios en la tabla.

Por ejemplo, supongamos que tenemos una tabla llamada usuarios


con las siguientes columnas: id_usuario, nombre, apellido y email.

Figura 3.18 Disparador de instrucción.

106
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

Podríamos utilizar un disparador de instrucción para realizar una


auditoría de cambios cada vez que se inserta, actualiza o elimina
una fila en la tabla.

El disparador de instrucción podría estar diseñado para insertar


una fila en la tabla auditorías cada vez que se realiza una opera-
ción en la tabla usuarios.

En el ejemplo siguiente (Figura 3.19), cada vez que se inserta una


nueva fila en la tabla Orders, el statement trigger InsertOrderTri-
gger se activará.

El trigger insertará un nuevo registro en la tabla OrderLogs con el


ID de la orden recién insertada, un mensaje de registro y la fecha
y hora actual.

Figura 3.19

„ Los disparadores before

Los disparadores before se activan antes de que se complete


una operación en la tabla, mientras que los disparadores after se
activan después de que se completa una operación en la tabla.
Estos tipos de disparadores se utilizan para implementar reglas
de validación y otras acciones específicas que se deben realizar
antes o después de una operación en la base de datos.

107
Módulo de Base de datos

Figura 3.20 Disparador de tipo before.

Podríamos utilizar un disparador before para validar que se esté


insertando información permitida en la tabla, por ejemplo, ase-
gurándonos de que el campo nombre no esté vacío y el campo
dirección tenga un formato válido (Figura 3.20).

Supongamos, por ejemplo (Figura 3.21) que tenemos una tabla


llamada Customers con las columnas CustomerID, FirstName y
LastName. Queremos crear un before trigger que impida la in-
serción de un nuevo cliente si el apellido ya existe en la tabla. En
ese caso, el trigger cancelará la operación de inserción.

En este ejemplo, el trigger before_insert_customer se dispara


antes de cada inserción en la tabla Customers. El trigger verifica si
el apellido del nuevo cliente (representado por el pseudo-registro
NEW) ya existe en la tabla. Si existe, se genera una excepción con
el mensaje indicado, lo que impide que se realice la inserción.

108
UNIDAD 3 | Lenguajes SQL: DCL y extensión procedimental

Figura 3.21

„ Los disparadores after

Los disparadores after son los que se ejecutan después de que


se completa una operación en una tabla, como una inserción, una
actualización o una eliminación. Estos disparadores son útiles
para realizar tareas adicionales después de que se han realizado
operaciones principales en la base de datos, lo que puede ayudar
a mantener la integridad de los datos y facilitar la ejecución de
tareas complejas.

Un ejemplo de uso común de los disparadores after es para man-


tener la integridad referencial de la base de datos.

Por ejemplo, si tenemos una tabla clientes con una columna id_ciu-
dad que hace referencia a la tabla ciudades, podemos utilizar un
disparador after insert para asegurarnos de que cualquier nuevo
registro en la tabla clientes tenga una ciudad válida en la tabla
ciudades.

Figura 3.22 Disparador de tipo after.

109
Módulo de Base de datos

El disparador podría verificar que el valor de id_ciudad en la tabla


clientes corresponda a un registro válido en la tabla ciudades, y si
no es así, podría generar un error o realizar una acción específica
para corregir la inconsistencia.

En el ejemplo de la Figura 3.23, partimos de la supodición de que


tenemos una tabla llamada Ventas con dos columnas: Producto
y Cantidad. Queremos crear un trigger AFTER que actualice au-
tomáticamente la columna Total en otra tabla llamada Totales
cada vez que se inserte una nueva fila en la tabla Ventas. El trigger
sumará la cantidad de productos vendidos al total existente en
la tabla Totales.

Figura 3.23

En este ejemplo, cada vez que se inserte una nueva fila en la ta-
bla Ventas, el trigger AFTER se disparará y ejecutará la sentencia
UPDATE para sumar la cantidad de productos vendidos al total
existente en la tabla Totales.

Finalmente, los disparadores pueden ser configurados para ejecu-


tarse para un evento específico, para un conjunto de eventos, o para
cualquier evento en la tabla.

En cualquier caso, hemos de tener en cuenta que el uso excesivo


de disparadores puede tener un impacto negativo en el rendimien-
to de la base de datos, por lo que es recomendable utilizarlos con
sumo cuidado y en situaciones concretas en las que realmente sean
necesarios.

110
Módulo de Base de datos

Bases de datos objeto-


4 relacionales
Las bases de datos objeto-relacionales son una extensión de los
modelos de bases de datos relacionales que surgen para manejar la
complejidad de los datos estructurados y no estructurados. Estas
bases de datos ofrecen una serie de características avanzadas, como
la capacidad de almacenar objetos complejos y estructuras de datos,
así como la posibilidad de realizar operaciones avanzadas de consulta
y manipulación de datos.

La principal característica que distingue las bases de datos obje-


to-relacionales de las relacionales es su capacidad para manejar
tipos de datos complejos, como los objetos. Los objetos pueden ser
definidos por los usuarios para representar cualquier tipo de entidad
o concepto, y se pueden almacenar en la base de datos junto con
sus atributos y métodos asociados.

Así pues, las bases de datos objeto-relacionales son una evolución de


los modelos de bases de datos relacionales, que ofrecen característi-
cas avanzadas para manejar la complejidad de los datos estructurados
y no estructurados, y permiten a los usuarios almacenar y manipular
objetos complejos y estructuras de datos.

1. Uso de bases de datos


objeto-relacionales
Las bases de datos objeto-relacionales (ORDBMS, por sus siglas en
inglés) son un tipo de base de datos que combina características de las
bases de datos relacionales y las bases de datos orientadas a objetos.

Figura 4.1 Diferencia entre las bases de datos orientadas a objetos y las relacionales.

A diferencia de las bases de datos relacionales tradicionales, que se


basan en tablas con filas y columnas, las bases de datos objeto-re-
lacionales permiten la definición de tipos de datos complejos, como

112
UNIDAD 4 | Bases de datos objeto-relacionales

objetos, que pueden contener otros objetos, así como también rela-
ciones entre objetos. Saber más
Las bases de datos

„ Características de las bases de datos


orientadas a objetos
pueden requerir
más recursos que
objeto-relacionales las bases de datos
relacionales, ya que
tienden a almacenar
Entre las principales características de las bases de datos objeto-re- objetos más complejos
lacionales, podemos destacar las siguientes: y estructurados
que las tablas
relacionales.

Tipos de datos complejos

Herencia de objetos

Polimorfismo

Integración con lenguajes POO

Transacciones

Concurrencia

Figura 4.2 Características de las bases de datos objeto-relacionales.

1. Tipos de datos complejos: Las bases de datos objeto-relacionales


permiten la definición de tipos de datos complejos, como objetos,
matrices, listas y otros tipos de estructuras de datos que no es-
tán disponibles en las bases de datos relacionales tradicionales.

2. Herencia de objetos: Los objetos pueden heredar propiedades y


métodos de otras clases, lo que facilita la creación y el manteni-
Glosario
miento de aplicaciones complejas.
Matriz: es una
estructura de datos
3. Polimorfismo: Se pueden definir métodos y funciones que pueden en forma de tabla
compuesta por filas
ser aplicados posteriormente a diferentes tipos de objetos, lo y columnas que
que facilita la programación y el mantenimiento de aplicaciones almacenan valores
relacionados
complejas. entre sí.

4. Integración con lenguajes de programación orientados a objetos:


Pueden ser integradas fácilmente con lenguajes de programación
orientados a objetos, lo que facilita la creación y el mantenimiento
de aplicaciones complejas.

5. Transacciones y concurrencia: Este tipo de bases de datos ofre-


cen soporte para transacciones y concurrencia, lo que garantiza
la integridad y la consistencia de los datos en aplicaciones de alta
disponibilidad y alta concurrencia.

113
Módulo de Base de datos

„ Tipos de datos objeto


Saber más
Algunos de los
Cada tipo de dato objeto tiene sus propias características y se utili-
principales lenguajes za en diferentes contextos para representar diferentes tipos de in-
de programación formación en la base de datos objeto-relacional. La elección del tipo
orientados a objetos
son: de dato objeto adecuado dependerá de las necesidades específicas
• Java de la aplicación y de los objetos del mundo real que se deseen re-
• Python
• C++ presentar en la base de datos.
• C#
• Ruby
• Swift
• Objective-C
• PHP
• JavaScript (a través
de frameworks
como React o
Angular)

Figura 4.3 Tipos de objetos en las bases de datos.

Existen varios tipos de datos objeto que se pueden utilizar en una


base de datos objeto-relacional, algunos de los más comunes son:

„ Objetos simples: Contienen atributos de datos simples, como


números, cadenas de texto, fechas, entre otros. Representan enti-
dades simples del mundo real, como personas, lugares o eventos.

„ Objetos compuestos: Son objetos que contienen otros objetos


u otras referencias de objetos. Establecen relaciones complejas
entre entidades del mundo real, como una biblioteca con sus
libros y sus autores.

„ Objetos de colección: Estos objetos contienen una colección de


objetos en ellos mismos, como una lista o un conjunto. Represen-
tan colecciones de entidades del mundo real como, por ejemplo
una lista de tareas pendientes.

„ Objetos de referencia: La principal característica de estos objetos


es que su contenido se basa en referencias a otros objetos. Se
utilizan para establecer relaciones entre entidades del mundo real,
como una persona que tiene un libro prestado de una biblioteca.

„ Objetos de comportamiento: Poseen métodos y funciones que


pueden ser aplicados a los objetos de la base de datos. Son usa-
dos para definir comportamientos complejos en la base de datos,
como el proceso de préstamo de un libro de una biblioteca.

114
UNIDAD 4 | Bases de datos objeto-relacionales

„ Definición de tipo de objeto


Los tipos de datos objeto son tipos de datos complejos que se utilizan
en las bases de datos objeto-relacionales para representar objetos
del mundo real en la base de datos.

Un tipo de dato objeto es una entidad que combina datos y com-


portamiento en un solo objeto, lo que permite la representación de
objetos complejos en la base de datos.

En una base de datos objeto, los datos se definen mediante la crea-


ción de clases de objetos. Estas clases de objetos pueden contener
atributos, que son datos simples como números o cadenas de texto,
así como también otros objetos o referencias a otros objetos. Además,
las clases de objetos pueden definir métodos, que son funciones que
se pueden aplicar a los objetos de la clase.

Por ejemplo, en una base de datos objeto que gestiona información


de una biblioteca, se podría definir una clase de objetos llamada Libro
que tenga atributos como título, autor y editorial. Además, se podría
definir un método en la clase Libro llamado prestar, que permita
marcar un libro como prestado.

Figura 4.4 La ordenación en la base de datos objeto-realcional es indispensable.

Los tipos de datos objeto se presentan como una forma eficiente


y flexible de representar objetos complejos en la base de datos, lo
que facilita el desarrollo de aplicaciones que manejan información
compleja.

Además, al permitir la definición de comportamiento en los obje-


tos de la base de datos, se pueden realizar operaciones complejas
directamente en la misma base de datos, lo que puede mejorar el
rendimiento y la eficiencia de la aplicación.

115
Módulo de Base de datos

„ Herencia
La herencia en una base de datos objeto-relacional se refiere a la
capacidad de una clase de objetos de heredar atributos y métodos de
otra clase de objetos; es decir, una clase de objetos puede basarse
en otra clase de objetos y utilizar sus atributos y métodos, además
de agregar sus propios atributos y métodos.

En términos técnicos, la herencia se define como un


mecanismo que permite que una clase de objetos
(la clase hija) herede los atributos y métodos de
otra clase de objetos (la clase padre o superclase).
La clase hija puede utilizar estos atributos y méto-
dos heredados como si fueran propios, además de
agregar nuevos atributos y métodos si es necesario.

La herencia se utiliza en las bases de datos obje-


to-relacionales para reducir el código y simplificar
el diseño de la base de datos.

Por ejemplo, si se tiene una base de datos que ges-


tiona información de empleados, se podría definir
una clase de objetos Empleado que contenga atri-
butos como nombre, apellido, fecha de nacimiento,
entre otros. Luego, se podría definir una clase de
objetos Gerente que herede los atributos de la cla-
se Empleado, y agregue sus propios atributos como
Figura 4.5 Herencia. departamento y número de subordinados.

La herencia también permite una mayor flexibilidad


en la gestión de objetos en la base de datos.

Por ejemplo, si se desea realizar una operación en


todos los objetos de una determinada clase y sus
subclases, se puede hacer en la clase padre, y la
operación se aplicará automáticamente a todas las
subclases que heredan sus atributos y métodos.

„ Identificadores, referencias
Identificadores

En el contexto de las bases de datos objeto-rela-


cionales, los identificadores son atributos que se
utilizan para identificar de manera única a un obje-
to dentro de la base de datos. Además, se utilizan
Figura 4.6 Herencia (caso práctico). para garantizar que no haya objetos duplicados en
la base de datos y para facilitar la búsqueda y recu-
peración de objetos específicos.

116
UNIDAD 4 | Bases de datos objeto-relacionales

Los identificadores pueden ser simples o compuestos:

„ Cuando hablamos de identificadores simples, quiere decir que


se utiliza un único atributo como clave para identificar al objeto.

Por ejemplo, en una base de datos de empleados, se podría utilizar


el número de identificación del empleado como identificador único.

„ En el caso de identificadores compuestos, se utilizan varios atri-


butos como clave para identificar al objeto.

Por ejemplo, en una base de datos de libros, se podría utilizar el


título del libro y el nombre del autor como identificador compuesto
para identificar de manera única a cada libro en la base de datos.

Los identificadores se utilizan en las operaciones de búsqueda y ac-


tualización de la base de datos. Cuando se busca un objeto en la base
de datos, se utiliza el identificador para localizar el objeto específico.
Cuando se actualiza un objeto en la base de datos, se utiliza el iden-
tificador para garantizar que se esté actualizando el objeto correcto.

Es importante destacar que los identificadores deben ser únicos


dentro de la base de datos para garantizar la integridad de los datos
y evitar conflictos en las operaciones de la base de datos.

Referencias

Una referencia es un tipo de dato objeto que se utiliza para establecer


una relación entre dos objetos. Una referencia es esencialmente un
puntero a otro objeto en la base de datos.

Las referencias se utilizan para modelar relaciones complejas entre


entidades del mundo real en la base de datos. Recuerda
Un puntero es una
Por ejemplo, en una base de datos de una biblioteca, se podría uti- variable que contiene la
lizar una referencia para establecer una relación entre un libro y su dirección de memoria
de otra variable en un
autor. De esta manera, el objeto de libro tendría una referencia al programa de
objeto de autor, lo que permitiría acceder a la información del autor computadora.
directamente desde el objeto de libro.

En la práctica, una referencia se define como un atributo de un objeto


que contiene el identificador único del objeto al que se está haciendo
referencia. Este identificador único, también conocido como clave
primaria, se utiliza para buscar y recuperar el objeto al que se hace
referencia en la base de datos.

Las referencias se utilizan comúnmente en las bases de datos obje-


to-relacionales para modelar relaciones complejas entre entidades,
lo que permite una mayor flexibilidad y eficiencia en el manejo de
información.

117
Módulo de Base de datos

Sin embargo, es primordial tener en cuenta que el uso excesivo de


referencias puede llevar a un diseño de base de datos complejo y
difícil de mantener. Por tanto, es importante equilibrar el uso de re-
ferencias con otras técnicas de diseño de base de datos.

Por otro lado, hay que procurar no caer en errores como el de las
referencias circulares. Las referencias circulares son un problema
común en las bases de datos que ocurre cuando dos o más tablas
se relacionan entre sí de manera que generan una referencia cruzada
o en círculo, lo que provoca que la base de datos no pueda resolver
la información correctamente.

Esto significa que, cuando se intenta recuperar datos de la base de


datos, se pueden generar resultados incorrectos, inesperados o, in-
cluso, errores en el sistema.

Figura 4.7 Referencias entre registros.

Para entender mejor el concepto, se puede pensar en una tabla A


que se relaciona con una tabla B, y a su vez, la tabla B se relaciona
con la tabla A. Esto genera una referencia circular ya que la tabla A
depende de la tabla B y viceversa. Si no se maneja correctamente, la
base de datos puede entrar en un bucle infinito y provocar problemas
en el sistema.

Figura 4.8 Referencia circular.

118
UNIDAD 4 | Bases de datos objeto-relacionales

Los peligros de las referencias circulares en las bases de datos son


varios.

Puede causar problemas en la integridad de los datos, ya


que los resultados pueden ser impredecibles y no
confiables.

Puede provocar errores en el sistema, como bloqueos o


caídas.

Puede dificultar la iden�ficación y resolución de problemas


en la base de datos, lo que a su vez puede llevar a un mayor
�empo y esfuerzo en la solución de problemas.

Figura 4.9 Peligros de las referencias circulares.

Para evitar las referencias circulares, existen varias técnicas que se


pueden utilizar en la base de datos.

„ En primer lugar, se puede utilizar una estructura de datos que evite


las referencias circulares, como una estructura de grafo o un árbol.

„ En segundo lugar, se puede evitar crear relaciones innecesarias


entre las tablas, lo que implica una planificación cuidadosa y una
comprensión profunda de las necesidades de la base de datos.

„ En tercer lugar, se pueden utilizar herramientas de software es-


pecíficas que detecten y alerten sobre las referencias circulares
en la base de datos, permitiendo a los desarrolladores abordarlos
antes de que causen problemas.

„ Tipos de datos colección


Los tipos de datos colección se refieren a los tipos de datos que
permiten almacenar múltiples valores de un mismo tipo en una sola
columna de una tabla de base de datos.

Los tipos de datos colección incluyen arrays, listas, conjuntos y mapas.

Array
Es una colección ordenada de elementos del mismo �po que se puede
acceder mediante un índice

Por ejemplo, se podría utilizar un array para almacenar una lista de


números enteros.

Figura 4.10 Definición y ejemplo de array.

119
Módulo de Base de datos

Lista
Es también una colección ordenada de elementos a los que se puede acceder mediante su
posición en la lista. Las listas pueden contener elementos de diferentes �pos.

Por ejemplo, se podría utilizar una lista para almacenar una lista de tareas pendientes que
contenga descripciones de tareas y fechas de vencimiento.

Figura 4.11 Definición y ejemplo de lista.

Conjunto
Esta es una colección no ordenada de elementos únicos. Los conjuntos se u�lizan para almacenar una
colección de elementos que no �enen un orden específico y que no se pueden repe�r.

Por ejemplo, se podría utilizar un conjunto para almacenar una lista de palabras clave que se aplican a un
artículo.

Figura 4.12 Definición y ejemplo de conjunto.

Mapa
Colección almacenada en forma de pares clave -valor, en la que cada elemento se compone de una clave
única y un valor asociado a esa clave. Los mapas se u�lizan para almacenar información que se puede buscar
rápidamente por su clave. .

Por ejemplo, se podría utilizar un mapa para almacenar información de contacto de una lista de amigos,
donde la clave es el nombre del amigo y el valor es una estructura que contiene información de contacto
como el número de teléfono y la dirección de correo electrónico.

Figura 4.13 Definición y ejemplo de mapa.

Los tipos de datos colección son útiles para representar información


compleja en una sola columna de una tabla de base de datos, lo que
puede simplificar la estructura de la base de datos y hacer que sea
más fácil de mantener y de acceder a la información.

Supongamos que queremos crear una tabla de base de datos para


almacenar información de libros en una biblioteca. Cada libro puede
tener múltiples autores y múltiples temas. En este caso, podemos
utilizar tipos de datos colección para almacenar la información de los
autores y los temas de cada libro en una sola columna. Por ejemplo,
podríamos crear la siguiente tabla:

120
UNIDAD 4 | Bases de datos objeto-relacionales

En esta tabla, la columna autores es de tipo VARCHAR(255)[], lo que


indica que se trata de un arreglo de cadenas de caracteres que repre-
sentan los autores del libro. De manera similar, la columna temas es
de tipo VARCHAR(255)[] y representa los temas del libro. Podríamos
insertar un registro en la tabla de la siguiente manera:

En este ejemplo, el libro La odisea tiene un solo autor (Homero) y dos


temas (épica y mitología). Al utilizar tipos de datos colección, podemos
almacenar toda esta información en una sola columna de la tabla, lo
que simplifica su estructura y hace que sea más fácil de manejar y
de consultar la información.

„ Declaración e inicialización de objetos


La declaración e inicialización de objetos se realizan utilizando el
lenguaje de programación empleado por la base de datos, que, nor-
malmente es un lenguaje SQL extendido para soportar objetos.

SQL extendido (SQLX) es una extensión del lenguaje SQL que permite
realizar operaciones más avanzadas y complejas en bases de datos
relacionales. A diferencia de SQL normal, SQLX proporciona funcio-
nes adicionales para realizar operaciones de programación, tales
como iteraciones y estructuras de control de flujo, lo que permite la
realización de tareas más sofisticadas en la base de datos. También
proporciona características avanzadas para manejar objetos complejos
y jerarquías de datos.

La declaración de objetos se refiere a la creación de la definición


de un objeto y sus atributos. Para declarar un objeto en una base
de datos objeto-relacional se debe definir una clase de objeto que
contenga los atributos y métodos del objeto. La definición de la cla-
se de objeto se realiza utilizando el lenguaje de programación de la
base de datos, que puede ser SQL extendido o algún otro lenguaje
compatible con la base de datos.

Por ejemplo, para declarar una clase de objeto llamada Libro en una
base de datos objeto-relacional, se puede utilizar el siguiente código
SQL extendido:

Recuerda
SQLX o SQL extendido
es una versión
mejorada y ampliada de
SQL para trabajar con
bases de datos más
complejas.

121
Módulo de Base de datos

Este código crea la definición de una clase de objeto llamada Libro,


que tiene varios atributos, como id, titulo, autor y editorial, así como
una referencia a otra clase de objeto llamada LibroList. Esta clase
de objeto se puede utilizar para crear objetos individuales en la base
de datos.

La inicialización de objetos se refiere a la creación de una instancia


específica de un objeto en la base de datos. Para inicializar un objeto
en una base de datos objeto-relacional se debe crear una instancia
de la clase de objeto y asignar valores a sus atributos. La creación de
la instancia de objeto y la asignación de valores se realizan utilizando
el lenguaje de programación de la base de datos.

Por ejemplo, para inicializar un objeto Libro con valores específicos


en una base de datos objeto-relacional, se puede utilizar el siguiente
código SQL extendido:

Este código crea una instancia de la clase de objeto Libro llamada


libro1 y asigna valores a sus atributos, como el ID, el título, el autor y
la fecha de publicación. Luego, se inserta el objeto libro1 en la tabla
libros_table de la base de datos. La declaración y la inicialización
de objetos son procesos esenciales en el uso de las bases de datos
objeto-relacionales, ya que permiten la creación y gestión de objetos
complejos en la base de datos.

La capacidad de definir objetos con atributos y métodos específicos


y la posibilidad de crear instancias de estos objetos en la base de
datos son características clave de las bases de datos objeto-rela-
cionales.

„ Uso de la sentencia SELECT


La sentencia SELECT es una de las sentencias más importantes en
cualquier base de datos, incluyendo las bases de datos objeto-rela-
cionales. La sentencia SELECT se utiliza para recuperar datos de una
o varias tablas de la base de datos y puede ser personalizada para
adaptarse a las necesidades específicas del usuario.

En el contexto de las bases de datos objeto-relacionales, la sentencia


SELECT se utiliza para recuperar objetos y sus atributos almacenados
en la base de datos.

Esto se logra mediante la selección de una o varias columnas de una


tabla de objetos. La sintaxis de la sentencia SELECT en una base de
datos objeto-relacional es similar a la sintaxis utilizada en una base

122
UNIDAD 4 | Bases de datos objeto-relacionales

de datos relacional, pero se pueden seleccionar objetos y atributos


complejos.

Por ejemplo, supongamos que tenemos una base de datos objeto-re-


lacional que contiene una tabla de objetos Libro con atributos como
id, titulo, autor, editorial y fecha_publicacion. Para recuperar todos
los libros de la tabla Libro que han sido publicados por la editorial
EDAF, se puede utilizar la siguiente sentencia SELECT:

En esta sentencia, se selecciona el objeto l de la tabla libros_table


y se establece una condición para que solo se devuelvan los libros
con el valor EDAF en el atributo editorial.

Es muy importante destacar que en las bases de datos objeto-rela-


cionales, la sentencia SELECT también se puede utilizar para recu-
perar objetos complejos, incluyendo objetos anidados y colecciones
de objetos.

Esto es posible debido a que los objetos en las bases de datos ob-
jeto-relacionales se almacenan como tipos de datos estructurados,
lo que permite seleccionar subelementos de objetos complejos uti-
lizando la sintaxis adecuada.

„ Inserción de objetos
La inserción de objetos en bases de datos objeto-relacionales hace
referencia al proceso de agregar instancias de objetos a la base de
datos.

Como ya hemos dicho, los objetos son estructuras de datos complejas


que pueden contener atributos, métodos o referencias a otros objetos,
así que la inserción de objetos permite a los usuarios almacenar y
manipular información compleja en la base de datos.

En una base de datos objeto-relacional, los objetos se definen me-


diante tipos de datos objeto, que se crean utilizando el lenguaje
de programación de la base de datos. Los tipos de datos objeto se
utilizan para definir la estructura de los objetos, incluyendo sus atri-
butos y métodos. Una vez que se ha definido un tipo de dato objeto,
se pueden crear instancias de ese objeto utilizando el constructor
de objetos.

La inserción de objetos se realiza utilizando lenguajes de consulta,


como SQL extendido, que permiten a los usuarios insertar instancias
de objetos en la base de datos. La sintaxis para insertar objetos varía
según la base de datos, pero, en general, implica la creación de una

123
Módulo de Base de datos

sentencia de inserción que incluye los valores para los atributos del
objeto.

Por ejemplo, si se tiene un objeto Libro que se ha definido utilizando


un tipo de dato objeto en una base de datos objeto-relacional, se
puede insertar una instancia de ese objeto utilizando una sentencia
de inserción como la siguiente:

Esta sentencia de inserción crea una instancia del objeto Libro con
los valores especificados para los atributos id, titulo, autor, editorial
y fecha_publicacion, y la inserta en la tabla libros_table de la base
de datos.

Es importante saber que la inserción de objetos en bases de datos


objeto-relacionales puede requerir el manejo de referencias a otros
objetos en la base de datos. Si un objeto tiene una referencia a otro
objeto, es necesario asegurarse de que ese objeto también se inserte
en la base de datos antes de insertar el objeto que hace referencia a
él. Esto puede requerir el uso de sentencias de inserción en cascada
o el uso de transacciones para garantizar la integridad de los datos.

„ Modificación y borrado de objetos


La modificación de objetos en una base de datos objeto-relacional
se refiere a la capacidad de actualizar o cambiar los valores de los
atributos de un objeto existente. Esta tarea es importante en el con-
texto de la gestión de bases de datos, ya que permite actualizar y
mantener la información de la base de datos en línea con los cambios
en el mundo real.

En una base de datos objeto-relacional, la modificación de objetos se


realiza empleando el lenguaje de programación utilizado por la base
de datos, que normalmente es un lenguaje SQL extendido para so-
portar objetos. Los objetos se pueden modificar utilizando sentencias
UPDATE y DELETE, que se usan para actualizar y eliminar registros
de la base de datos.

Para actualizar los atributos de un objeto en una base de datos


objeto-relacional, se utiliza la sentencia SQL UPDATE. La sentencia
UPDATE permite especificar los valores de los atributos que se van
a actualizar, así como los criterios de selección para identificar el
objeto que se va a actualizar.

Por ejemplo, para actualizar el título de un libro en una base de datos


objeto-relacional, se puede utilizar el siguiente código SQL:

124
UNIDAD 4 | Bases de datos objeto-relacionales

Este código actualiza el valor del atributo titulo del objeto Libro con
id = 1, y lo cambia de El Quijote a Don Quijote.

Para eliminar un objeto en una base de datos objeto-relacional, se


utiliza la sentencia SQL DELETE, que permite especificar los criterios
de selección para identificar el objeto que se va a eliminar.

Por ejemplo, para eliminar un libro con id = 1 en una base de datos


objeto-relacional, se puede utilizar el siguiente código SQL:

Este código elimina el objeto Libro con id = 1 de la tabla libros_table


de la base de datos.

Es importante tener en cuenta que la modificación de objetos en


una base de datos objeto-relacional puede tener efectos en cascada
en otras partes de la base de datos, como otras tablas o vistas que
utilizan el objeto modificado. Por tanto, es necesario considerar cui-
dadosamente las implicaciones de cualquier modificación antes de
realizarla en la base de datos.

El borrado de objetos en una base de datos objeto-relacional se


refiere al proceso de eliminar una instancia de objeto específica de
la base de datos. Este proceso implica la eliminación de los datos
relacionados con el objeto de todas las tablas y relaciones que lo
contengan. A continuación, se describen los aspectos técnicos del
borrado de objetos en una base de datos objeto-relacional:

1. Es importante mencionar que los objetos en una base de datos


objeto-relacional pueden estar relacionados con otros objetos
a través de relaciones de uno a uno, uno a muchos o muchos a
muchos.

Esto significa que, al eliminar un objeto, es posible que deban


eliminarse otros objetos relacionados para mantener la integridad
de la base de datos. Hay que tomar las mismas precauciones que
cuando hemos mencionado anteriormente los riesgos de modificar
un objeto por las consecuencias en cascada que puede provocar.

2. Hay que considerar los tipos de objetos que se pueden eliminar


en una base de datos objeto-relacional.

Los objetos pueden ser de diferentes tipos (simples, compuestos,


de colección, de referencia, de comportamiento…), por lo que la
eliminación de cada tipo de objeto puede tener diferentes impli-

125
Módulo de Base de datos

caciones en la base de datos, como por ejemplo la eliminación o


anulación de objetos relacionados provocando alguna anomalía
en comportamiento general del programa o la liberación de re-
cursos del sistema.

3. Se puede realizar utilizando sentencias SQL extendidas específicas


para la base de datos en cuestión.

Por ejemplo, en Oracle se puede utilizar la sentencia DELETE para


eliminar una instancia de objeto de una tabla. Esta sentencia se
puede combinar con otras sentencias SQL para eliminar objetos
relacionados o para definir condiciones específicas para la elimi-
nación de objetos.

Por ejemplo, para eliminar un objeto «Libro» de una tabla «Libros»


en una base de datos objeto-relacional, se puede utilizar la siguiente
sentencia SQL extendida en Oracle:

Esta sentencia elimina el objeto Libro con id = 1 de la tabla Libros.

Si existen otras tablas relacionadas con el objeto «Libro», también se


pueden utilizar sentencias SQL extendidas para eliminar los registros
relacionados en esas tablas.

126
Índice

Índice
Objetivos del módulo

UNIDAD 1 | Introducción a las bases de datos

1. Introducción a las bases de datos


▪ Ficheros (planos, indexados, acceso directo, entre otros)
▪ Bases de datos. Conceptos, usos y tipos según el modelo
de datos, la ubicación de la información
▪ Sistemas gestores de base de datos. Funciones,
componentes, tipos y objetivos
▪ Tipos de usuarios y de lenguajes de bases de datos
▪ Diccionario de datos: concepto, contenidos, tipo y uso
▪ Arquitectura ANSI/X3/SPARC: nivel interno, nivel
conceptual y nivel externo
▪ Modelos de bases de datos: jerárquico, red y relacional
▪ Bases de datos centralizadas y bases de datos
distribuidas. Introducción, ventajas e inconvenientes.
Técnicas de fragmentación: vertical, horizontal,
mixta. Técnicas de distribución de datos. Esquemas
de asignación y replicación de datos

2. Modelo entidad-relación


▪ El concepto de modelo entidad-relación
▪ Entidad: representación gráfica, atributos
y tipos de llaves
▪ Relación: representación gráfica, atributos,
grado y cardinalidad
▪ Diagramas entidad-relación
▪ El modelo entidad-relación extendido

3. Modelo relacional


▪ Terminología del modelo relacional
▪ El concepto de relación. Propiedades y relaciones
▪ Atributos y dominio de los atributos
▪ El concepto de claves y tipos de claves: claves candidatas,
claves primarias, claves foráneas, claves alternativas
▪ Reglas de integridad: integridad de entidad e integridad
referencial
▪ Traducción del modelo entidad-relación al modelo
relacional
Módulo de Base de datos

4. Normalización
▪ El concepto de normalización y la relación universal
▪ El concepto de dependencias funcionales y sus tipos
▪ Primera forma normal (1FN)
▪ Segunda forma normal (2FN)
▪ Tercera forma normal (3FN)

UNIDAD 2 | Lenguajes SQL: DML Y DDL

1. Lenguajes de la base de datos para manipular datos


▪ El lenguaje de manipulación de datos (DML)

2. E
 strategias para el control de las transacciones
y de la concurrencia
▪ Concepto de integridad
▪ Concepto de transacción. Control
▪ Propiedades de las transacciones: atomicidad, consistencia,
aislamiento y permanencia
▪ Estados de una transacción: activa, parcialmente
comprometida, quiebra, abortada y comprometida
▪ Problemas derivados de la ejecución concurrente de
transacciones
▪ Control de concurrencia: técnicas optimistas y pesimistas
▪ Recuperación ante fallos. Mecanismos para deshacer
transacciones

3. Lenguajes de la base de datos para crear la estructura


de la base de datos
▪ Tipos de lenguajes para gestionar los datos
en un SGBDR corporativo
▪ Herramientas gráficas proporcionadas por el sistema
gestor para la implementación de la base de datos
▪ El lenguaje de definición de datos (DDL)
▪ Extensiones del lenguaje

UNIDAD 3 | Lenguajes SQL: DCL y extensión


procedimental

1. Gestión de usuarios


▪ Creación, modificación y eliminación de usuarios
▪ Administración de perfiles, privilegios y roles
▪ Asignación y desasignación de privilegios a usuarios
sobre objetos de la base de datos
▪ Definición de roles. Asignación y desasignación
de roles usuarios
▪ Normativa legal vigente sobre protección de datos
Índice

2. Programación en bases de datos


▪ Entornos de desarrollo en torno a la base de datos
▪ Tipo de guiones: guiones simples, procedimientos
y funciones
▪ La sintaxis del lenguaje de programación
▪ Procedimientos y funciones
▪ Control de errores
▪ Cursores y transacciones
▪ Facilidades para el desarrollo de entornos gráficos
▪ Disparadores

UNIDAD 4 | Bases de datos objeto-relacionales

1. Uso de bases de datos objeto-relacionales


▪ Características de las bases de datos objeto-relacionales
▪ Tipos de datos objeto
▪ Definición de tipo de objeto
▪ Herencia
▪ Identificadores, referencias
▪ Tipos de datos colección
▪ Declaración e inicialización de objetos
▪ Uso de la sentencia SELECT
▪ Inserción de objetos
▪ Modificación y borrado de objetos

También podría gustarte