Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CARRERA CICLO
Tecnologías de la Información 4
ÁREA
TÉCNICA
Departamento de Ciencias de la Computación y Electrónica
Guía didáctica
Autores:
Juan Carlos Morocho Yunga
Audrey Romero
Asesoría virtual
www.utpl.edu.ec
FUNDAMENTOS DE BASE DE DATOS
Guía didáctica
Juan Carlos Morocho
Audrey Romero
4.0, CC BY-NY-SA
Primera edición.
ISBN digital - 978-9942-25-532-7
La versión digital ha sido acreditada bajo la licencia Creative Commons 4.0, CC BY-NY-SA:
Reconocimiento-No comercial-Compartir igual; la cual permite: copiar, distribuir y comunicar
públicamente la obra, mientras se reconozca la autoría original, no se utilice con fines comerciales
y se permiten obras derivadas, siempre que mantenga la misma licencia al ser divulgada.https://
creativecommons.org/licenses/by-nc-sa/4.0/deed.es
24 de septiembre, 2019
2. Índice
2. Índice 4
3. Introducción 7
4. Bibliografía 10
4.1. Básica 10
4.2. Complementaria 10
PRIMER BIMESTRE
Autoevaluación 1 40
2.2. Claves 45
Autoevaluación 2 55
3.7. Subconsultas 76
3.10. Vistas 85
3.11. Transacciones 87
3.13. Índices 90
3.14. Privilegios 91
Autoevaluación 3 95
SEGUNDO BIMESTRE
Autoevaluación 4 111
UNIDAD 5. DISEÑO CONCEPTUAL DE BASE DE DATOS 115
Autoevaluación 5 127
Autoevaluación 6 145
7. Solucionario 150
8. Glosario 161
3. Introducción
(Ralph Martson)
Las bases de datos constituyen uno de los elementos esenciales de los sistemas
de información y han cambiado considerablemente el manejo de muchas
organizaciones. Las bases de datos son parte de nuestra vida cotidiana; a
menudo interactuamos con ellas, muchas de las veces sin ser conscientes de
ello. Cuando cancelamos las compras del supermercado, reservamos tickets de
avión, hacemos alguna transacción a través del cajero automático y en muchas
otras actividades cotidianas estamos haciendo uso de las bases de datos.
Seguramente usted está emocionado por conocer más a fondo sobre la gestión
de la información dentro de las bases de datos, el diseño de una base de datos,
las herramientas que se pueden utilizar, etc. Según vayamos desarrollando los
contenidos propuestos en esta asignatura, usted irá obteniendo la respuesta a
estas preguntas.
4. Bibliografía
4.1. Básica
4.2. Complementaria
López, I., Castellano, M. J., y Ospino, J. (2013). Bases de datos. México D.F.,
México: Alfaomega.
1
OCW OpenCourseWare – Cursos Abiertos
• Al final de cada unidad cuenta con una autoevaluación para medir sus
avances.
Símbolo Propósito
PRIMER BIMESTRE
Estimado estudiante, hoy en día interactuamos con bases de datos en gran parte
de las actividades cotidianas que realizamos, por lo tanto, empezamos esta
unidad con los conceptos básicos.
Con la revisión previa, seguramente usted tiene claro que las bases de datos
surgieron para dar respuesta a la gestión computarizada de los datos comerciales,
y además superar las limitaciones de los sistemas de procesamiento de archivos,
como son:
1
Mas información en concepto.de
Para poder ser más efectivos, se necesitaba una nueva técnica y surgieron los
conceptos de base de datos y los sistemas de gestión de bases de datos (SGBD).
Bases de datos
Las bases de datos tienen sus limitaciones si nos basamos de manera exclusiva
en su SGBD, por lo tanto, es importante destacar que las bases de datos trabajan
conjuntamente con los programas de aplicación4.
2
Del inglés Data Definition Language, se utilizan las siglas en inglés por ser más utilizadas
técnicamente
3
Del inglés Data Manipulation Languaje, se utilizan las siglas en inglés por ser más utilizadas
técnicamente
4
Son programas diseñados para facilitar la realización de tareas específicas en la computadora
5
Padlet es un muro digital que puede utilizarse como tablón personal o pizarra colaborativa.
La lectura ¿Le aclaró sus conocimientos sobre el tema? Esperamos que tenga
una clara concepción acerca de las características. Recuerde además, que los
modelos de datos comprenden tres componentes (Connolly y Begg, 2005):
Arquitectura centralizada
Se observa que las terminales se enlazan con una base de datos central a través
de la conexión de red de comunicación, sobre la que realizan las peticiones y
datos.
6
También llamados estaciones de trabajo
Este tipo de arquitectura en dos capas proporciona una separación muy básica.
El cliente (corresponde a la capa de presentación) es principalmente responsable
de la presentación de los datos al usuario. El servidor (corresponde a la capa de
datos) es el responsable de suministrar servicios de datos al cliente.
7
Computador personal, del inglés Personal Computer
Se observa que las máquinas cliente se enlazan con una base de datos central a
través de la conexión de red de comunicación, sobre la que realizan las peticiones
y datos. Además, en este esquema los máquinas cliente se encargan de la capa
de presentación.
En la arquitectura cliente servidor básica la idea es tener servidores
especializados con funcionalidades específicas como: almacenar archivos,
servidor web, servidor de base de datos, servidor de correo, entre otros que
prestan sus servicios a los clientes cuando lo requieren. En este contexto las
maquinas cliente proporcionan las interfaces correspondientes para que los
usuarios finales interactúen con los servidores especializados. La Figura 5
presenta un ejemplo de
8
del inglés Structured Query Language
9
También llamados formas de acceso
Un SGBD completo debe proporcionar diez servicios que según (Connolly &
Begg, 2005) se espera que estén disponibles y se presentan en la Figura 7.
10
Página oficial Toad
11
Página oficial SequelPro
Minería de datos
12
La inteligencia artificial denominada también aprendizaje de la máquina.
13
Las ecuaciones relacionan diferentes variables
Almacenes de datos
Estimado estudiante, es necesario que usted conozca que este apartado es parte
de los conocimientos básicos de esta asignatura, sin embargo, se ampliarán en el
siguiente componente académico de bases de datos.
El ciclo de vida de una base de datos (DBLC16) define las fases que marcan la
evolución del desarrollo de un sistema de bases de datos. En (Coronel y Morris,
2011) se plantea un DBLC dividido en seis fases (Figura 8) que guardan mucha
relación con las fases del SDLC. Tanto el DBLC como el SDLC son procesos
vinculados que se van ejecutando paralelamente, son codependientes e
integrados.
14
del inglés System Development Life Cycle
15
o investigación preliminar
16
del inglés Database Life Cycle
17
del inglés Data Administrator
18
del inglés Database Administrator
Si bien explicamos por separado estos dos roles, las organizaciones no siempre
cuentan con estos roles, y las personas deben tener la capacidad de asumir
cualquiera de los roles o los dos.
Desarrolladores de aplicaciones
Usuarios finales
Los usuarios finales son los usuarios no sofisticados que interactúan con la base
de datos invocando alguno de los programas de aplicación. Por ejemplo, en una
entidad financiera que cuenta con su sistema informático que es administrado por
su personal y que además cuenta con los servicios de banca virtual y de banca
móvil, los usuarios finales son: los cajeros, los oficiales de crédito, los agentes de
servicio al cliente, etc., y también los cuenta-habientes que tienen habilitados los
servicios de banca virtual y/o banca móvil.
Autoevaluación 1
a. físico
b. lógico
c. de vistas
a. Máquina cliente
b. Servidor de aplicaciones
c. Lógica de negocio
d. Servidor de base de datos
Ahora, seguro Usted requiere verificar si sus respuestas fueron correctas. Con
este fin revise el solucionario que se encuentra al final de la guía didáctica y así
ratifique o rectifique sus respuestas.
Estimado estudiante, en este momento iniciamos con la revisión del tema Modelo
relacional. Se examinan los conceptos estructurales y la representación de datos
el modelo. Este tema es de vital importancia dentro de las bases de datos debido
a que sirve como fundamento teórico de la gestión y manipulación de datos en
una base de datos. Uno de los objetivos principales de la asignatura es desarrollar
en el estudiante la habilidad de aplicar el modelo relacional.
Seguro que ya relacionado los elementos básicos del modelo relacional con sus
respectivos conceptos.
2.2. Claves
Las claves en el modelo relacional son una forma de especificar que las tuplas de
una relación dada se distinguen entre sí. Esto se expresa mediante los atributos
de la relación. Algunos tipos de claves son:
• Superclave
• Clave candidata
• Clave primaria
• Clave externa o también se conoce como clave foránea.
• Superclave: ID + nombre
• Clave candidata: ID
• Clave primaria: ID
• Clave externa: nombre_dept
19
Padlet es un muro digital que puede utilizarse como tablón personal o pizarra colaborativa.
En el texto básico se hace una analogía entre los conceptos relación y variable de
los lenguajes de programación y, además, entre ejemplar de relación y valor de
una variable. Lo invitamos a revisarlo detenidamente.
20
Recordemos que también se denomina instancia
21
Padlet es un muro digital que puede utilizarse como tablón personal o pizarra colaborativa.
22
Una relación normalizada es una relación que ha seguido un proceso que consiste en designar
y aplicar un conjunto de reglas a las relaciones que se obtienen al transformar el modelo
entidad-relación al relacional (véase Diseño Lógico de Bases de Datos).
En una relación, cada atributo tiene un dominio asociado, y por lo tanto, existen
restricciones que imponen una limitación al conjunto de valores permitidos
para los atributos de las relaciones. Existen algunos tipos de restricciones para
el modelo relacional y las dos reglas básicas son: integridad de entidades e
integridad referencial. Así también encontramos otras reglas como: valores válidos
y valores nulos.
Integridad de entidades
En una relación, ningún atributo de una clave principal puede ser nulo. Es
importante que se tome en cuenta que si la clave primaria es compuesta, esta
regla debe aplicarse a todos los campos.
Integridad referencial
Valores válidos
23
implícitos
24
explícitos
Valores nulos
Los valores nulos representan un valor, que actualmente es, desconocido para un
atributo de una tupla.
• Selección
• Proyección
• Reunión natural
• Producto cartesiano
• Unión
• Intersección
• Diferencia de conjuntos
Selección
Proyección
HotelName City
The Marlton Hotel New York
Millennium Broadway New York Times Square New York
Stewart Hotel New York
Hotel Mela Times Square New York
Grand Beach Hotel Surfside Miami
Grand Beach Hotel Surfside Miami
JW Marriott Miami Miami
Royal Decameron Punta Sal Sullana
Decameron Mompiche Esmeraldas
Royal Decameron Punta Centinela Santa Elena
Reunión natural
GuestName
Margoth Cameron
Stuart Lopez
Ian Connolly
Louis Brown
Producto cartesiano
Unión
Intersección
GuestName
Margoth Cameron
Stuart Lopez
El lenguaje de consulta:
25
Un lenguaje de alto nivel tiene una gramática y sintaxis similar a las palabras en una oración.
26
del inglés Structured Query Language
27
del inglés Query By Example
28
Una operación que requiera cientos de líneas de código en un lenguaje de tercera generación
(3GL), como Cobol, generalmente requiere un número mucho menor de línea en un 4GL
(Connolly, T. y Begg, C.,2005).
29
El usuario define una serie de parámetros para que las herramientas que los utilizan generen
un programa de aplicación.
Autoevaluación 2
a. Esquema de relación
b. Dominio atómico
c. Ejemplar de relación
a. fila
b. tabla
c. columna
a. Toda la relación
b. Cada una de las tuplas
c. El esquema de la base de datos
a. Proyección
b. Selección
c. Producto cartesiano
9. Cuando se aplica una consulta sobre una única relación y donde las
tuplas tienen que cumplir un predicado particular (por ejemplo, fecha_
ingreso > ‘10/06/2015’), el resultado es:
a. Una vista que contiene las tuplas que satisfacen el predicado indicado.
b. La misma relación original, pero que contiene solamente las tuplas que
satisfacen el predicado.
c. Una nueva relación, que es un subconjunto de la relación original.
Ahora, seguro Usted requiere verificar si sus respuestas fueron correctas. Con
este fin revise el solucionario que se encuentra al final de la guía didáctica y así
ratifique o rectifique sus respuestas.
30
del inglés Structured Query Language
31
DML, del inglés Data Manipulation Language
32
DDL, del inglés Data Definition Language
58 Modalidad Abierta y a Distancia
Texto-guía: Fundamentos de Base de Datos
Primer bimestre
SQL es la principal herramienta para la interacción del usuario con una base de
datos. A través de este lenguaje se envían solicitudes de datos al servidor, que es
el encargado de responder a dichas peticiones. SQL es un lenguaje relativamente
fácil de aprender.
uso de XQuery, lenguaje de consulta XML publicado por el W3C33 para acceso
concurrente a datos ordinarios SQL y documentos XML.
SQL es un estándar de la ISO34, por tanto, todas las bases de datos que
soportan SQL deben tener la misma sintaxis, sin embargo, muchos de los
productos comerciales de SGBD agregan sus propias mejoras especiales,
aunque estas diferencias son de poca importancia sin embargo no favorecen la
interoperabilidad. Además, agrupa sentencias de acuerdo al papel que cumplen,
siendo estos grupos los siguientes:
33
World Wide Web Consortium, página office al de W3C
34
ISO del inglés International Organization for Standardarization
35
Del inglés Transaction Control Language
36
Del inglés Data Control Language
Seguro que ahora tiene más clara la sintaxis para la definición de datos en SQL
y los tipos de datos que se pueden utilizar. A continuación, se abordan los puntos
más importantes.
Esta parte del lenguaje SQL, el lenguaje de definición de datos, permite crear las
estructuras de almacenamiento de datos y otros objetos de base de datos que
son necesarios para su buen funcionamiento.
• Los atributos tienen un tipo de dato y longitud (lo que se conoce como
“dominio”).
int Entero37
smallint Entero pequeño38
numeric(p, Número de punto fijo con precisión especificada por el usuario. El
d) número consta de :
p dígitos (más un signo)
d de los p dígitos están a la derecha del punto decimal
Ejemplo:
numeric (3,1) permite almacenar 44,5 exactamente. Pero no
444,5 ni 0,32 pueden almacenarse exactamente en este campo.
real, double Números de coma flotante y doble precisión con precisión
precision dependiente de la máquina.
float(n) Número de coma flotante, con precisión de al menos n dígitos.
Date Fecha de calendario que contiene cuatro dígitos: año, mes y día
Time Hora del día, en horas, minutos y segundos.
37
Subconjunto finito de los enteros que depende de la máquina
38
Subconjunto dependiente de la máquina del tipo entero
39
Es cierto que no todos los procesos son tan críticos en el tiempo que un milisegundo.
Crear tablas
¿Cómo le fue con la actividad propuesta? Sin lugar a dudas aplicar la teoría nos
ayuda a ir dominando un saber. Ahora que ha escrito su primera tabla mediante
lenguaje DDL está preparándose para ir aplicando profesionalmente el lenguaje
SQL.
( (
p_dni VARCHAR2 (15) PRIMARY KEY, p_dni VARCHAR2 (15),
p_apellido VARCHAR2 (80) NOT p_apellido VARCHAR2 (80) NOT
NULL , NULL,
p_nombre VARCHAR2 (80) NOT NULL p_nombre VARCHAR2 (80) NOT
, NULL,
p_direccion VARCHAR2 (120) , p_direccion VARCHAR2 (120) ,
p_ciudad VARCHAR2 (80) , p_ciudad VARCHAR2 (80) ,
p_fechaNac DATE , p_fechaNac DATE ,
p_tituloAcad VARCHAR2 (80) p_tituloAcad VARCHAR2 (80),
) PRIMARY KEY (p_dni)
);
Tomado de: Silberschatz, et. al. (2014)
La restricción NOT NULL determina que en los atributos definidos con esta
restricción no se ingresen valores nulos. En caso que se envíen a insertar valores
nulos, el SGBD debe lanzar un error señalando que se está violando la restricción
de integridad.
Actualizar tablas
También, puede suceder que cuando hayamos creado una tabla se requiera
añadir, modificar el tipo de dato o eliminar una columna, para esta función se
cuenta con ALTER TABLE.
2. Eliminar un índice:
DROP INDEX Personas_p_nombres;
¿Cómo le ha ido con esta actividad? Seguro que aplicar los conocimientos a la
práctica le ha resultado una actividad muy enriquecedora. Sigamos avanzando.
Dado que una base de datos está diseñada para el almacenamiento, es necesario
que esos datos sean consultados. Las consultas de base de datos se realizan
mediante la sentencia SELECT. Cuando realizamos consultas sobre una sola
tabla, la estructura de la sentencia es:
Donde:
Avanzando las consultas, también se realizan consultas sobre varias tablas. Para
este tipo de consultas, en la parte del FROM se listan las tablas que contienen los
datos, separados por comas. La Tabla 3 muestra la estructura de la sentencia:
SINTAXIS EJEMPLO
a.
Utilizando WHERE
SELECT <nombre-columna>, SELECT p_dni, p_nombre, p_
<nombre-columna> apellido, ec_descripcion
FROM <nombre-tabla-1>, <nombre- FROM ESTADO_CIVIL, PERSONAS
tabla-2>, … WHERE ESTADO_CIVIL.EC_ID =
WHERE columna-tabla-1 = PERSONAS.ESTADO_CIVIL_EC_ID;
columna-tabla-2;
b.
Utilizando INNER JOIN
SELECT <nombre-columna>, SELECT p_dni, p_nombre, p_
<nombre-columna> apellido, ec_descripcion
FROM <nombre-tabla-1> FROM ESTADO_CIVIL JOIN PERSONAS
INNER JOIN <nombre-tabla-2> ON ESTADO_CIVIL.EC_ID = PERSONAS.
ON columna-tabla-1 = columna- ESTADO_CIVIL_EC_ID;
tabla-2;
Elaborado por: Morocho, J. y Romero, A. (2017)
Suele suceder que los atributos tienen el mismo nombre en ambas tablas, por lo
que, para diferenciarlos tendríamos que anteponer el nombre de la tabla, así:
nombre-tabla1.columna-tabla1= nombre-tabla2.columna-
tabla2.
Ejemplo:
emp.depId=dep.depId
En el ejemplo anterior:
• Note que en la parte del FROM, las tablas utilizan “alias”. Los alias son
nombres cortos que permiten referenciar a las tablas en la sentencia
SELECT;
Función Descripción
UPPER() Convierte una cadena de caracteres en mayúsculas.
SELECT UPPER(nombreCli) AS cliente, ciudad
FROM Clientes;
LOWER() Convierte una cadena de caracteres en minúsculas.
SELECT LOWER(nombreCli) AS cliente, ciudad
FROM Clientes;
TRIM() Eliminar espacios en blanco al inicio y fin de una cadena de
caracteres.
SELECT TRIM(nombreCli) AS cliente, ciudad
FROM Clientes;
LIKE Encuentra coincidencias a partir de un patrón de caracteres.
NOT LIKE % representa cualquier secuencia de cero o más caracteres
_ representa cualquier carácter individual
SELECT * FROM Clientes
WHERE Ciudad LIKE ‘%o’;
SELECT * FROM Clientes
WHERE Ciudad NOT LIKE ‘L%’;
BETWEEN… AND… Condición de búsqueda basada en un rango.
NOT BETWEEN … SELECT * FROM Productos
AND … WHERE Precio BETWEEN 10 AND 20;
SELECT * FROM Productos
WHERE Precio NOT BETWEEN 10 AND 20;
IN Condición de búsqueda basada en pertenencia a un conjunto.
NOT IN SELECT * FROM Clientes
WHERE Ciudad IN (‘Loja’,’Cuenca’);
SELECT * FROM Clientes
WHERE Ciudad NOT IN (‘Quito’,’Guayaquil’);
IS NULL Condición de búsqueda para verificar valores NULL
IS NOT NULL SELECT Nombres, Direccion FROM Personas
WHERE Direccion IS NULL;
SELECT Nombres, Direccion FROM Personas
WHERE Direccion IS NOT NULL;
DISTINCT Evita que el resultado devuelva valores repetidos
SELECT DISTINCT Departamento FROM Personas;
¿Cómo le ha resultado la lectura? Estamos seguros que le dio visión más amplia
de las posibilidades de consultas SQL que se pueden aplicar.
Es una mala práctica tomar a un NULL como comodín, para solucionar casos
inesperados, por ejemplo si no conocemos el segundo apellido de un cliente,
llenando la base de datos de estos valores que luego resultan difíciles de tratar.
Además, se puede aplicar las funciones de agregación para efectuar los cálculos
por grupos de tuplas con base a un criterio de agrupación, incluyendo para esto la
cláusula GROUP BY. La sintaxis es la siguiente:
3.7. Subconsultas
Una subconsulta es una sentencia SELECT, que tiene la misma sintaxis que
una sentencia normal. Una subconsulta aparece dentro de otra sentencia
SELECT, dicho de otro modo, es una sentencia SELECT anidada dentro de otra.
Generalmente se utilizan para filtrar una cláusula WHERE o HAVING con el
conjunto de resultados de la subconsulta. La sintaxis de una subconsulta es la
siguiente:
SELECT nombre-columna, …
FROM nombre-tabla, …
WHERE nombre-columna operador (SELECT nombre-columna
FROM nombre-tabla
WHERE nombre-columna operador valor);
¿Cómo ha ido su lectura? Seguro que le han quedado claras el uso de las
funciones de agregación, mediante la explicación de las funciones disponibles en
SQL para poder utilizarlas y acoplarlas a las consultas. Así también, con haber
estudiado sobre subconsultas debe haber descubierto el potencial de este tipo de
consultas.
Es importante que usted conozca tanto la base teórica y que vaya haciendo
prácticas para ir adquiriendo con la práctica la técnica que un experto en base de
datos requiere para el manejo de SQL.
Una parte del lenguaje SQL está dedicado a la manipulación de los datos de
una base de datos. La base de datos es un activo de la organización y varios
usuarios acceden al mismo tiempo, esto se denomina concurrencia. En una base
de datos varios usuarios a la vez estarán haciendo consultas, insertando datos en
las tablas, actualizando datos y también borrando datos, por lo tanto, la base de
datos está en continuo movimiento. Las sentencias que se emplean en el lenguaje
DML son:
INSERT
Donde:
UPDATE
UPDATE <nombre-tabla>
SET columna1=valor1, columna2=valor2, ...
WHERE alguna-columna operador valor;
Donde:
DELETE
Donde:
INNER JOIN
Devuelve todas las tuplas que tengan coincidencia con los valores basados en el
atributo común entre dos tablas. La Tabla 5 muestra en
a. la sintaxis completa y en
b. la sintaxis sin INNER.
SINTAXIS EJEMPLO
a.
SELECT columna(s) SELECTT p_nombre, p_apellido,
FROM tabla1 ec.EC_DESCRIPCION
LEFT JOIN tabla2 FROM ESTADO_CIVIL ec
ON tabla1.columna=tabla2. INNER JOIN PERSONAS p ON ec.EC_ID
columna; = p.ESTADO_CIVIL_EC_ID;
b.
SELECT columna(s) SELECT p_nombre, p_apellido,
FROM tabla1 ec.EC_DESCRIPCION
INNER JOIN tabla2 FROM ESTADO_CIVIL ec
ON JOIN PERSONAS p ON ec.EC_ID =
tabla1.columna=tabla2.columna p.ESTADO_CIVIL_EC_ID;
Elaborado por: Morocho, J. y Romero, A. (2017)
LEFT JOIN
Devuelve todas las tuplas desde la tabla izquierda y que coinciden con las tuplas
de la tabla derecha. La Tabla 6 muestra en a) la sintaxis completa y en b) la
sintaxis con LEFT OUTER JOIN.
SINTAXIS EJEMPLO
a.
SELECT columna(s) SELECT p_nombre, p_apellido,
FROM tabla1 ec.EC_DESCRIPCION
LEFT JOIN tabla2 FROM ESTADO_CIVIL ec
ON tabla1.columna=tabla2. LEFT JOIN PERSONAS p
columna; ON ec.EC_ID = p.ESTADO_CIVIL_EC_
ID;
b.
SELECT columna(s) SELECT p_nombre, p_apellido,
FROM tabla1 ec.EC_DESCRIPCION
LEFT OUTER JOIN tabla2 FROM ESTADO_CIVIL ec
ON LEFT OUTER JOIN
tabla1.columna=tabla2.columna PERSONAS p
ON ec.EC_ID = p.ESTADO_CIVIL_EC_
ID;
RIGHT JOIN
Devuelve todas las tuplas desde la tabla derecha y que coinciden con las tuplas
de la tabla izquierda. La Tabla 7 muestra en a) la sintaxis completa y en b) la
sintaxis con RIGHT OUTER JOIN.
FULL JOIN
Devuelve todas las tuplas cuando hay una coincidencia en una de las tablas. La
sintaxis es como sigue:
SELECT columna(s)
FROM tabla1
FULL OUTER JOIN tabla2
ON tabla1.columna =tabla2.columna;
Ejemplo:
3.10. Vistas
Una vista es una relación virtual, que se define a través de una consulta SQL de
cualquier tipo. Esta definición se almacena en la base de datos y se la puede
invocar como a cualquier tabla de la base de datos. Una vez se invoque una vista
el SGBD ejecutará el código SQL almacenado en la definición y la vista se creará
como una relación que contenga todas la tuplas que devuelve la consulta. La
sintaxis para crear una vista es la siguiente:
SELECT column_name(s)
FROM nombre_vista;
Este objeto de base de datos es muy importante, debido a que nos puede ayudar
como método de seguridad al segmentar los datos que se pueden visualizar a
partir de las relaciones base que son las tablas dueñas de los datos. Por ejemplo:
3.11. Transacciones
40
Del inglés American National Standards Institute
UNIQUE
a. b.
CREATE TABLE Personas CREATE TABLE Personas
( (
P_Id int NOT NULL UNIQUE, P_Id int NOT NULL,
Apellido varchar(255) NOT Apellido varchar(255) NOT NULL,
NULL, Nombre varchar(255),
Nombre varchar(255), Ciudad varchar(255),
Ciudad varchar(255) CONSTRAINT uc_PersonaID UNIQUE
) (P_Id,Apellido)
)
Elaborado por: Morocho, J. y Romero, A. (2017)
CHECK
Permite definir una restricción sobre una columna o sobre la tabla completa, para
lo cual evalúa una condición que debe cumplir las tuplas. La Tabla 9 muestra en a)
una restricción CHECK definida junto con el atributo y en b) una restricción CHECK
asignándole un nombre por lo tanto se define al final de la lista de atributos.
a. b.
CREATE TABLE Personas CREATE TABLE Personas
( (
P_Id int NOT NULL CHECK (P_ P_Id int NOT NULL,
Id>0), Apellido varchar(255) NOT NULL,
Apellido varchar(255) NOT Nombre varchar(255),
NULL, Ciudad varchar(255),
Nombre varchar(255), CONSTRAINT chk_Persona CHECK (P_
Ciudad varchar(255) Id>0 AND Ciudad=’Loja’)
) )
3.13. Índices
estamos buscando? Creo que sería mejor utilizar el catálogo de la biblioteca, que
está indizado por título, tema y autor, logrando ubicar el texto de una forma rápida
y sencilla.
3.14. Privilegios
Debemos recordar que cada objeto de base de datos tiene un propietario, que
es el usuario con el que se ingresa a la base de datos para proceder a crear las
estructuras. Por esta razón, cada usuario posee un conjunto de objetos de su
propiedad que no pueden ser accedidos por otros usuarios salvo el caso de que
se les autorice para este efecto.
GRANT
GRANT <lista_privilegios>
ON <nombre_objeto>
TO <usuario/rol>;
REVOKE <lista_privilegios>
ON <nombre_objeto>
FROM <usuario/rol>;
Notará que en la sintaxis se mencionan los Roles, que son objetos de base de
datos que agrupan conjuntos de privilegios sobre otros objetos, se utilizan para
evitar asignar privilegios individualmente.
41
Herramienta para interactuar con la base de datos que posee una consola de SQL
Autoevaluación 3
11. ( ) Una vez creada una tabla es posible añadir una restricción
mediante la instrucción ALTER TABLE.
a. Proyección
b. Selección
c. Producto cartesiano
a.
SELECT depNombre, SUM (empSalario)
FROM emp e, dept d
WHERE e.depId = d.depId
GROUP BY depNombre;
b.
SELECT depNombre, SUM(empSalario)
FROM emp e, dept d
WHERE e.depId = d. depId
GROUP BY depNombre, empSalario;
c.
SELECT depNombre, empSalario
FROM emp e, dept d
WHERE e.depId = d. depId
GROUP BY depNombre
HAVING empSalario = SUM(empSalario);
d.
SELECT depNombre, empSalario
FROM emp e, dept d
GROUP BY depNombre
HAVING empSalario = SUM(empSalario);
a. El comando HAVING
b. La sentencia ROLLBACK
c. El comando COMMIT
d. La sentencia CHECK
21. En una sentencia de reunión, se debe utilizar junto con JOIN la palabra
reservada:
a. ON
b. WHERE
c. HAVING
d. Cualquiera de las anteriores.
SEGUNDO BIMESTRE
en SQL y de seguro encontrará que son similares, nada más que el álgebra
relacional es un lenguaje más formal.
Operación selección
Define una nueva relación con las tuplas que satisfacen cierto predicado. Se
denota con la letra griega sigma minúscula (σ). La sintaxis es:
σ predicado(R)
Donde:
Ejemplo:
σ edad>30 (Empleados)
Operación proyección
Se aplica a una relación R, permite definir una nueva relación que contiene un
subconjunto vertical de R. Extrae los valores de los atributos especificados y
elimina los duplicados. Se denota con la letra griega pi mayúscula (π).
La sintaxis es la siguiente:
πa1,…,an(R)
Donde:
• π es el símbolo de la operación.
• a1,…,an atributos especificados que se van a recuperar.
• (R) representa la relación desde donde se obtiene los resultados.
Ejemplo:
Operación Unión
A UNION B o A U B
▪▪ Las dos relaciones deben tener la misma grado, esto significa que deben
tener el mismo número de atributos.
A MENOS B o A - B.
A veces B o A x B.
También podríamos decir que cada tupla de la relación A se combina con cada
tupla de la relación B, así por ejemplo si A tiene 4 tuplas y B posee 5 tuplas, el
resultado del producto cartesiano resultaría en 20 tuplas.
Operación renombramiento
𝛒x(E)
A INTERSECCIÓN B o A ∩ B.
A⋈B
Operación asignación
Esta operación permite asignar resultados temporales a una variable, tal como se
hace en los lenguajes de programación. Se representa con la forma
temp1 ← E
Donde:
▪▪ temp1 es la variable
▪▪ el símbolo ← que representa la operación
▪▪ E representa una expresión de álgebra relacional
Reunión externa
Operaciones adicionales
▪▪ Proyección generalizada
𝜋 nomEmp+apellidoEmp,edad,salario÷12(Empleados)
▪▪ Agregación
𝔍AL(A)
𝔍count(ID)(Profesor)
Por ejemplo para expresar la consulta: “Muestre los nombres de los profesores
quienes tienen más de 30 años de edad”, la expresión sería:
▪▪ edad > 30 indica los predicados que deben cumplir las variables.
¿Cómo le han resultado los ejercicios? Recuerde que realizar estos ejercicios le
permitirán tener una mejor comprensión del trabajo del motor de base de datos
cuando enviamos a realizar una consulta. El dominio de este tema le permitirá
comprender y aplicar técnicas de optimización de consultas, que son temas
avanzados de SQL.
¡sigamos adelante!
Autoevaluación 4
a. Unión
b. Selección
c. Diferencia
d. Proyección
e. Renombramiento
f. Producto cartesiano
3. Para seleccionar todos los empleados que residen en Loja, ¿cuál de las
siguientes sentencias emplearía?
a. 𝛔 ciudad=’Loja’(Empleado)
b. 𝜋 ciudad IN ’Loja’(Empleado)
c. 𝛔 (Empleado ciudad>’Loja’)
a. Tuplas
b. Conjuntos
c. Dominios
a. SQL
b. QBE
c. XML
Estimado estudiante, vamos a dar inicio a uno de los temas más relevantes de
la asignatura, el diseño de bases de datos relacionales. Es importante resaltar
que, el desarrollo de un sistema de base de datos inicia con la recopilación y
captura de información, luego se requiere de un análisis y documentación de los
requerimientos del negocio. Estas tareas sirven para identificar las necesidades
de datos de la organización y son el punto de partida para el diseño de base de
datos.
Recuerde en todo momento, que estamos para ayudarle en la adquisición de
conocimientos y habilidades necesarias para comenzar las fases de diseño de la
base de datos.
Empecemos!
Las necesidades del negocio y del usuario son de vital importancia para
el despliegue de las fases de diseño, y para efectos de esta asignatura,
específicamente abordaremos el diseño de bases de datos. El diseño de base
de datos es un proceso iterativo, que tiene un punto de partida y una serie de
refinamientos sucesivos que prácticamente no tienen fin.
Seguramente usted sabe que para todo proceso ordenado, nos valemos de una
metodología, así también, para el diseño de base de datos, se debe adoptar una
metodología que nos brinde las herramientas necesarias para lograr un diseño
robusto. En el diseño de base de datos se puede determinar tres fases bien
marcadas: diseño conceptual, diseño lógico y diseño físico.
Recordemos que un modelo de datos es una representación lo más real posible
de una parte del mundo real.
1
También denominado modelo
Es la fase inicial para el diseño de bases de datos, recibe como insumo2 los
requisitos de datos de los usuarios para trasladarlos a un modelo de datos
requerido y desarrollar el diseño conceptual, que corresponde a un modelo
abstracto de datos, para este propósito se emplea el modelo entidad-relación (E-
R).
2
Conjunto de elementos que toman parte en la producción de otros bienes.
El diseño conceptual empieza por identificar las entidades, que son conceptos
ya sea físicos o abstractos que se desea representar en la base de datos. Como
siguiente paso se identifica las relaciones entre las entidades de forma que se
establezcan los vínculos correspondientes.
5.5. Especialización/Generalización
3
Documento Nacional de Identificación, DNI.
Muy bien, ¡felicitaciones! hemos completado la quinta unidad, Siga adelante con el
mismo entusiasmo. Para complementar esta unidad, es momento que compruebe
sus avances desarrollando la siguiente autoevaluación.
4
Padlet es un muro digital que puede utilizarse como tablón personal o pizarra colaborativa.
Autoevaluación 5
a. Verdadero
b. Falso
a. Verdadero
b. Falso
a. El diagrama de clases
b. El diagrama de flujo del software a construir
c. La especificación de requisitos de usuario
a. Dependencias funcionales
b. Cardinalidades de las relaciones
c. Claves primarias y foráneas
8. Dentro del proceso de diseño de una base de datos, una técnica arriba-
abajo es la:
a. Generalización
b. Especialización
c. Normalización
a. Conjuntos de entidades
b. Conjuntos de relaciones
c. Claves primaria
d. Claves foráneas
e. Restricciones
a. Superclases y subclases
b. Un conjunto de entidades de fuertes y uno o más conjuntos de
entidades débiles
c. Un conjunto de entidades de nivel superior y uno o más conjuntos de
entidades de nivel inferior
Castro, C. (2017)
primarias de las entidades que está relacionando más los atributos que
pueda tener la relación.
1. Generar una tabla para la superclase y una tabla por cada subclase
heredando el atributo de clave primaria de la superclase, de esta forma:
2. Generar solamente la superclase, para lo cual se genera una sola tabla con
los atributos de la superclase más los atributos de cada subclase, con la
desventaja que tendremos muchos valores nulos en algunas columnas, ya
que si ingresamos una persona que sea empleado tendrá salary pero no
tendrá tot_credits. Quedaría de esta forma:
3. Generar solamente las subclases, con lo que cada subclase heredaría los
atributos de la superclase, de esta forma:
En este caso no existe una regla para conocer qué método de transformación
utilizar, sino que depende de las características del problema a resolver y de la
habilidad y experiencia del diseñador de base de datos.
Podemos optar por guiarnos con una metodología de diseño de base de datos,
como la propuesta por (Connolly y Begg, 2005) en la que tenemos las fases de
diseño conceptual, diseño lógico y diseño físico. Una vez concluido el diseño
lógico, se debe aplicar el proceso de normalización con el objeto de optimizar
nuestro modelo de datos, a través del establecimiento de redundancia mínima.
¿Qué tal ha ido esta actividad? Seguro muy provechosa para su aprendizaje. Vale
la pena que comparta en el muro digital.
El modelo E-R permite que las entidades contengan atributos multivaluados y/o
compuestos y al momento de crear la tabla eliminamos estas subestructuras. Para
el caso de los atributos compuestos, creamos un atributo por cada componente y
para atributos multivaluados creamos una tupla por cada ítem.
Cuando encontramos una entidad que tiene grupos repetitivos, decimos que
está en una forma no normalizada (UNF5). La Tabla 10 muestra un ejemplo de la
tabla Asignación donde se almacena datos de proyectos y empleados con grupos
repetitivos.
5
Forma no normalizada, Unnormalized Form
Para pasar a primera forma normal basta con hacer que cada intersección de
fila y columna contenga uno y un sólo un valor. Esto también se conoce como
dominio atómico. La Tabla 11 muestra la tabla Asignación en 1FN.
Es importante que en cada entidad se defina una clave primaria, para luego definir
las dependencias funcionales con base a esta. Tomando el ejemplo de la tabla
Asignación, de la figura 8, podemos definir la clave primaria como la combinación
de PROJ_NUM y EMP_NUM, que determina al resto de atributos, como muestra:
Como primer paso creamos nuevas tablas para eliminar las dependencias
parciales. Para ello podemos separar cada componente de la clave compuesta
si este genera una dependencia parcial, como si fuera una nueva relación, pero
conservando en la relación original el atributo determinante para que actúe como
clave foránea. Continuando con el ejemplo de la tabla Asignación, quedaría de la
siguiente forma:
Hasta este punto hemos obtenido un modelo de tablas que minimiza los
problemas de redundancia traducidos en anomalías de modificación, además se
puede ya identificar las claves foráneas que sirven para relacionar las tablas.
En este punto todavía pueden persistir anomalías en el modelo de datos, así que
debemos eliminarlas.
La 3ra FN dice que debemos eliminar las dependencias transitivas, por tanto
empezamos por identificar las dependencias transitivas y escribir una copia de
su determinante como clave primaria para una nueva tabla, pero en la tabla
original debe permanecer el determinante para que actúe como clave foránea.
Continuando con el ejemplo de la asignación de empleados a proyectos, quedaría
de la siguiente forma:
Proyectos(PROJ_NUM, PROJ_NAME)
Empleados(EMP_NUM, EMP_NAME, JOB_CLASS)
Cargo(JOB_CLASS ,CHG_HOUR)
Asignación(PROJ_NUM, EMP_NUM, ASSIGN_HOURS)
Una vez eliminada la dependencia transitiva las tablas están en 3ra FN. Existen
otras formas normales, pero generalmente un modelo normalizado hasta la 3FN
ha eliminado al mínimo la redundancia y permitirá trabajar de forma adecuada.
generado y llegados a este punto estamos listos para proceder a la siguiente fase:
el diseño físico.
Muy bien hemos culminado con éxito el desarrollo de las unidades planificadas,
de seguro que su esfuerzo ha valido la pena, pues ya sabe cómo llegar hasta la
fase de diseño lógico de una base de datos. Para complementar esta unidad, es
momento que compruebe sus avances desarrollando la siguiente autoevaluación.
6
Padlet es un muro digital que puede utilizarse como tablón personal o pizarra colaborativa.
Autoevaluación 6
a. Verdadero
b. Falso
a. Al menos en 2FN
b. Con cero redundancia
c. En la forma normal adecuada
a. Determinado
b. Determinante
c. Clave primaria
5. Una tabla que contiene uno o más grupos repetitivos está en:
a. Forma no normalizada
b. 1 FN
c. 2 FN
a. Forma no normalizada
b. 1 FN
c. 2 FN
7. Solucionario
Autoevaluación 1
Pregunta Respuesta Retroalimentación
1 c Al tener datos en varios archivos y no estar relacionados se
dificulta la recuperación de datos que tengan algún tipo de
relación.
2 b Una base de datos representa en conjunto a la información
que maneja o es propiedad de una persona u organización.
El software que gestiona y controla el acceso a los datos es
el SGBD.
Autoevaluación 1
Pregunta Respuesta Retroalimentación
9 b Una base de datos posee varios gestores entre ellos el de
almacenamiento que se encarga, como su nombre lo dice, de
almacenar, actualizar y recuperar datos cuando los usuarios
lo requieran.
10 a, c Un esquema conceptual permite validar que los requisitos de
datos de la organización están contemplados en el esquema,
así como también permite indicar los requisitos funcionales
de la empresa. Recuerde que las características físicas de la
base de datos se deben contemplar en etapas posteriores.
Autoevaluación 2
Pregunta Respuesta Retroalimentación
1 a Una base de datos relacional es un conjunto de tablas que
están relacionadas entre sí mediante claves foráneas y es
precisamente esa característica por lo que se denomina
relacional.
2 c Un ejemplar de relación se denomina al estado en que se
encuentra una relación en un instante determinado.
3 a El término tupla es sinónimo de fila cuando hablamos de
bases de datos relacionales.
4 b El modelo relacional se basa en relaciones (de ahí su
nombre) las cuales físicamente se representan a través de
tablas.
5 a El término atributo es sinónimo de columna cuando hablamos
de base de datos relacionales.
6 a Cada relación debe tener al menos una clave primaria que
identifique las tuplas de forma única.
7 b En cada relación, en el modelo relacional, se debe definir
claves candidatas de entre las cuales se selecciona la clave
primaria.
8 b La operación de selección es muy común. Por lo general
las consultas de datos involucran el cumplimiento de alguna
condición, por ejemplo, edad > 20.
9 c El resultado de una consulta es un conjunto de tuplas que
igualmente forman una relación que no tienen nombre.
10 a Cuando hablamos de base de datos relacionales una de sus
características es que no debe tener valores duplicados.
Autoevaluación 3
Pregunta Respuesta Retroalimentación
1. F En una instrucción SELECT las cláusulas obligatorias son
SELECT y FROM.
Autoevaluación 3
Pregunta Respuesta Retroalimentación
11. V Se puede alterar la tabla mediante ALTER TABLE por ejemplo
para añadir una restricción a nivel de columna que no permita
aceptar valores nulos (NOT NULL).
12. b Al alterar la tabla para incluir un valor por defecto para
una columna, solamente se verán afectadas las siguientes
inserciones a partir de la ejecución del ALTER TABLE.
13. a Se debe aplicar la función SUM() para obtener los totales de
inversión en salarios. Se requiere un JOIN entre tablas para
obtener el nombre del departamento y agrupar mediante
GROUP BY por el nombre del departamento.
14. d SQL tiene comandos para definición de datos (DDL),
manipulación de datos (DML), control de datos (DCL) y
control de transacciones (TCL).
15. c Para actualizar datos de una tabla se requiere comandos
DML.
16. d Los comandos DCL: GRANT y REVOKE asignan privilegios
para manipulación de datos sobre tablas.
17. b Una transacción puede estar compuesta por una o más de
una sentencia SQL que consulta o modifica datos en la base
de datos.
18. b Mediante un rol se puede agrupar privilegios de acuerdo con
las reglas del negocio lo que provoca que la administración
de usuarios sea más fácil.
19. c COMMIT sirve para confirmar los cambios hechos a los datos
con lo cual las modificaciones se graban en disco.
20. a JOIN ON es la sentencia que permite aplicar combinación
(reunión) entre tablas mediante un atributo común.
Autoevaluación 4
Pregunta Respuesta Retroalimentación
1 a, c, f Unión requiere de al menos dos relaciones para poder
ejecutarse. Diferencia requiere al menos dos relaciones para
funcionar y el Producto Cartesiano requiere dos relaciones
para obtener un resultado.
2 b Al ejecutar alguna operación de álgebra o cálculo relacional,
el resultado es un conjunto de tuplas que forman una
relación.
3 a La operación de selección incluye restricciones (condiciones)
que las filas tienen que cumplir para formar parte del
resultado.
4 c Se aplica una proyección debido a que se pide seleccionar
solamente algunas de las columnas disponibles de la tabla y
no incluye ninguna restricción.
5 a El resultado es la combinación de cada una de las tuplas de
la primera relación con todas y cada una de las tuplas de la
segunda relación.
Autoevaluación 4
Pregunta Respuesta Retroalimentación
10 b QBE (Query by Example, consulta mediante ejemplo) es una
técnica visual para elaborar consultas a base de datos que
ayuda a comprender cómo obtener los datos de una base de
datos.
Autoevaluación 5
Pregunta Respuesta Retroalimentación
1 b En la etapa de diseño conceptual se construye el modelo ER
que recoge los requerimientos de datos de la organización.
Los requerimientos de datos provienen en su mayoría de los
usuarios.
2 a La activa participación de los usuarios en la etapa de
diseño conceptual es crucial. Son ellos quienes aportan los
requerimientos que necesitan ser modelados en la base de
datos.
3 a El diseño de una base de datos se dice que no tiene fin
debido a que siempre se puede mejorar o agregar alguna
funcionalidad que requiere ser soportada por la base de
datos. Sucede también que los cambios en los requerimientos
suelen ser constantes por parte de los usuarios.
4 c En un proceso formal de diseño de base de datos siempre se
genera un documento de especificación de requisitos que es
un insumo para el proceso de diseño conceptual de base de
datos.
5 b Las cardinalidades sirven de base para pasar del diseño
conceptual al diseño lógico. Las cardinalidades se basan en
el tipo de relación: 1:n o n:n.
6 b Un tipo de relación n:n siempre genera una tabla intermedia y
sus atributos serán las claves primarias de las entidades que
relaciona más los atributos que tenga la relación.
7 d Todas las alternativas son válidas y se las puede implementar
de acuerdo con las condiciones de modelado del problema a
resolver.
8 b La especialización se dice una técnica de arriba-abajo debido
a que empieza en el concepto más general y se subdivide en
conceptos más específicos. Por ejemplo, la entidad Persona
se puede especializar en Empleado, Profesor, Alumno entre
otros.
9 d Las claves foráneas aparecen cuando pasamos del
diseño conceptual al diseño físico aplicando las reglas de
transformación en base a las cardinalidades.
Autoevaluación 5
Pregunta Respuesta Retroalimentación
10 b La especialización identifica a una superclase de la que se
derivan subclases más especializadas. También se dice
que un subconjunto de entidades de nivel inferior se derivan
de una entidad de nivel superior y también heredan sus
atributos.
Autoevaluación 6
Pregunta Respuesta Retroalimentación
1 b La especificación de las formas de organización de los
archivos y las estructuras de almacenamiento se hace en la
fase de diseño físico.
2 c Generalmente el proceso de normalización llega hasta la 3FN
y la redundancia no se puede eliminar sino minimizar.
3 b La redundancia ocasiona anomalías de actualización. Esto
quiere decir, por ejemplo, cuando se actualiza algún dato no
se puede actualizar solamente en un sitio centralizado, sino
que se debe actualizar en todas las ubicaciones donde exista
ese dato, corriendo el riesgo de que en algún sitio el dato no
se actualice y por lo tanto los datos se vuelvan inconsistentes.
4 b Determinante pues determina al valor que se encuentra al
lado derecho de la flecha.
5 a Una forma no normalizada contiene grupos repetitivos de
datos y es el punto desde donde se aplica la 1FN.
6 b La normalización se basa en las dependencias funcionales
y una dependencia funcional es la relación entre atributos,
por tanto, al agrupar atributos estamos identificando las
relaciones que componen la base de datos.
7 b El 1FN ya no tenemos grupos repetitivos, sino que tenemos
un valor atómico en el dominio de cada atributo, esto quiere
decir que son valores indivisibles.
8 b La regla dice que cuando se presenta un tipo de relación 1:m
se propaga (duplica) la clave principal de la entidad que tiene
cardinalidad mínima hacia la entidad que tiene cardinalidad
máxima.
9 c La regla dice que cuando se presenta un tipo de relación m:m
se debe crear una tabla intermedia formada por los atributos
de clave primaria de las entidades que está relacionando.
Autoevaluación 6
Pregunta Respuesta Retroalimentación
10 a La regla dice que cuando se presenta un tipo de relación 1:m
se propaga (duplica) la clave principal de la entidad que tiene
cardinalidad mínima hacia la entidad que tiene cardinalidad
máxima.
8. Glosario
▪▪ LDD (se utiliza las siglas en inglés DDL): Lenguaje de Definición de Datos
(Data Definition Language)
9. Referencias Bibliográficas
10. Anexos
• Hotel (hotelNo,hotelName,city)
• Room (roomNo,hotelNo,type,price)
• Guest (guestNo,guestName,guestAddress)
• Booking (hotelNo,guestNo,dateFrom,dateTo,roomNo)
Hotel
Room
Guest
Booking
www.utpl.edu.ec
ÁREA
sociohumanística