Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Superior en Desarrollo de
Aplicaciones Web y Desarrollo
de Aplicaciones Multiplataforma
Bases de datos
Quedan rigurosamente prohibidas, sin la autorización escrita
de los titulares de «Copyright», bajo las sanciones establecidas
en las leyes, la reproducción total o parcial de esta obra por
cualquier medio o procedimiento, comprendidos la reprografía
y el tratamiento informático, y la distribución de ejemplares de
ella mediante alquiler o préstamo públicos. Diríjase a CEDRO
(Centro Español de Derechos Reprográficos, http://www.cedro.org)
si necesita fotocopiar o escanear algún fragmento de esta obra.
INICIATIVA Y COORDINACIÓN
IFP Innovación en Formación Profesional
Supervisión editorial y metodológica:
Departamento de Producto de Planeta Formación
Supervisión técnica y pedagógica:
Departamento de Enseñanza de IFP Innovación en Formación Profesional
Conoceremos también todos los aspectos relacionados con las bases de datos
relacionales, actualmente el sistema más utilizado para la representación de los
datos. Veremos, además, cómo se relacionan las diferentes tablas que conforman
una base de datos y cómo deben utilizarse los lenguajes de descripción de datos
para poder crear la estructura de la base de datos.
3
uNIDAD FORMATIVA 1
• Almacenamiento de la información
1. ALMACENAMIENTO DE LA INFORMACIÓN
1.1 Ficheros
Los archivos o ficheros de datos son colecciones de registros con una temática
común que están organizados para un propósito específico. Según cómo se or-
ganizan dichos registros de datos, y cómo se realiza el posterior acceso a ellos, los
ficheros pueden recibir distintos nombres:
●● Ficheros relativos. Aquellos en los que la propia clave asignada a cada registro
mantiene una estrecha relación con la localización del mismo. Dentro de este
grupo se encuentran los de acceso directo, por ejemplo, aquellos que alma-
cenan los registros de datos en posiciones específicas de memoria y utilizan los
números de dichas direcciones de memoria como clave inequívoca para acce-
der a ellos.
Podríamos imaginar los ficheros planos, o secuenciales, como una pila de fichas
de registro, los ficheros indexados como archivos con clasificadores y los ficheros
relativos, o de acceso directo, como documentos con un identificador único co-
rrespondiente a su posición, como podría ser el número de página (Figura 1.1).
7
Bases de datos – Unidad Formativa 1
Figura 1.1
Símil de los tipos de archivo en
función de su organización.
Para saber más Las bases de datos son colecciones de ficheros de datos relacionados entre sí a
los que pueden acceder varios usuarios y aplicaciones a la vez. Los conjuntos de
Antes de aparecer programas que acceden y gestionan esos datos son los llamados sistemas ges-
los SGBD (Sistemas
tores de bases de datos (SGBD). Estos conceptos surgen principalmente con el
de Gestión de Bases
de Datos) en la objetivo de poder modificar las estructuras de datos de los ficheros sin tener que
década de 1970, toda realizar cambios en los programas que utilizan dichos datos. Para independizar los
la información se programas o aplicaciones de la estructura de datos con la que trabajan se utilizan
gestionaba mediante representaciones a través de distintos niveles de abstracción: nivel físico, nivel
los sistemas de ficheros lógico o conceptual, y nivel externo o de vistas (Figura 1.2).
soportados sobre un
sistema operativo.
Figura 1.2
Niveles de abstracción de la
arquitectura ANSI.
8
Almacenamiento de la información
Figura 1.3
La tabla Ver (en el centro) es una
conjunción de columnas que
provienen de diferentes tablas.
Los modelos de datos son las herramientas conceptuales que sirven para descri-
bir 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:
9
Bases de datos – Unidad Formativa 1
Recuerda ●● 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 ele-
Los SGBD (Sistemas de mentos. Funcionan al más bajo nivel para representar la manera en la que se
Gestión de Bases de
almacenan los datos en el sistema.
Datos) o DBMS (Data
Base Management
Systems) son el conjunto
de programas que 1.3 Sistemas gestores de bases de datos
acceden a las bases de
datos y las gestionan. Las principales funciones de los sistemas gestores de bases de datos (SGBD),
Gracias a ellos, los datos también llamados DBMS (Data Base Management Systems), son definir, construir,
se pueden estructurar, manipular y controlar bases de datos (Figura 1.4).
organizar y manipular
de forma independiente
con respecto a los
programas que los
gestionan.
Figura 1.4
Estructura de un SGBD.
Para proporcionar estos servicios, los SGBD constan de varios componentes. Vea-
mos a continuación cuáles son:
●● Para definir las características de una base de datos y trabajar con sus datos, se
utilizan los lenguajes de los SGBD. El lenguaje de definición de datos (LDD o
DDL) lo emplean los diseñadores y administradores de la base de datos para
especificar las características propias de ella. El lenguaje de manipulación de
10
Almacenamiento de la información
datos (LMD o DML) es el que emplean todos los usuarios para consultar y ac-
tualizar los datos de la base de datos. En este lenguaje, existen los LMD proce-
dimentales, 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 obtenerlos. Un ejem-
plo de DDL sería la creación de una tabla nueva en nuestra base de datos, que
normalmente realiza el administrador:
Por otro lado, una consulta para obtener un dato concreto sería:
Comerciales Libres
• Oracle • PostgreSQL Figura 1.5
• Microsoft SQL Server • MySQL Los SGBD comerciales y libres
• IM DB2 • FireBird
• Microsoft Access • SQLite que gozan hoy en día de mayor
• RazorSQL popularidad.
11
Bases de datos – Unidad Formativa 1
En cuanto a Microsoft Access, más que un SGDB es una interfaz que permite acceder
Recuerda a las bases de datos creadas desde el propio programa de Microsoft. Si bien es cierto
Se entiende por que es posible acceder a otras bases de datos mediante conexiones ODBC (Open
software libre todo DataBase Connectivity) o Conexión Abierta de Base de Datos, la verdad es que
aquel que da plena Microsoft Access tiene grandes limitaciones a la hora del tratamiento de datos.
libertad a los usuarios
para ejecutarlo,
Por lo que respecta a SQLite, se trata de un SGDB de bajo consumo que permite
copiarlo, distribuirlo
y modificarlo. Aunque obtener datos con menos recursos. Por ello, es el que está siendo más utilizado en
los sistemas de el desarrollo de aplicaciones móviles, donde es necesario realizar procesos que no
software libre suelen consuman muchos recursos.
ser gratuitos, no es
obligatorio que sea así.
1.5 Bases de datos centralizadas y bases de datos distribuidas.
Fragmentación
Según todos los componentes de una base de datos se hallen ubicados en una
misma máquina o bien distribuidos en distintos ordenadores de una red, las bases
de datos se clasifican en centralizadas o distribuidas. Antiguamente, la mayoría
de los sistemas de información era de carácter centralizado; sin embargo, en la
actualidad, debido al aumento de la capacidad de las redes de comunicación y a
la globalización de las empresas, resulta cada vez más interesante tener los datos
repartidos entre los distintos sitios desde donde se gestionan (Figura 1.6).
Figura 1.6
Ejemplo de base de datos
distribuida.
12
Almacenamiento de la información
Figura 1.7
Ejemplo de representación
gráfica de la fragmentación de
una tabla.
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.
13
Bases de datos – Unidad Formativa 1
Resumen
La información es almacenada, en los ordenadores, en ficheros que podemos dividir según su forma-
to. Cada uno de estos formatos tiene un programa asociado que es el encargado de ejecutar y realizar
la lectura de los ficheros.
A diferencia de los sistemas de ficheros que están divididos por unidades de información y están re-
presentados por diferentes formatos, las bases de datos están constituidas por niveles de abstracción.
En una base de datos la información almacenada está relacionada entre sí para facilitar su localiza-
ción. Dicha información está representada conceptualmente en forma de tabla, en la que las filas
representan los registros almacenados y las columnas cada uno de los atributos del registro. Si de-
seamos almacenar los usuarios de una web en una tabla, cada persona será un registro, es decir una
fila, mientras que sus datos, como el correo, el nombre, la contraseña, etc., se almacenarán en cada
una de las columnas.
Los SGDB, son los programas que se comunican con las bases de datos y proporcionan una interface
para el usuario y el administrador con el fin de permitirles la administración de las bases de datos de
una manera sencilla y visual, y sin la necesidad de tener conocimientos de programación para llevar
a cabo las consultas.
Las bases de datos distribuidas están basadas en la separación de los datos en diferentes servidores
con el fin de proporcionar un acceso simultáneo a los diferentes datos sin saturar un mismo canal.
Debido a sus múltiples ventajas con respecto a las bases de datos centralizadas, cada vez son más
utilizadas en la actualidad.
14
Ejercicios de autocomprobación
Ejercicios de autocomprobación
1. Los archivos o ficheros de datos son colecciones de registros con una temática
común que están organizados para un propósito específico.
2. Las bases de datos son colecciones de ficheros de datos que no están relacio-
nados entre sí a los que pueden acceder varios usuarios y aplicaciones a la vez.
3. Los modelos de datos son las herramientas conceptuales que sirven para des-
cribir de forma clara y definida la estructura de una base de datos (los datos, las
relaciones y las restricciones que existen entre ellos).
4. Los 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.
6. Por lo que respecta a SQLite, se trata de un SGDB de alto consumo que permite
obtener datos con menos recursos.
7. 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.
15
Bases de datos
10. Los modelos lógicos basados en objetos se utilizan para describir datos en el
nivel ______________ y ______________ . Los más conocidos son el modelo
entidad-relación y el orientado ______________ .
16
Base de datos relacionales
A lo largo de esta unidad estudiaremos los conceptos básicos de una base de da-
tos relacional. Aprenderemos en qué consiste el modelo relacional y conoceremos
su terminología más frecuente.
La ventaja del modelo relacional es que los datos se almacenan, al menos concep-
tualmente, de una manera que a los usuarios les resulta más fácil de entender y uti-
lizar. Los datos se almacenan como tablas, lo que permite establecer interconexio-
nes (relaciones) entre los datos de las distintas tablas de una forma muy versátil
y sencilla y, a través de dichas conexiones, relacionar los datos de ambas tablas,
motivo por el cual se le conoce con el nombre de modelo relacional. Durante su
diseño, una base de datos relacional pasa por un proceso llamado normalización
de una base de datos.
●● Restricciones de integridad. Son las condiciones que los datos deben cumplir
para reflejar correctamente la realidad deseada.
En la figura 2.1 puede verse claramente la estructura que sigue la base de datos
que representa, es decir, las relaciones que existen entre las diferentes tablas,
mediante sus correspondientes flechas, así como las llaves que indican qué atri-
17
Bases de datos – Unidad Formativa 1
butos son claves primarias de la tabla. Si nos fijamos, veremos que al lado de
cada atributo está el tipo de dato que almacena (enteros, caracteres, boleanos,
fechas, etc.), lo que nos ayudará a la hora de saber qué datos debemos introducir
en la base de datos.
Figura 2.1
Ejemplo de modelo de datos.
●● Conceptuales. Son los que describen las estructuras de los datos y sus restriccio-
nes de integridad. Se utilizan en la etapa de análisis, y representan los elementos
que intervienen y sus relaciones.
●● Físicos. Son las estructuras de datos en bajo nivel, implementadas dentro del
propio manejador.
18
Base de datos relacionales
Los términos relación y tupla han caído en desuso. Así pues, utilizaremos para ellos
la terminología más común y denominaremos a la relación tabla (table) 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 (Figura 2.2).
Uno de los logros del modelo relacional radica en la simplicidad del diseño básico
de la tabla. Veamos cuáles son sus características: Para saber más
El número de filas de
●● A cada tabla se le da un nombre. No pueden existir dos tablas con el mismo una tabla se denomina
nombre. Cada tabla es, a su vez, un conjunto de filas y columnas. cardinalidad de la tabla;
el número de columnas
●● La información en la base de datos son datos explícitos. No existen apuntadores es el grado de la tabla;
o ligas entre tablas. y el conjunto de valores
válidos que puede tener
●● Cada fila de la tabla debe ser única, es decir, no pueden existir dos filas con datos cada atributo se llama
idénticos para todos los atributos. La razón es que cada fila representa un hecho dominio.
diferenciado, y la presencia de dos filas idénticas sería redundante.
19
Bases de datos – Unidad Formativa 1
●● Cada entrada de una tabla debe tener un sólo valor (son atómicos); no se admi-
ten valores múltiples. En definitiva, la intersección determinada de fila y columna
tiene un solo valor, nunca un conjunto de valores.
Dentro del modelo relacional existe una relación entre las diferentes tablas que
ayudan a evitar los datos redundantes. Esta relación vincula la clave primaria de
una tabla, que proporciona a un identificador único para cada fila, con una clave
ajena o foránea de la otra tabla (Figura 2.3).
Figura 2.3
Ejemplo de una tabla
y sus vinculaciones.
20
Base de datos relacionales
TABLA DIRECTOR
DNI_director Apellido Nombre
00000000 A Sánchez Pablo
Figura 2.4
00000001 B Martínez Sergio
Tabla director.
TABLA EMPLEADOS
DNI empleado Apellido Nombre Director
46872145 A Pérez Álex 00000000 A
45212201 B Aguilar José 00000000 A
Figura 2.5
34342142 C García Fernando 00000001 B Tabla empleados.
Los tipos de datos que puede contener una columna o atributo pueden clasificar-
se en tres grandes grupos:
●● Fecha. Los tipos de datos fecha sólo admiten fechas y horas. Cuando se almace-
nan las fechas no se comprueba de una manera estricta si una fecha es válida o
no, sino que el mes esté comprendido entre 0 y 12, y el día entre 0 y 31.
21
Bases de datos – Unidad Formativa 1
Figura 2.6
Tipos de datos más usuales.
22
Base de datos relacionales
Figura 2.7
Tablas del juego de carácteres
ASCII de 8 bits.
●● DNI Recuerda
●● Nombre
Sólo se podrán
●● Apellido
almacenar
correctamente en
Cualquiera de estas tres claves candidatas podría identificar a una persona. Ahora la base de datos los
bien, podemos suponer que pueden existir dos personas con el mismo nombre y caracteres admitidos por
apellido; en cambio, es imposible que existan dos personas con el mismo DNI. Por el juego de caracteres
ello, en este caso lo más conveniente sería definir el DNI como la clave primaria definidos en cada base
de la tabla. de datos.
23
Bases de datos – Unidad Formativa 1
La clave primaria es aquella clave candidata que el usuario elegirá, por consi-
deraciones ajenas al modelo relacional, para identificar las filas de la tabla; lo que
la convierte en un identificador que será siempre único para cada fila. El modelo
relacional no incluye el concepto de elegir una clave como clave primaria cuando
hay varias claves candidatas. En ocasiones, el usuario decide crear una clave prima-
ria numérica, de manera aleatoria, cuyo único requisito es el de guardar un valor
numérico único para cada fila de forma totalmente independiente a los datos de
negocio y que, generalmente, no tiene significado por sí misma. Este tipo de cla-
ves primarias también se conocen como claves subrogadas (surrogate key).
Figura 2.9
Distintos tipos de claves prima-
rias para una tabla.
24
Base de datos relacionales
2.7 Índices
El índice de una base de datos mejora la velocidad de las consultas, lo que permite
un rápido acceso a las filas de una tabla en una base de datos. Al aumentar drásti-
camente la velocidad de acceso, el índice de una base de datos se suele utilizar en
aquellos atributos sobre los que se realizan búsquedas frecuentes. El funcionamien-
to del índice es similar al de un libro: se guarda el elemento que se desea indexar y Recuerda
su posición en la base de datos (que, en el caso del libro, correspondería al número Sólo puede haber una
de páginas). Los índices pueden crearse con una o más columnas y constituyen la clave primaria por
base para poder realizar búsquedas rápidas al azar o un acceso ordenado a regis- tabla, pero ningún
tros, evitando así una búsqueda secuencial que podría ser muy lenta en el caso de atributo de dicha clave
puede contener valores
que se almacene mucha información. Los índices, generalmente, no se consideran
vacíos (Null).
parte de la base de datos, ya que son un complemento añadido (Figura 2.11).
Figura 2.11
Utilización de índices en las
consultas para ser más efectivas.
Una clave alternativa es aquella clave candidata que no ha sido seleccionada como
clave primaria, pero que también puede identificar de forma única una fila dentro
de una tabla. Las claves alternativas son las primeras candidatas para convertirse
en índices. Veamos a continuación cuáles son las ventajas e inconvenientes de
trabajar con claves alternativas:
25
Bases de datos – Unidad Formativa 1
Recuerda ●● Ventajas:
Tanto los índices como las claves primarias pueden definirse con una característica
para evitar que dos valores puedan ser duplicados en una misma tabla.
NULL es un valor muy importante en el modelo relacional, puesto que permite tra-
bajar con datos desconocidos o que carecen de valor. Definido por el informático
inglés Edgar Frank Codd, NULL indica un valor asignado a un atributo que no contie-
ne ninguno de los valores del dominio de dicho atributo. Sirve para reprensentar, en
los sistemas de gestión relacionales de base de datos (DBMS Database Management
System), la información “desconocida” o “no aplicable”. Para comprenderlo mejor, vea-
mos un ejemplo. Tenemos una tabla de vehículos en la que podemos guardar tanto
motocicletas como automóviles.
Un atributo, o campo de la tabla, indica a qué lado está el volante (para distinguir
vehículos con el volante a la izquierda de los que lo tienen a la derecha). Dicho atri-
buto no tiene sentido en el caso de tratarse de una motocicleta; en este caso, el
atributo para entidades de tipo motocicleta será NULL. El dominio de este atributo
es derecha o izquierda, de modo que si queremos asignar un valor del dominio,
no tenemos otra opción que asignarle un NULL. El valor NULL nos indica que este
atributo no tiene ninguno de los valores posibles del dominio (derecha o izquier-
da). De esta manera el valor NULL amplía la información. Es importante señalar que
no pueden realizarse operaciones aritméticas con el valor NULL (5+null), pero sí, en
cambio, es posible realizar operaciones lógicas. Esta clase de operaciones sólo dan
26
Base de datos relacionales
como resultado verdadero o falso; sin embargo, cuando interviene un valor nulo, se Para saber más
generan operaciones con resultados que no pueden ser determinados, creando de
esta manera el sistema de Lógica ternaria, en el que a los valores verdadero o falso se Existe una gran
controversia con
les añade el valor desconocido (Figura 2.12).
respecto a la lógica
ternaria. Algunos
expertos consideran que
la existencia de un valor
“desconocido” carece
de la lógica necesaria
para formar parte de
operaciones lógicas.
Figura 2.12
Tablas de resultados tras operar
con el valor NULL.
Figura 2.13
Las claves foráneas relacionan
una tabla referenciada con una
tabla referida.
27
Bases de datos – Unidad Formativa 1
A continuación, veremos cómo se relacionan dos tablas mediante las claves foráneas.
Tenemos, por un lado, una tabla con un listado de alumnos identificados por el DNI
(columna que reconoce a cada alumno de manera única) (Figura 2.14) y, por otro lado,
una tabla con una serie de notas identificadas por el DNI del alumno (Figura 2.15).
TABLA DE ALUMNOS
DNI_ alumno Apellido Nombre
TABLA DE NOTAS
Codigo_asignatura Asignatura DNI_ alumno Nota
La tabla referida y la tabla referenciada pueden ser la misma, es decir, la clave foránea
se referencia en la propia tabla. Una tabla puede tener múltiples claves foráneas y
cada una puede estar referenciada en diferentes tablas.
El tipo de relación entre tablas dependerá de cómo se definan las columnas rela-
cionadas:
●● Uno-a-uno. Una fila en tabla padre no tiene más de una fila vinculada en tabla
hija (y viceversa). Por ejemplo, si tenemos una tabla con directores y otra con
sucursales, cada director sólo podrá ser responsable de una sucursal y cada su-
cursal sólo podrá tener un director.
28
Base de datos relacionales
●● Uno-a-muchos. Se trata del tipo de relación más común entre tablas. Una fila Recuerda
en la tabla padre tiene muchas filas vinculadas en la tabla hija; sin embargo, una
fila en la tabla hija tiene una única fila vinculada en la tabla padre. Por ejemplo, Las claves ajenas
colaboran para
si tenemos una tabla de empresas y otra tabla de empleados, cada empleado
garantizar la integridad
pertenecerá a una única empresa; sin embargo cada empresa estará relacionada referencial; es decir,
con varios empleados. aseguran que no existan
en las claves foráneas
●● Muchos-a-muchos. Una fila en la tabla padre tiene muchas filas vinculadas en valores que no estén en
tabla hija (y viceversa). Esta relación puede crearse definiendo una tercera tabla, la clave primaria, una
llamada tabla de unión, cuya clave primaria consiste en las claves foráneas de propiedad deseable en
ambas tablas padre e hija. Por ejemplo, un cliente que compra en un centro las bases de datos.
comercial. En ese caso, cada tipo de producto podrá ser comprado por varios
clientes, y cada cliente podrá comprar varios productos.
2.10 Vistas
Una vista (view) puede definirse como una tabla lógica que permite acceder a
los datos de otras tablas. Las tablas sobre las cuales se crea se denominan tablas
base. El que una vista sea una tabla lógica significa que no contiene datos en sí
misma, por lo que puede ser entendida como una tabla virtual que se nutre de
datos de una o varias tablas. Una vez definida, puede ser utilizada en cualquier
lugar (incluso en la definición de otra vista). Al igual que sucede con una tabla,
pueden insertarse, modificarse, borrarse y seleccionarse los datos en una vista; y en
algunos casos existen restricciones en la actualización de sus datos (Figura 2.16).
Figura 2.16
Composición de una vista
a partir de las columnas de
diferentes tablas.
29
Bases de datos – Unidad Formativa 1
Recuerda En la figura 2.16 podemos ver cómo a partir de diferentes columnas de dos tablas
podemos crear una nueva vista que reúna todas estas columnas en una nueva
Las vistas tienen la tabla.
misma estructura
que una tabla: filas y
columnas. Las vistas se utilizan con el fin de:
●● Ocultar la complejidad de los datos; por ejemplo, puede utilizarse para actuar
como una única tabla, mientras que varias tablas se utilizan para construir el
resultado.
●● Privilegios de sistema. Permiten crear una acción particular dentro del siste-
ma o una acción particular sobre un tipo determinado de objeto (como nuevas
tablas) y adjudicarles propiedades, niveles de seguridad, etc. La mayoría están
disponibles sólo para administradores y desarrolladores de aplicaciones.
30
Base de datos relacionales
Figura 2.17
Los usuarios a los que se asigna
un rol comparten todos los
privilegios que alberga éste.
●● Asignado a roles (grupo de privilegios), que después pueden ser asignados a uno
o más usuarios.
31
Bases de datos – Unidad Formativa 1
●● CREATE. Crea una tabla en la que definiremos los atributos que tendrá así como
el formato y las características de clave primaria y foránea.
●● TRUNCATE. Vacía todo el contenido de una tabla. Esta sentencia parece una
DML (Data Manipulation Language) o Lenguaje de Manipulación de Datos; pero
a diferencia de éste, TRUNCATE borra la tabla y la vuelve a crear sin ejecutar nin-
guna transacción.
Los tipos de objetos a los que pueden aplicarse dichas sentencias dependen
del gestor de base de datos que esté siendo utilizado. La mayoría permite su
aplicación en tablas, vistas, índices, usuarios, sinónimos, procedimientos alma-
cenados (stored procedure), consultas almacenadas (triggers) y bases de datos
(Figura 2.18).
32
Base de datos relacionales
Figura 2.18
El lenguaje DDL permite mo-
dificar la estructura de la base
de datos.
33
Bases de datos – Unidad Formativa 1
●● REVOKE. Permite eliminar o revocar los privilegios que previamente se han con-
cedido con GRANT.
REVOKE nombre_del_privilegio
ON objeto
FROM { usuario |PUBLIC |role_name}
●● Objeto. Tipo de elemento al que se le aplican los derechos; pueden ser tablas,
vistas, procedimientos.
●● Rol. Los usuarios pueden agruparse en grupos llamados roles, a los que se les
puede aplicar permisos a todos ellos al mismo tiempo.
En definitiva, las sentencias del Lenguaje de Control de Datos sirven para otorgar
permisos o quitarlos, ya sea a usuarios específicos o a un rol creado dentro de la
base de datos.
34
Base de datos relacionales
Resumen
Las bases de datos relacionales se caracterizan por la simplicidad de su diseño mediante la represen-
tación de los datos en tablas relacionadas entre ellas. Estas relaciones proporcionan al usuario pistas
para poder contextualizar los datos en la vida real en vez de ser mera información digitalizada. En las
tablas pueden existir claves primarias que identifican de manera inequívoca cada uno de los registros
almacenados. Esto es especialmente útil para obtener datos específicos, ya que al ser identificados
con un elemento único favorece las operaciones de búsqueda y ordenación por parte del servidor.
Las claves ajenas son aquellas enlazadas con claves primarias de otras tablas; de esta manera se con-
sigue establecer las relaciones entre las tablas.
Las tablas que no disponen de claves primarias tienen la posibilidad de optimizar las búsquedas de
registros mediante la incorporación de índices en los registros. Los índices suelen ser asignados de
manera automática y correlativa por el sistema, al insertar un nuevo registro, lo que evita que existan
índices repetidos.
Las vistas son estructuras conceptuales creadas por los usuarios para reunir en una sola tabla los
datos de diferentes objetos con el fin de obtener la información que se ajuste a sus necesidades. De
esta manera los usuarios pueden crear tablas personalizadas en las que podrán aplicar consultas tal
y como lo harían con una tabla normal.
El valor NULL es un concepto utilizado en las bases de datos para representar aquellos registros en los
que no se ha introducido ningún valor. No es considerado un valor real, y a pesar de que no pueden
realizarse operaciones aritméticas sobre el valor NULL, los sistemas de bases de datos y la programa-
ción en general permite realizar operaciones lógicas y de comparación con este valor, siguiendo la
denominada lógica ternaria.
El acceso a una base de datos está restringido a los usuarios registrados en ella, y cada usuario puede te-
ner diferentes privilegios sobre los objetos, sean tablas o vistas. De esta manera pueden definirse usua-
rios que sólo podrán realizar consultas, o usuarios que pueden modificar datos. Los roles son definidos
para agrupar diferentes usuarios con los mismos permisos. El Lenguaje de Descripción de Datos (DDL)
engloba todas aquellas consultas realizadas a la base de datos por aquellos usuarios que tienen como
objetivo definir o modificar las estructuras de los objetos de la base de datos. Dentro de esta categoría
se hallan las instrucciones para crear tablas y vistas, definir las columnas, vaciar el contenido de una ta-
bla, modificar nombres y parámetros, etc. En cambio, el Lenguaje de Control de Datos (DCL) se encarga
de crear y modificar los permisos de los usuarios sobre los objetos de la base de datos.
35
Bases de datos – Unidad Formativa 1
Ejercicios de autocomprobación
1. Los modelos conceptuales son los que describen las estructuras de los datos y
sus restricciones de integridad. Se utilizan en la etapa de análisis, y representan
los elementos que intervienen y sus relaciones.
2. Los tipos de datos fecha sólo admiten fechas y horas. Cuando se almacenan las
fechas no se comprueba de una manera estricta si una fecha es válida o no, sino
que el mes esté comprendido entre 0 y 12, y el día entre 0 y 31.
3. Los tipos de datos cadena sólo pueden dividirse en alfanuméricos como los
ficheros llamados BLOB.
4. ASCII es un código de siete bits, lo que significa que utiliza cadenas de bits con
siete dígitos binarios (que van de 0 a 127 en base decimal) para representar in-
formación de caracteres.
5. Se denomina clave candidata (candidate key) al conjunto vacío de atributos que
identifican cada fila de una tabla.
6. El modelo relacional incluye el concepto de elegir una clave como clave prima-
ria cuando hay varias claves candidatas.
36
Ejercicios de autocomprobación
37
Bases de datos – Unidad Formativa 1
Unidad 1
1. V
2. F. Las bases de datos son colecciones de ficheros de datos relacionados entre sí
a los que pueden acceder varios usuarios y aplicaciones a la vez.
3. F. Los modelos de datos son las herramientas conceptuales que sirven para des-
cribir de forma abstracta la estructura de una base de datos (los datos, las rela-
ciones y las restricciones que existen entre ellos).
4. V
5. V
6. F. Por lo que respecta a SQLite, se trata de un SGDB de bajo consumo que permi-
te obtener datos con menos recursos.
7. V
8. disco, tablas, atributo
9. máximo, instalar, administrar, usuarios.
10. conceptual, externo, objetos.
Unidad 2
1. V
2. V
3. F. Los tipos de datos cadena pueden dividirse en alfanuméricos o en aquellos
que almacenan datos binarios, como los ficheros llamados BLOB.
4. V
5. F. Se denomina clave candidata (candidate key) al conjunto no vacío de atributos
que identifican cada fila de una tabla.
6. F. El modelo relacional no incluye el concepto de elegir una clave como clave
primaria cuando hay varias claves candidatas.
7. V
8. atributo, dominio, atributo.
9. únicas, tabla
10. usuario, ejecutar, objetos.
38
Índice
Índice
MÓDULO: BASES DE DATOS
UNIDAD FORMATIVA 1
1. Almacenamiento de la información................................................................................................................................ 7
1.1 Ficheros .................................................................................................................................................................................................. 7
1.2 Bases de datos ................................................................................................................................................................................... 8
1.3 Sistemas gestores de bases de datos .................................................................................................................................. 10
1.4 Sistemas gestores de bases de datos comerciales y libres .................................................................................... 11
1.5 Bases de datos centralizadas y bases de datos distribuidas. Fragmentación ............................................. 12
Resumen ........................................................................................................................................................................................................ 14
Ejercicios de autocomprobación .................................................................................................................................................... 15
39
uNIDAD FORMATIVA 2
• Realización de consultas
• Tratamiento de dato
Bases de datos – Unidad Formativa 2
3. REALIZACIÓN DE CONSULTAS
Una vez hemos aprendido cómo se estructuran las bases de datos, analizaremos una
parte fundamental del módulo: la realización de consultas. Las consultas son el
modo que tenemos de obtener o insertar la información en las bases de datos para
poder utilizarla posteriormente. A lo largo de este capítulo, estudiaremos los diferen-
tes tipos de consultas que existen, y conoceremos cuál es su funcionalidad y cuál
su estructura. A pesar de que las diferentes bases de datos pueden tener algunas
diferencias en la construcción de las consultas, la mayoría de ellas sigue unas pautas
determinadas y se rige por las mismas normas con el fin de conseguir una mayor
estandarización entre ellas.
42
Realización de consultas
Dichas herramientas también nos permiten realizar consultas con el fin de obtener
los datos almacenados de una manera más sencilla, pues basta con hacer clic en la
parte visual para seleccionar el campo que quieres consultar. El SGBD nos avisará
si en la construcción de la consulta hay algún error y, al ejecutarla, se mostrará el
resultado en una ventana aparte (Figura 3.1).
Figura 3.1
Estructura de base de datos en
un SGBD.
43
Bases de datos – Unidad Formativa 2
Es recomendable probar los diferentes SGBD que existen en el mercado para fa-
miliarizarnos con ellos. Durante el curso, utilizaremos el Workbench de MySQL, un
software libre de gestión de bases de datos disponible para todas las plataformas.
Se puede descargar desde la dirección: http://www.mysql.com/.
La sentencia SELECT (seleccionar) es, sin duda, la más utilizada en una base de
datos. Su objetivo es obtener la información que precisemos de la base de datos,
y su complejidad dependerá de la consulta que realicemos.
Recuerda En la misma consulta podremos obtener datos de una o más tablas, así como
ordenarlos o discriminarlos según nuestros criterios. A lo largo de este capítulo
Para seleccionar todas conoceremos la mayoría de configuraciones que permite esta sentencia:
las columnas en una
consulta SELECT, es
necesario utilizar el Veamos a continuación la sintaxis básica de una consulta SELECT (Figura 3.2).
símbolo asterisco (*). La
consulta SELECT * FROM ●● SELECT (seleccionar). Definiremos las columnas de las que queremos obtener
[tabla] devolverá todos su valor. En la misma consulta, seleccionaremos varias columnas de diferentes
los valores que existen tablas, siempre y cuando especifiquemos las relaciones entre tabla y columna,
en la tabla. ya que las columnas de diferentes tablas pueden tener el mismo nombre.
SELECT [nombre_columna]
FROM [tabla]
WHERE [condicion]
Figura 3.2
Estructura de una ORDER BY [Asc/Desc]
sentencia SELECT.
●● FROM (desde). Numeraremos las tablas a las que queramos tener acceso. Po-
dremos elegir tantas tablas como queramos, aunque es recomendable acceder
sólo a aquellas tablas que contengan los datos que necesitamos, de lo contrario
cargaremos el sistema de forma innecesaria.
●● WHERE (donde). Definiremos las condiciones que tienen que cumplir los datos
que vayamos a obtener. De esta manera, filtraremos los resultados según los cri-
terios que nos interesen. Esta cláusula es opcional y, en caso de no ponerla en la
consulta, nos devolverá todas las filas de la columna que hayamos seleccionado
en el SELECT.
44
Realización de consultas
●● ORDER BY (ordenar por). La consulta SELECT nos permite, además, ordenar al-
fabética o numéricamente los resultados. Un ejemplo sería la ordenación por
apellido de una lista de alumnos. Veamos a continuación algunos ejemplos de
esta sentencia utilizando la tabla de la figura 3.3 como muestra.
1. Seleccionaremos todas las personas de las que tenemos constancia y las orde-
naremos según su apellido:
2. Seleccionaremos todas las personas de las que tenemos constancia que viven
en la ciudad de Barcelona:
45
Bases de datos – Unidad Formativa 2
La mayoría de bases de datos nos permite insertar cálculos matemáticos en las con-
sultas para obtener los datos de una operación entre dos o más campos. Imaginé-
monos que una hoja de cálculo es una base de datos. Para poder obtener el valor
deseado realizaremos una operación aritmética sobre dos o más campos. Imagine-
mos que deseamos obtener una consulta en la que, además de la información de la
base de datos, deseamos crear una nueva columna con el resultado de multiplicar
dos valores. La sentencia que produciría como resultado la figura 3.6 sería:
Figura 3.6
Ejemplo de consulta calculada.
3.3.2 Sinónimos
Al realizar una consulta con varios resultados, la cláusula ORDER BY nos dará la posibi-
lidad de ordenar dicho resultado según el criterio que queramos aplicarle. Deberemos
46
Realización de consultas
1. Seleccionaremos todas las personas de las que tenemos constancia que viven
en las ciudades que empiezan por la letra M y las ordenaremos por el apellido:
47
Bases de datos – Unidad Formativa 2
3.5 Operadores
En las consultas podremos utilizar operadores lógicos para filtrar los resultados de
las búsquedas. Se colocarán junto a la cláusula WHERE y servirán para realizar ope-
raciones entre dos columnas o entre una columna y un valor dado. Estos opera-
dores son comunes a todos los sistemas de bases de datos gracias a la supervisión
del Instituto Nacional Estadounidense de Estándares (ANSI, American National
Standards Institute) a la hora de crear un estándar. Pese a ello, algunos SGBD uti-
lizan ciertas peculiaridades para construir consultas, como pueden ser, saltos de
línea o la incorporación del “;” al final de cada sentencia.
Utilizaremos los operadores de comparación para filtrar los resultados que sean
mayores, menores o iguales a un valor dado. La nomenclatura que emplearemos
será la que podemos ver en la figura 3.10.
Podemos utilizar, además, patrones con la cláusula LIKE para realizar comparacio-
nes con porciones de textos (Figura 3.12).
48
Realización de consultas
Se utilizan siempre para realizar una operación lógica entre dos operandos de
comparación: y su resultado será boleano. Hay tres tipos de operadores lógicos:
AND, OR y negación.
●● AND (y). Devuelve el valor lógico verdadero en caso de que los dos operandos
sean verdadero; en caso contrario, devolverá falso.
●● OR (o). Devuelve el valor lógico verdadero en caso de que uno o dos de los operandos
sean verdaderos; en caso que los dos sean falsos, el resultado será también falso.
3.5.3 La precedencia
49
Bases de datos – Unidad Formativa 2
●● NULLIF (A, B). Función que compara dos valores A y B. Si son iguales devuelve
NULL, sino devuelve el primer valor; hay que tener siempre en cuenta que el
valor A no puede ser nunca NULL.
●● NULLS FIRST. Por defecto, cuando usamos el ORDER BY, el resultado coloca los
valores NULL al final. En cambio, con la sentencia ORDER BY NULLS FIRST apare-
cerán los NULLS en los primeros lugares de los registros consultados.
●● COALESCE (A,B,C, [...]). La función devuelve el primer valor de la lista que no sea NULL.
Para realizar las consultas de resumen es necesario añadir dos cláusulas nuevas a la
sentencia SELECT: GROUP BY y HAVING.
50
Realización de consultas
Las funciones de agregado son el complemento para realizar las consultas resu-
men. Se trata de funciones que aplican cálculos a un conjunto de valores y devuel-
ven un único resultado (Figura 3.15).
●● HAVING (teniendo). Esta cláusula, al igual que WHERE, aplica una condición a la
consulta, pero ésta se ejecuta en diferente orden y se aplica a aquellas columnas
agrupadas previamente; es decir, sólo podrá utilizarse junto a la cláusula GROUP BY.
51
Bases de datos – Unidad Formativa 2
Figura 3.17
Ejemplo de una consulta
UNION.
Las composiciones internas, entre las que se encuentran la cláusula JOIN, son un
recurso de los lenguajes de bases de datos que permiten obtener datos relacionados
entre varias tablas, de una manera más eficiente que utilizando la cláusula UNION.
52
Realización de consultas
La cláusula JOIN realiza una función parecida a UNION pero es más compleja y
ofrece la posibilidad de unir más de dos tablas. Existen diferentes clases de JOIN,
pero la más utilizada es INNER JOIN, que se emplea para unir tablas mediante ope-
radores de comparación entre sus columnas (Figura 3.18).
SELECT *
FROM Equipos
INNER JOIN jugadores
ON equipo.id_equipo=jugadores.id_equipos Figura 3.18
Ejemplo de una consulta
INNER JOIN.
Vemos que DNI también está en esta tabla, pero no como clave primaria. Aun así,
la utilizaremos para relacionarla con la tabla Personas:
53
Bases de datos – Unidad Formativa 2
El INNER JOIN devuelve los registros que tienen al menos una coincidencia entre
ambas tablas en función del DNI, que es el parámetro especificado en la cláusula
“ON”. Si hay algún registro en Personas que no se encuentra en Órdenes, esta fila
no se mostrará.
Es importante remarcar que, aunque una consulta INNER JOIN también puede
realizarse con una consulta WHERE, esta última tiene un rendimiento mucho
menor, y en tablas de gran tamaño puede incrementar el tiempo de ejecución
de manera considerable. Esto es debido a que con la cláusula WHERE se realiza
la consulta de todos los registros de ambas tablas y se realiza el producto car-
tesiano (cada registro de A lo relacionamos con cada registro de B), y después
ese resultado lo filtramos, mientras que con el INNER JOIN primero se filtran los
resultados de cada tabla y después simplemente los une, sin tener que realizar
el producto cartesiano.
La clase NATURAL JOIN es una abreviación de INNER JOIN por condición de igual-
dad. Además, elimina las columnas que estén repetidas (Figura 3.22).
54
Realización de consultas
Figura 3.22
Representación de dos círculos. La
parte en rojo representa los datos
comunes de ambos círculos.
Si realizamos una consulta en una sola tabla, el sistema deduce que la columna
a la que queremos acceder es la tabla que hemos definido con la cláusula FROM.
Cuando trabajamos con diferentes tablas o bases de datos, es necesario utilizar
nombres cualificados: “nombre_tabla.nombre_columna”. Se utiliza el punto para
separar el nombre del objeto y el nombre de su contenedor, con el fin de crear una
cadena de elementos que representa el objeto y el lugar al que pertenece.
Veamos a continuación las tablas de la figura 3.23, que utilizaremos para realizar
los ejemplos de los diferentes tipos de OUTER JOIN:
55
Bases de datos – Unidad Formativa 2
●● LEFT. Se añadirán las filas de la primera tabla que se haya definido en la cláusula
FROM (Figura 3.24):
SELECT *
FROM empleado
ON empleado.IDDepartamento = departamento.IDDepartamento
Martínez 33 Informática 33
Sánchez 31 Dirección 31
Pérez 34 Comercial 34
Moreno 34 Comercial 34
Figura 3.24 García 36 NULL NULL
Resultado de la ejecución de la Gutiérrez 33 Informática 33
cláusula LEFT.
●● RIGHT. Se añadirán las filas de la segunda tabla que se haya definido en la cláu-
sula FROM (Figura 3.25):
SELECT *
FROM empleado
ON empleado.IDDepartamento = departamento.IDDepartamento
Pérez 34 Comercial 34
Martínez 33 Informática 33
Moreno 34 Comercial 34
Gutiérrez 33 Informática 33
Figura 3.25
Sánchez 31 Dirección 31
Resultado de la ejecución de la
NULL NULL Contable 35
cláusula RIGHT.
56
Realización de consultas
FULL. Se añadirán las filas de las dos tablas definidas en la cláusula FROM (Figura 3.26).
SELECT *
FROM empleado
ON empleado.IDDepartamento = departamento.IDDepartamento
Pérez 34 Comercial 34
Martínez 33 Informática 33
Moreno 34 Comercial 34
García 36 NULL NULL
Gutiérrez 33 Informática 33
Figura 3.26
Sánchez 31 Dirección 31
Resultado de la ejecución de la
NULL NULL Contable 35
cláusula FULL.
Una subconsulta es una instrucción SELECT anidada dentro de otra instrucción SE-
LECT, INSERT, DELETE o UPDATE, o incluso dentro de otra subconsulta, formando de
esta manera una cadena de consultas anidadas. La tabla de la figura 3.27 muestra
los tres tipos de sintaxis que pueden utilizarse para realizar las subconsultas.
57
Bases de datos – Unidad Formativa 2
Se realizan operaciones lógicas para comparar un valor de la fila actual con cada
uno de los valores devueltos por la subconsulta. En este tipo de operación, las
subconsultas deben hacerse en una única columna, nunca deben realizarse de
manera que devuelva como resultado más de una columna.
Existen tres cláusulas que podremos aplicar junto a esta consulta: ANY (ninguno),
ALL (todos) y SOME (alguno).
En el siguiente ejemplo, seleccionaremos todas las mujeres cuya edad sea mayor
a la de cualquier hombre:
SELECT Empleado.Nombre
FROM Empleados
WHERE Sexo=’M’ and Edad > ANY (
SELECT Empleados.Edad FROM Empleados WHERE Sexo=’H’
)
58
Realización de consultas
SELECT *
FROM Productos
WHERE id_producto IN(
SELECT id_producto FROM Pedido WHERE Descuento= 0.5
)
Figura 3.28
Ejemplo de subconsultas
con la cláusula EXISTS.
59
Bases de datos – Unidad Formativa 2
El siguiente ejemplo devolverá todos los clientes que hayan hecho, al menos, una
compra:
SELECT cliente
FROM clientes
WHERE EXISTS (
SELECT * FROM pedidos WHERE pedido.id_cliente=Cliente.
id_cliente
)
60
Realización de consultas
Resumen
Los SGDB (Sistemas gestores de Bases de datos) proporcionan a usuarios y administradores la posi-
bilidad de manejar las bases de datos de una manera gráfica e intuitiva. Suponen una mejora impor-
tante en la que no es necesario el conocimiento experto en programación de bases de datos para
poder realizar consultas o tareas de mantenimiento en la base de datos.
Las consultas son leídas por las bases de datos para poder realizar gestiones de mantenimiento, inser-
ción de registro u obtención de la información almacenada en las bases de datos. La consulta SELECT
es utilizada por los usuarios para obtener datos almacenados, seleccionados según los criterios y
condiciones que acompañan la instrucción.
Dentro de las opciones de las consultas, es posible obtener resultados en un determinado orden o
extraer aquella información que entra dentro de los parámetros establecidos por el usuario. Estos
parámetros son definidos mediante operadores de comparación, lógicos o de precedencia. Otra de
las posibilidades de la sentencia SELECT consiste en anidar consultas, con lo que se consigue que una
petición sea aplicada sobre el resultado de una consulta anterior.
61
Bases de datos
Ejercicios de autocomprobación
1. La sentencia SELECT (seleccionar) es, sin duda, la menos utilizada en una base
de datos. Su objetivo es obtener la información que precisemos de la base de
datos, y su complejidad dependerá de la consulta que realicemos.
3. La precedencia es única para cada operando, y define el orden en el que la con-
sulta calcula las operaciones aritmético-lógicas.
4. La cláusula JOIN realiza una función parecida a UNION pero es más sencilla y
ofrece la posibilidad de unir más de dos tablas.
7. Se realizan operaciones lógicas para comparar un valor de la fila actual con el
valor devuelto por la subconsulta. En este tipo de operación, las subconsultas
deben hacerse en varias columnas.
62
Ejercicios de autocomprobación
10. Si realizamos una consulta en una sola tabla, el ______________ deduce que
la columna a la que queremos acceder es la ______________ que hemos de-
finido con la cláusula ______________.
63
Bases de datos – Unidad Formativa 2
4. TRATAMIENTO DE DATOS
Figura 4.1
Introducción de información de
varios usuarios en la base de datos.
64
Tratamiento de datos
El tratamiento de los datos puede resultar complicado debido a una serie de fac-
tores que deberemos tener en cuenta, como es el caso de la eliminación de datos
dependientes. Por ello, los sistemas gestores proporcionan herramientas grafi-
cas para poder realizar las funciones de mantenimiento y tratamiento de la infor-
mación de manera sencilla e intuitiva a fin de evitar al usuario tener que utilizar
consultas construidas a mano.
Una de las principales ventajas que ofrecen las herramientas gráficas es el trata-
miento de la información por bloques; es decir, podemos crear, eliminar y modifi-
car varios registros en un solo paso, en lugar de realizar varias consultas para cada
una de las filas.
●● VALUES (valores). Introduciremos entre paréntesis los valores con los que que-
ramos inicializar el registro que estamos creando.
65
Bases de datos – Unidad Formativa 2
Cuando ejecutamos la consulta INSERT, crearemos una nueva fila en la tabla defi-
nida. Deberemos introducir los datos de todas las columnas que componen dicha
tabla, pues, de lo contrario, los datos que insertemos obtendrían el valor NULL (nulo),
que, a veces, puede producir un error, ya que no todos los campos aceptan este
valor. Veamos en la tabla de la figura 4.3 un ejemplo de cómo insertar un registro.
Para insertar una nueva persona en nuestra tabla (Figura 4.4) bastará con ejecutar
la siguiente sentencia:
El borrado de registros es una operación que muchas veces se pasa por alto, pues se
tiende a creer que si una determinada información no nos interesa basta con no acce-
der a ella. Sin embargo, eso comporta una masificación de la base de datos, que, con el
tiempo, puede almacenar gran cantidad de información innecesaria y ocupar un con-
siderable espacio de almacenamiento. Por ello, una vez nos hayamos asegurado de
que los datos son realmente innecesarios es conveniente proceder a su eliminación.
Para ello, podemos realizar el borrado desde las herramientas gráficas proporcionadas
por el sistema gestor o mediante la consulta DELETE (eliminar) (Figura 4.5):
66
Tratamiento de datos
●● WHERE. Definiremos las condiciones que tienen que cumplir los registros que de- Para saber más
seamos borrar. Es especialmente útil en los casos en los que los registros tienen un
número de identificación único, para que la consulta aplique las modificaciones Si al eliminar un registro
no defines una condición
de los datos sólo en el registro que deseamos. Podremos eliminar más de un re-
en la cláusula WHERE, se
gistro en una misma consulta si sus datos coinciden con la condición establecida. borrarán todos los datos
de la tabla seleccionada.
En la misma tabla obtenida en el apartado anterior, vamos a ejecutar una senten-
cia para eliminar uno de sus registros (Figura 4.6).
67
Bases de datos – Unidad Formativa 2
Una vez creados los registros resultará indispensable disponer de la opción de mo-
dificar dicha información. Desde las herramientas gráficas, podremos modificar el
contenido de los registros, pero también podremos utilizar la consulta UPDATE
(actualizar) (Figura 4.9):
●● SET. Definiremos tanto el campo que queremos modificar como el nuevo valor
que deseamos introducir. Podremos definir más de un campo que deseemos
modificar, separándolo por comas.
●● WHERE. Definiremos las condiciones que tienen que cumplir los registros que
deseamos modificar. Es especialmente útil en los casos en los que los registros
tienen un número de identificación único, con el fin de que las consultas apli-
quen las modificaciones de los datos sólo al registro que deseemos. Podremos
modificar más de un registro en una misma consulta si sus datos coinciden con
la condición establecida.
Ciudad País
Barcelona España
Madrid Alemania
Figura 4.10 Santander Francia
Tabla de ciudades y países. Málaga Rusia
68
Tratamiento de datos
Veremos entonces que en las dos tablas ha cambiado el País por España en los
registros en los que el valor de la ciudad es Madrid.
Ciudad País
Barcelona España Figura 4.12
Madrid España
Santander Francia Tabla Ciudades antes de
Málaga España actualizar las filas.
Ciudad País
Barcelona España Figura 4.14
Madrid España
Santander España Tabla Ciudades después de
Málaga España actualizar las filas.
69
Bases de datos – Unidad Formativa 2
Figura 4.16
Estructura del modelo relacional
y la dependencia de datos.
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 vemos como la tabla padre tiene la clave primaria id “PRI-
MARY KEY (id)” y que la tabla hijo tiene la instrucción “FOREIGN KEY (padre_id)” que
indica que su atributo padre_id está vinculado a la id de la tabla padre “REFEREN-
CES padre(id)”. Esto significa que, si eliminamos el registro padre (o modificamos
70
Tratamiento de datos
71
Bases de datos – Unidad Formativa 2
72
Tratamiento de datos
Figura 4.17
Acceso simultáneo a los datos.
Un ejemplo claro al respecto podemos verlo en las páginas web de reserva de ho-
teles, en las que varias personas pueden ver que la Suite Nupcial está libre e iniciar
la reserva, pero al terminar de rellenar los datos el sistema impide que se finalice el
proceso porque otro usuario ha realizado la reserva con anterioridad. Si no se con-
trolase esta situación, la última persona que ha reservado la habitación sustituiría
la reserva de la primera, produciéndose un caso de actualización perdida.
En las bases de datos es habitual que varios usuarios accedan a los mismos datos
simultáneamente. Por ello, hay que tener en cuenta qué políticas de acceso debe-
mos aplicar en el caso de realizar modificaciones sin que afecten al resto de usua-
rios, es decir, tenemos que decidir cuál es nuestra política de gestión de bloqueos.
Veamos cuáles son:
73
Bases de datos – Unidad Formativa 2
Figura 4.18
Restricción a los otros usuarios
por parte del cliente A mientras
modifica los datos.
74
Tratamiento de datos
Resumen
Como en el caso de la obtención de datos, existen consultas para realizar modificaciones en las bases
de datos, como la inserción o eliminación de registros. La inserción de un nuevo registro se lleva a
cabo mediante la sentencia INSERT, en la que estableceremos la tabla en la que deseamos introducir
los datos, así como cada una de las columnas con su respectivo valor.
La modificación se realiza con la consulta UPDATE, y al igual que con la sentencia INSERT, será nece-
sario definir la tabla y cada una de las columnas a las que se desea aplicar la modificación, así como
también el nuevo valor. Hay que tener muy en cuenta que, además de la tabla a la que pertenece el
registro, deberemos introducir una condición para seleccionar el registro que será modificado, ya que
de lo contrario se realizarían sobre todos los registros. En estos casos, es especialmente útil una clave
primaria que identifique inequívocamente cada fila de la tabla.
La eliminación se lleva a cabo mediante la consulta DELETE, en la que, como en la modificación, de-
beremos especificar mediante una cláusula condicional el registro que deseamos borrar.
Generalmente, a las bases de datos acceden varios usuarios, por lo que hay que tener en cuenta las
políticas de restricción y uso exclusivo a la hora de realizar modificaciones en los datos. De esta ma-
nera evitaremos errores de acceso en el momento de realizar la modificación.
Por último, deberemos tener en cuenta que la naturaleza de las bases de datos relacionales implica
que varias tablas, y por lo tanto sus datos, estén interrelacionadas, por lo que es posible borrar un
registro que esté siendo referenciado desde otra tabla; si esto ocurre se genera un error de integridad
referencial. Para solucionar estas situaciones, las bases de datos ofrecen la opción de los cambios en
cascada con los que, al realizarse un cambio en un registro referenciado, la modificación es aplicada
a todas las demás tablas de manera automática.
75
Bases de datos – Unidad Formativa 2
Ejercicios de autocomprobación
4. Si una unidad de trabajo se realiza con éxito, todas las modificaciones de datos
realizadas durante la transacción se harán efectivas.
5. Los usuarios que están modificando datos no afectan a otros usuarios que están
leyendo o modificando dichos datos.
6. El control de simultaneidad pesimista es aquel que garantiza que las operacio-
nes de lectura tengan acceso a los datos actuales y los bloques para que sí pue-
dan ser modificados por otros usuarios
9.
Cambios en cascada: es una tarea que consiste en analizar todas las
______________ de la base de datos y aplicarles, de manera ______________ ,
los cambios necesarios a aquellos registros que hagan referencia a los datos
______________.
76
Ejercicios de autocomprobación
10. En las bases de datos es habitual que ______________ usuarios accedan a
los mismos datos ______________. Por ello, hay que tener en cuenta qué
______________ debemos aplicar en el caso de realizar modificaciones sin
que afecten al resto de usuarios, es decir, tenemos que decidir cuál es nuestra
______________.
77
Bases de datos – Unidad Formativa 2
Unidad 3
1. F. La sentencia SELECT (seleccionar) es, sin duda, la más utilizada en una base
de datos. Su objetivo es obtener la información que precisemos de la base de
datos, y su complejidad dependerá de la consulta que realicemos.
2. V
3. V
4. F. La cláusula JOIN realiza una función parecida a UNION pero es más compleja y
ofrece la posibilidad de unir más de dos tablas.
5. F. Las composiciones externas se utilizan para realizar consultas uniendo dos o
más tablas; pero no es necesario que cada registro de una tabla tenga una co-
rrespondencia con las demás.
6. V
7. F. Se realizan operaciones lógicas para comparar un valor de la fila actual con el
valor devuelto por la subconsulta. En este tipo de operación, las subconsultas
deben hacerse en una única columna.
8. consultas, cálculos, resultado.
9. subconsulta, resultado, verdadero.
10. sistema, tabla, FROM.
Unidad 4
1. F. Para crear un nuevo registro, seguido de la sentencia INSERT INTO definiremos
la tabla en la que se creará el registro, y enumeraremos entre paréntesis los cam-
pos en los que queremos insertar los datos.
2. V
3. F. Las órdenes de edición son ejecuciones de consultas realizadas en el núcleo
del servidor sin necesidad de implicar al usuario.
4. V
5. F. Los usuarios que están modificando datos pueden afectar a otros usuarios que
están leyendo o modificando dichos datos.
6. F. El control de simultaneidad pesimista es aquel que garantiza que las opera-
ciones de lectura tengan acceso a los datos actuales y los bloques para que no
puedan ser modificados por otros usuarios.
7. V
8. eliminación, liberar, indexación.
9. tablas, automática, modificados.
10. varios, simultáneamente, políticas de acceso, política de gestión de bloqueos.
78
Índice
Índice
MÓDULO: BASES DE DATOS
UNIDAD FORMATIVA 2
79
Bases de datos – Unidad Formativa 2
4.2 Herramientas gráficas proporcionadas por el sistema gestor para la edición de la información . 65
4.3 Inserción de registros. Inserciones a partir de una consulta ................................................................................. 65
4.4 Borrado y modificación de registros .................................................................................................................................... 66
4.4.1 Borrado de registros ........................................................................................................................................................... 66
4.4.2 Modificación de registros ................................................................................................................................................ 68
4.5 Borrados y modificaciones, integridad referencial. Cambios en cascada ..................................................... 70
4.6 Subconsultas y composiciones en órdenes de edición .......................................................................................... 71
4.7 Transacciones. Sentencias de procesamiento de transacciones ....................................................................... 72
4.8 Problemas asociados al acceso simultáneo a los datos ........................................................................................... 72
4.9 Bloqueos compartidos y exclusivos. Políticas de bloqueo .................................................................................... 73
Resumen ........................................................................................................................................................................................................ 75
Ejercicios de autocomprobación .................................................................................................................................................... 76
Soluciones a los ejercicios de autocomprobación .............................................................................................................. 78
80
uNIDAD FORMATIVA 3
• Programación de base de datos
Los lenguajes de programación son idiomas concebidos para poder crear expre-
siones que posteriormente serán interpretadas por un ordenador.
Estos lenguajes suelen ser utilizados por los administradores de las bases de datos
para automatizar tareas de mantenimiento, al poder ser ejecutadas por el sistema
Para saber más de manera desatendida. Además, los lenguajes permiten la creación de estructu-
Entendemos por ras de control para ejecutar unas determinadas consultas según las necesidades e
sistema desatendido la incluso programar procesos de almacenamiento. Cada tipo de base de datos tiene
aplicación de cambios su propio lenguaje de programación. En esta unidad estudiaremos el lenguaje PL/
en el sistema sin que sea
SQL para las bases de datos PostgresSQL.
necesaria la supervisión
ni intervención por
parte de ningún usuario
o administrador. Las 5.2 Palabras reservadas
ejecuciones de tareas
desatendidas se emplean Las palabras reservadas son aquellas expresiones que forman parte del propio
en tareas mecánicas lenguaje de programación y no pueden ser utilizadas por el usuario durante el pro-
o repetitivas en las ceso de programación. Varían según el lenguaje y deberemos tenerlas muy pre-
que no es necesaria la sentes a la hora de programar, puesto que tienen una función determinada en ese
intervención de ninguna lenguaje y no es posible utilizarla fuera de su contexto. En el lenguaje PL/SQL se
persona.
utilizan, por ejemplo, las palabras BEGIN y END para definir el inicio y el fin de una
82
Programación de base de datos
Figura 5.1
Lista de variables reservadas.
Figura 5.2
Variables del sistema
y de usuario.
83
Bases de datos – Unidad Formativa 3
Son creadas por el entorno para almacenar información del sistema. Un ejemplo
sería la variable DATE, que almacena la fecha actual, o SYSTEM, con información del
sistema que ejecuta la aplicación.
Son creadas por el programador para almacenar datos que puedan utilizarse a lo
largo de la ejecución de la aplicación. Estas variables pueden dividirse en tres tipos:
●● Tipo preexistentes. Define una variable copiando el tipo de dato de una es-
tructura ya existente. Hace uso de la cláusula %TYPE% para obtener el tipo de
dato almacenado en una tabla. Por ejemplo, si tenemos una fila id en la tabla
alumno. Para declarar la variable con el mismo tipo que id, bastaría con ejecutar
el siguiente código:
declare
variable alumno.id%TYPE%;
●● Tipo fila (row type). PL/PgSQL nos permite almacenar datos tipo tupla, de ma-
nera que podemos almacenar las filas de una tabla en una variable. En este caso,
en los campos de la variable obtendrás los valores y los tipos de datos de las
columnas, de la tabla o vista.
<nombre_variable> <esquema.tabla>%rowtype;
V_alumnos.n.id;
84
Programación de base de datos
Donde si hemos guardado las diferentes filas de la tabla alumnos, “n” sería el nú- Para saber más
mero del registro o fila, e “id” el nombre de la columna.
Las variables del sistema
se utilizan desde los
●● Tipo registro (record type). Tipo de variable parecido al tipo fila, en el que pode-
primeros sistemas
mos almacenar el resultado de una sentencia SELECT. A diferencia del tipo fila, el operativos.
registro no tiene una estructura predefinida. La estructura de esta variable es:
nombre RECORD;
5.4 Comentarios
Figura 5.3
Código en el que aparecen
numerosos comentarios.
85
Bases de datos – Unidad Formativa 3
Ejemplos de ello serían las funciones matemáticas (cos, sen, PI, etc.) y la manipu-
lación y la comparación de caracteres (comparar cadenas, codificación de carac-
teres, etc.).
IF <condición> THEN
<sentencias>;
END IF;
86
Programación de base de datos
Figura 5.4
Estructura de un IF.
●● LOOP. La estructura LOOP crea un bucle donde existen varias condiciones de salida.
LOOP
<sentencia>
exit when <condición_salida>
<sentencia>
exit when <condición_salida>
<sentencia>
END LOOP;
●● WHILE … LOOP. Esta estructura genera un bucle con una sola condición de sa-
lida; en este caso, si dicha condición se cumple desde el principio, el código en
su interior no llegará a ejecutarse una primera vez (Figura 5.5):
Figura 5.5
Estructura WHILE ... LOOP.
87
Bases de datos – Unidad Formativa 3
Los guiones (en inglés scripts) son pequeños archivos que contienen código eje-
cutable desde el programa principal. Existen varias herramientas para crear guio-
nes, a las que puede accederse de manera visual e intuitiva en las librerías, funcio-
nes y demás recursos necesarios para poder construir nuestros propios guiones.
Figura 5.6
Ejemplo de una herramienta
para la creación de guiones y
procedimientos de ejecución.
88
Programación de base de datos
Figura 5.7
Esquema de un proceso
almacenado.
Las subrutinas forman parte del algoritmo principal y realizan una tarea específica
dentro de la ejecución del programa. En algunos lenguajes de programación se les
llama funciones. Cuando utilizamos funciones o subrutinas, aparecen los concep-
tos de variable local y variable global:
89
Bases de datos – Unidad Formativa 3
90
Programación de base de datos
Figura 5.8
Disparadores o triggers que lan-
zarán una serie de instrucciones.
Para tratar dichas excepciones, podemos optar, según lo crítica que sea la ex-
cepción, por detener la ejecución del programa o ignorar el error y seguir con la
ejecución
Por este motivo, los lenguajes de programación suelen tener instrucciones especí-
ficas para definir el comportamiento ante las excepciones.
91
Bases de datos – Unidad Formativa 3
Para saber más La sintaxis adecuada para definir excepciones sería la siguiente:
En SQL se utiliza la BEGIN
sentencia EXCEPTION
consultas
para definir
comportamientos ante EXCEPTION
errores. WHEN [condición] THEN
Sentencia de la excepción
WHEN [condición] THEN
Sentencia de la excepción
END;
Los cursores son pilas de punteros que apuntan a cada una de las filas del re-
sultado de una consulta. Entendemos por pila de punteros un vector en el que
no almacenamos valores, sino direcciones de memoria donde el sistema puede
encontrar los resultados obtenidos en una consulta. Esto es útil para reducir la
carga de memoria del cliente cuando deseamos procesar los datos de una con-
sulta que ha generado un gran volumen de resultados. De esta manera, cuando
queremos procesar uno a uno los 10.000 registros devueltos por una consulta,
no necesitamos tener todos los datos cargados en local, sino que iremos reco-
rriendo la pila con las 10.000 direcciones de memoria donde encontraremos los
datos que buscamos.
1. Declaración de cursor
2. Abrir cursor
3. Ejecutar el cursor
92
Programación de base de datos
CLOSE cursor ;
Dentro de la programación de las bases de datos, los API se utilizan para poder
gestionar bases de datos mediante sentencias de SQL. Los propios API se encar-
garán de gestionar los diferentes protocolos de comunicación para que lleguen al
servidor de destino en un formato estándar que éste pueda entender.
Algunos estándares de API más utilizados en bases de datos son los ODBC, que
permiten a los SGBD mantenerse conectados al servidor y hacerle llegar peticio-
nes, desde consultas hasta modificaciones en la base de datos.
93
Bases de datos – Unidad Formativa 3
Resumen
Los sistemas de bases de datos incorporan lenguajes de programación con los que pueden gestio-
narse operaciones más complejas que no pueden llevarse a cabo mediante consultas. Las estructuras
de control de flujo, como los bucles, permiten repetir la misma consulta varias veces y aplicarla inclu-
so a un gran número de registros con sólo un par de líneas de código. Las sentencias condicionales
sólo permiten aplicar las consultas si se han dado una serie de condiciones en la base de datos. Estos
controles de flujo permiten crear programas de mantenimiento en los que no es necesaria la inter-
vención de ninguna persona durante todo el proceso.
La función es otra de las estructuras de los lenguajes de programación que hace posible ordenar el
código en bloques, los cuales serán ejecutados al ser llamados por el programa.
De esta manera, se reduce el código repetido y se crea un programa más estructurado y ordenado.
Los guiones son código de programación, que será ejecutado internamente por el servidor. Estos
guiones pueden ser lanzados por los disparadores, que pueden ser, programados para ser ejecuta-
dos, al reunirse unas condiciones determinadas en la base de datos. Por ejemplo, lanzar un vaciado
de los cien registros más antiguos de una tabla temporal mediante un script, al llegar a un número
máximo de registros.
Las excepciones son programadas para evitar que, en caso de errores inesperados, el sistema se
vuelva inestable. Generalmente, se programan para lanzar un mensaje que explica el error que se ha
producido. Si es un error grave, la ejecución del programa se detendrá; en caso contrario el mensaje
será mostrado pero no se detendrá el programa.
Por último, las API son pequeños códigos de programación que son utilizados para transmitir la in-
formación y las funcionalidades entre diferentes plataformas. De esta manera, no es necesario que
todas las plataformas estén escritas en el mismo lenguaje, o con las mismas características, ya que las
API hacen de puente para que se puedan comunicar entre ellas.
94
Ejercicios de autocomprobación
Ejercicios de autocomprobación
1. Las palabras reservadas son aquellas expresiones que forman parte del propio
lenguaje de programación y no pueden ser utilizadas por el usuario durante el
proceso de programación.
3. Las funciones son bloques de código que realizan una tarea dispersa cuando
son ejecutadas. Normalmente, se pasa un valor a la función y, al finalizar la eje-
cución, devuelve un resultado.
5. Los guiones (en inglés scripts) son pequeñas bases que contienen código ejecu-
table desde el programa principal.
7. Las funciones de usuarios son aquellas consultas creadas por el sistema para
adaptar los resultados de las consultas a sus necesidades.
9. Las subrutinas forman parte del ______________ principal y realizan una tarea
específica dentro de la ejecución del ______________ . En algunos lenguajes
de programación se les llama ______________.
95
Bases de datos – Unidad Formativa 3
10.
Las bases de datos nos proporcionan la posibilidad de programar
______________ que se ejecuten internamente en el ______________ de
manera desatendida por parte del usuario.
96
Interpretación de diagramas Entidad/Relación
6. INTERPRETACIÓN DE DIAGRAMAS
ENTIDAD/RELACIÓN
Un diagrama entidad/relación es una representación gráfica usada para modelar
los 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 (Figura 6.1).
Figura 6.1
Esquema de un diagrama
entidad/relación.
Figura 6.2
Ejemplo de diagrama E/R con
atributos, entidades, relaciones
y cardinalidad.
97
Bases de datos – Unidad Formativa 3
●● Atributos. Son las características que definen una entidad. Siguiendo el ejemplo
anterior, podríamos decir que son atributos de una persona: su nombre, su edad,
su peso y su altura.
●● 1:1. Es aquella relación que une dos entidades de manera única; es decir, nin-
guna de ellas está relacionada con una tercera entidad. Por ejemplo, un marido
(entidad) está casado (relación) con una única mujer y viceversa.
●● 1:N. Es la relación en la que una entidad está relacionada con varias entidades,
pero éstas, a su vez, sólo pueden estar conectadas con la primera, pero con nin-
guna más. Para entenderlo mejor, podemos imaginarnos que una persona (en-
tidad) puede tener (relación) varios coches, pero un coche sólo puede tener un
dueño.
●● N:M. Es la relación en la que todas las entidades pueden estar relacionadas con
varias entidades. Es el caso, por ejemplo, de un supermercado, en el que un pro-
ducto (entidad) puede ser comprado (relación) por varios clientes (entidad), así
como varios clientes pueden comprar varios productos.
98
Interpretación de diagramas Entidad/Relación
A continuación, veremos las etiquetas que representan la cardinalidad en las rela- Para saber más
ciones de las entidades junto a un ejemplo de ellas:
El Dr. Peter Pin-Shan Chen
fue el creador del modelo
●● 1:1. Un marido (entidad) está casado (relación) con una única mujer y viceversa.
Entidad/Relación.
●● 1:N. Una persona (entidad) puede tener (relación) varios coches, pero un coche
sólo puede tener un dueño.
●● N:M. Un producto (entidad) puede ser comprado (relación) por varios clientes
(entidad), así como varios clientes pueden comprar varios productos.
6.3 Debilidad
En el modelo E/R es posible que una de las entidades de cualquier relación tome
Recuerda
una posición de debilidad. Se trata de aquellas entidades que no pueden ser iden- Las entidades débiles
tificadas por sus atributos y que necesitan de otras entidades para tener un senti- nunca pueden ir solas,
do. Por ejemplo, en un préstamo que se devuelve en varios pagos, la entidad PAGO sino que necesitan
de otra entidad para
carece de sentido si no está unida a la entidad PRÉSTAMO; ya que PAGO contiene
adquirir un sentido.
el identificador del recibo, pero no el del préstamo al que pertenece (Figura 6.3).
Figura 6.3
Ejemplo de entidad débil.
99
Bases de datos – Unidad Formativa 3
Figura 6.4
Diagrama E/R en modelo
extendido.
6.4.1 La reflexión
Las entidades reflexivas son aquellas que están relacionadas con ellas mismas,
y suelen emplearse para representar las relaciones entre personas. Por ejemplo,
la entidad EMPLEADOS puede ser reflexiva si se utiliza la relación Jefe, ya que un
empleado puede ser jefe de otros empleados (Figura 6.5).
Figura 6.5
Entidad reflexiva que apunta
sobre sí misma.
6.4.2 La jerarquía
100
Interpretación de diagramas Entidad/Relación
Documento
Figura 6.6
Libro Artículo
Ejemplo de modelo
E/R jerárquico.
En algunos casos, será necesario representar situaciones que no pueden ser in-
terpretadas mediante la estructura de árbol; en ese caso el modelo E/R jerárquico
puede romper el esquema de manera puntual y permitir las relaciones entre nodos
hermanos haciendo que el esquema jerárquico se convierta en un grafo dirigido.
Una vez construido nuestro diagrama E/R, que representa las relaciones de los ele-
mentos de la “vida real”, el siguiente paso, a la hora de construir una base de datos,
es el cambio del diagrama E/R al modelo relacional, esto es, transformar los es-
quemas que tenemos en tablas que contengan los atributos más representativos
de las entidades. Puede parecer complejo al principio, pero se puede realizar de
manera sistemática realizando los siguientes pasos (Figura 6.7):
●● Una relación N:M se convierte en una tabla en la que la clave primaria serán las
101
Bases de datos – Unidad Formativa 3
Figura 6.7
Paso del diagrama E/R al
modelo relacional.
Las formas normales son una manera de dividir los atributos según su depen-
dencia respecto 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.
Una tabla se halla en la 1ª NF (Normal Form) si todos sus atributos son atómicos, es
decir, indivisibles. Un ejemplo muy claro sería el del DNI (Figura 6.8).
102
Interpretación de diagramas Entidad/Relación
Para pasar la tabla a la 2ª NF, deberíamos dividirla en dos tablas, tal como se mues-
tra en la figura 6.10.
Figura 6.10
Dos tablas separadas para poder
estar en la segunda forma normal.
103
Bases de datos – Unidad Formativa 3
Para poder pasar la relación a FNBC, es preciso localizar los atributos que depen-
den de los determinantes y que no son claves candidatas y, a partir de ellos, crear
nuevas relaciones sin perder la información inicial.
Para poder solucionar este problema, se creó la cuarta forma normal (4FN), que
consiste en dividir la relación en dos relaciones diferentes que separen los elemen-
tos que provocan la dependencia multivalente.
La quinta forma normal se crea para las relaciones en FNBC que tienen depen-
dencias multivalentes pero que no pueden ser resueltas por la 4FN.
104
Interpretación de diagramas Entidad/Relación
105
Bases de datos – Unidad Formativa 3
Para saber más Las ventajas de normalizar un modelo relacional son las siguientes:
Normalizar los modelos ●● Evitar la redundancia de datos, es decir, datos duplicados e innecesarios.
relacionales nos acerca
un poco más a la
estructura de las bases
●● Proteger la integridad de los datos. No dejar huérfano ningún atributo o tabla
de datos. que tenga alguna clase de dependencia.
●● Igualar la estructura del modelo relacional al sistema de base de datos: tablas con
nombres únicos y columnas y atributos del mismo tipo.
106
Interpretación de diagramas Entidad/Relación
Resumen
Los diagramas entidad/relación permiten interpretar las características de los datos y sus interrela-
ciones en las que están basadas las bases de datos relacionales. De este modo, es posible, de una
manera visual, entender la estructura de los datos y cómo se interpretan en la vida real. Estos dia-
gramas son utilizados generalmente en el proceso de desarrollo de una base de datos, antes de su
creación e implantación, ya que facilitan la concepción de todo el proyecto y están especialmente
diseñados para convertirse en una especie de planos a seguir a la hora de crear la base de datos. Para
ello, es importante seguir unas reglas, tanto en la simbología como en la estructura del diseño y la
distribución de los elementos. Es preciso definir en el diagrama las características que tendrá la base
de datos, como tipo de datos que almacenará o el tipo de relación que tendrán las diferentes tablas
y sus claves primarias. La cardinalidad, por ejemplo, define el número de relaciones existentes entre
las diferentes tablas.
Una vez creado el diagrama con la conceptualización de la situación de la vida real que se quiere tras-
pasar a la base de datos, resultará relativamente sencillo traspasarlo al modelo relacional mediante
una serie de pasos según las características del diagrama y las relaciones de las tablas.
La normalización del modelo relacional consiste en seguir unas pautas en la distribución de los datos
para que no exista duplicidad de éstos y, al mismo tiempo, sean más eficiente las consultas realizadas
a las tablas, mediante la aplicación de políticas como, por ejemplo, definir que todos los atributos de
una tabla sean dependientes de una única clave primaria.
107
Bases de datos – Unidad Formativa 3
Ejercicios de autocomprobación
1. La cardinalidad representa el número de relaciones que existen entre varias en-
tidades. Ésta se representa mediante una etiqueta en el interior de la relación.
4. Las entidades reflexivas son aquellas que están relacionadas con ellas mismas, y
suelen emplearse para representar las relaciones entre personas.
7. Para poder pasar la relación a FNBC, es preciso localizar los atributos que de-
penden de los determinantes y que no son claves candidatas y, a partir de ellos,
crear nuevas relaciones sin perder la información inicial.
9. La quinta forma normal se crea para las relaciones en ______________ que
tienen dependencias ______________ pero que no pueden ser resueltas por
la ______________.
108
Ejercicios de autocomprobación
10. El proceso de normalización consiste en seguir las reglas de las bases de datos
y ______________ a las relaciones que hemos obtenido al pasar del modelo
______________ al modelo ______________.
109
Bases de datos – Unidad Formativa 3
Las bases de datos objeto-relacionales son una evolución de las bases de datos
del modelo relacional que dan lugar a otro tipo más amplio que incorpora con-
ceptos del lenguaje orientado a objetos (Figura 7.1).
Figura 7.1
Representación de una base de
datos orientada a objetos.
Por lo tanto, los ejemplos de este tema no son ejecutables desde MySQL.
110
Uso de bases de datos relacionales
En los elementos que componen las bases de datos objeto-relacionales cabe destacar:
●● Constructores. Son los métodos cuyo nombre coincide con el nombre del tipo.
Todos los tipos de objeto tienen asociado un método que inicializa nuevos ob-
jetos de ese tipo.
Figura 7.2
Los objetos dentro de una base
de datos.
En todo objeto es necesario definir tanto su estructura como sus parámetros. Para
ello, utilizaremos la sentencia CREATE TYPE (crear tipo), en la que definiremos el
111
Bases de datos – Unidad Formativa 3
7.4 Herencia
Figura 7.4
Administrativo, docente y
PersonaLimpieza heredan
atributos de Persona.
Cuando se utilizan objetos grandes, resulta ineficaz pasar copias de él entre pro-
gramas. Por ello, se opta por compartir el objeto pasando su referencia; y esto sólo
es posible si el objeto cuenta con un identificador único.
112
Uso de bases de datos relacionales
Es posible crear un tipo de tabla que almacene los objetos que hemos creado.
Cada fila de la tabla representará un objeto, y cada columna almacenará un atribu-
to del tipo de objeto (Figura 7.5).
Figura 7.5
CREATE TABLE clientes_año_tab OF cliente_t (clinum PRIMARY KEY);
Ejemplo de instrucción para
CREATE TABLE clientes_antiguos_tab ( año NUMBER, cliente cliente_t); crear tablas que almacenan un
tipo objeto.
Las colecciones son un tipo de datos que almacena un conjunto de datos. Existen
dos tipos de colecciones:
●● Varray. Colección ordenada de datos, cada uno asociado a un índice para ac-
ceder a ellos. Al definir un Varray (vector), es necesario definir el número de ele-
mentos que contendrá.
Figura 7.6
Ejemplo de tabla anidada.
113
Bases de datos – Unidad Formativa 3
Una vez hayamos definido cómo será el tipo de objeto que utilizaremos, debere-
mos declarar los objetos e inicializarlos.
Para declarar un objeto, basta con definir de qué tipo será y asignarle un nom-
bre, igual que lo haríamos al crear una variable. Una vez creado el objeto, se dice
que es un objeto atómicamente nulo, puesto que debemos inicializarlo con la
llamada al constructor. De esta manera se definirán los valores del tipo objeto
(Figura 7.7).
DECLARE
r Racional ;
BEGIN
r : = Racional ( 6 , 8 ) ;
DBMS_OUTPUT. PUT_LINE( r . num);
END
DECLARE
Figura 7.7
r Racional:=Racional(2,3)
Ejemplo de instrucción para
declarar un objeto e inicializarlo.
En este caso, las consultas necesitan un punto de entrada, que suele ser el nombre
de un objeto o la extensión de una clase. Cuando se utiliza una extensión como
punto de entrada, es necesario emplear una variable iteradora que adquiera los
valores de los diferentes objetos de la colección (Figura 7.8).
114
Uso de bases de datos relacionales
Del mismo modo que existen las claves primarias y foráneas en las bases de datos
objeto-referencia, existe también la posibilidad de almacenar en una columna la
referencia a un objeto que se halle en una tabla referenciada.
En este caso, para poder mantener la integridad referencial, los objetos a los que se
hace referencia deben haberse creado previamente.
Para poder invocar los métodos que hayamos definido a lo largo del programa,
bastará con utilizar la notación punto sobre el tipo del objeto (Figura 7.9).
Figura 7.9
La llamada al método
hello_virtual() que existe en la
Clase Base.
Para insertar una instancia de cualquier tipo de objeto, es necesario utilizar el mé-
todo constructor, tal y como se hace con los objetos (Figura 7.10).
115
Bases de datos – Unidad Formativa 3
116
Uso de bases de datos relacionales
Resumen
Las bases de datos objeto-relacionales pretenden acercarse un poco más al paradigma de los len-
guajes de programación orientados a objetos. Se definen de esta manera nuevos tipos de bases de
datos capaces de almacenar datos de tipo objeto mucho más complejos que los tipos habituales
empleados hasta el momento como enteros, caracteres, fechas, etc.
Para realizar este cambio de paradigma en las bases de datos se crean dos nuevas maneras de al-
macenar los datos de tipo objeto. La primera, mediante tablas de objeto en la que cada una de ellas
representa una clase, y cada columna un atributo de ésta.
De modo que una clase coche que esta compuesta por color, modelo y marca es almacenada de
modo que cada uno de los atributos corresponda a una columna de la tabla. Cada uno de los nuevos
objetos creados a partir de la clase coche, es almacenado en la tabla como un registro nuevo. La se-
gunda manera es mediante las tablas de columnas tipo objeto, en la que todo el contenido de una
clase es almacenado en una única columna de la base de datos.
Para poder acceder a los datos almacenados mediante el sistema de tablas con columnas tipo objeto
deberemos utilizar la notación punto, hasta llegar a los datos almacenados mediante la estructura de
la clase. Para la realización de consultas y modificaciones en los datos de las bases de datos objeto-
relacionales se utilizan las mismas consultas SELECT, UPDATE, INSERT, etc., teniendo siempre en cuen-
ta la notación punto para poder introducir los datos en las columnas de tipo objeto.
117
Bases de datos – Unidad Formativa 3
Ejercicios de autocomprobación
2. Los constructores son los métodos cuyo nombre coincide con el nombre del
tipo. Todos los tipos de objeto tienen asociado un método que inicializa nuevos
objetos de ese tipo.
3. En ocasiones, es necesario trabajar con tipos de objetos iguales. En estos ca-
sos es conveniente utilizar la herencia, que es una característica del paradigma
orientado a objetos.
5. Una vez creado el objeto, se dice que es un objeto atómicamente nulo, puesto
que debemos inicializarlo con la llamada al constructor. De esta manera se defi-
nirán los valores del tipo objeto.
8. Las bases de datos objeto-relacionales son una evolución de las bases de datos
del ______________ relacional que dan lugar a otro tipo más amplio que incor-
pora conceptos del ______________ orientado a objetos.
118
Ejercicios de autocomprobación
10.
La herencia se basa en crear nuevos ______________ utilizando para
ello otro tipo como ______________ , del que se obtendrán los mismos
______________.
119
Bases de datos – Unidad Formativa 3
Unidad 5
1. V
2. V
3. F. Las funciones son bloques de código que realizan una tarea determinada
cuando son ejecutadas. Normalmente, se pasa un valor a la función y, al finalizar
la ejecución, devuelve un resultado.
4. F. El bucle FOR genera un número determinado de repeticiones definidas me-
diante los parámetros “min” y “max”. Dichos parámetros no podrán modificarse
durante la ejecución del FOR.
5. F. Los guiones (en inglés scripts) son pequeños archivos que contienen código
ejecutable desde el programa principal.
6. V
7. F. Las funciones de usuarios son aquellas consultas creadas por un usuario para
adaptar los resultados de las consultas a sus necesidades.
8. programador, informativas, comprensión
9. algoritmo, programa, funciones.
10. sentencias, servidor, usuario.
Unidad 6
120
Soluciones a los ejercicios de autocomprobación
Unidad 7
1. V
2. V
3. F. En ocasiones, es necesario trabajar con tipos de objetos muy parecidos pero
no iguales. En estos casos es conveniente utilizar la herencia, que es una carac-
terística del paradigma orientado a objetos.
4. F. Varray es una colección ordenada de datos, cada uno asociado a un índice
para acceder a ellos. Al definir un Varray (vector), es necesario definir el número
de elementos que contendrá.
5. V
6. V
7. F. Para el borrado de objetos se utiliza la sentencia DELETE y la cláusula WHERE
para eliminarlos selectivamente.
8. modelo, lenguaje, objetos.
9. nombre, parámetros, iguales.
10. t ipos, padre, atributos.
121
Bases de datos – Unidad Formativa 3
Índice
Introducción al módulo
Esquema de contenido
122
Índice
123