RECINTO UNIVERSITARIO “RUBÉN DARÍO”
FACULTAD EDUCACIÓN E IDIOMAS
DEPARTAMENTO TECNOLOGÍA EDUCATIVA
Bases de Datos
Compilación
Elaborado: Carlos Alberto Rosales Carranza
Mayo, 2019
Introducción
Iniciaremos primeramente abordando sobre modelo de datos, el cual corresponde al
conjunto de herramientas conceptuales para describir los datos como es: la conformación
de entidades, las relaciones, semántica y restricciones.
Por tanto el hablar de modelo de datos es referirse a la estructura lógica de cómo se
estructura un esquema de bases de datos. Los modelos de datos se clasifican en
Modelo Entidad Relación: se basa en la percepción del mundo real, que consiste en
una colección de objetos básicos llamados entidades y las relaciones existente entre
ellos. Una entidad es una representación (cosas u objeto), que tiene características y
que se puede almacenar. Es uno de los modelos más usados en bases de datos,
sobre al iniciar el aprendizaje de bases de datos. Para representar el modelo se usan
rectángulos (indica las entidades) rombos y líneas (indica la relación o unión).
Modelo Relacional: se basa en la colección de tablas para representar tanto los
datos como sus relaciones, denominado también modelo basado en registro. Las
tablas se componen de filas y columnas y es ampliamente usado, luego de entender
el modelo Entidad Relación, el modelo Relacional es el siguiente nivel de trabajo.
El proceso es el mismo que el modelo E-R, las claves se propagan a la otra tabla y
se convierten en claves extrajeras FK
Modelo de datos Orientados a Objetos: es un modelo que está tomando creciente
uso, es una continuación del modelo Entidad-Relación y aborda los conceptos de
encapsulación, métodos (funciones), y la identidad de los objetos.
Modelo de datos semiestructurados: permite la especificación de datos donde los
elementos de datos individuales del mismo tipo pueden tener diferentes conjuntos
de atributo. Esto lo diferencia de los modelos de datos mencionados anteriormente,
en los que cada elemento de datos de un tipo particular debe tener el mismo
conjunto de atributos. El lenguaje XML, se emplea para representar datos semi
estructurado.
Contenido
Conceptos, historia, abstracción y modelos de base de datos:
• Conceptos de base de datos: Qué es una Base de Datos, propósitos,
lenguajes, usuarios y visión de bases de datos.
• Características y arquitectura de sistemas gestores de bases de datos.
LECTURA INICIAL
Dolors Costal Costa en su documento Introducción al diseño de las Bases de datos
menciona.
El modelo entidad relación es un ejemplo de lo que se llama modelo semántico y se usa
ampliamente para el diseño conceptual. Se basa en la identificación de objetos llamados
entidades, que son representaciones de objetos reales del mundo real. Las entidades se
describen mediante sus atributos y se conecta mediante relaciones. Las entidades se
describen como personas, lugares, eventos, objetos o conceptos acerca de los cuales se
recopilan datos. El modelo E-R también permite expresar las restricciones sobre las
entidades o relaciones.
Una de las características más útiles y atractivas del modelo E-R es que proporciona un
método gráfico para mostrar la estructura conceptual de la base de datos, sin embargo
debemos aplicar más etapas de diseño de bases de datos hasta crear la estructura
relacional y tablas.
Etapas del diseño de una Base de Datos:
Reglas para la transformación del modelo entidad-relación al modelo relacional análisis
de propagación.
Modelo Entidad Relación
El modelo Entidad Relación es uno de los diferentes modelos de datos semánticos, el aspecto
semántico radica en la representación del significado de los datos.
Elementos
Entidades: Una entidad es Una Cosa u objeto del mundo Real.
Atributos: Forman a la entidad, refieren a las características que detallan a la entidad
Relaciones: es la asociación entre varias entidades, espefica el rol con respecto a la otra
entidad
Restricciones:
o Correspondencia de cardinalidad: Uno a uno, Uno a muchos, muchos a muchos
o Claves: Es el que permite identificar de manera única cada valor de entidad. En la
entidad Misma.
o En el grado de participación entre las entidades también es una restricción Si es
total significa que se da cuando el grado de al menos una participación ocurre una
entidad a otra y es parcial si solo algunas de las relación se establece en otra
entidad.
Ejemplo
Un estudiante al menos se matricula en Una asignatura (TOTAL)
Un estudiante tiene o no tiene beca (PARCIAL)
Reglas de propagación
Para transformar un modelo entidad-relación a modelo relacional seguiremos las
siguientes reglas:
Toda entidad del modelo entidad-relación se transforma en una tabla.
Cualquier atributo de una entidad se transforma en un campo dentro la tabla,
manteniendo las claves primarias.
Las relaciones N:M se transforman en una nueva tabla que tendrá como clave
primaria la concatenación de los atributos clave de las entidades que relaciona.
En las relaciones 1:N se pueden tener dos casos:
o Si la entidad que participa con cardinalidad máxima uno lo hace también
con cardinalidad mínima uno, entonces se propaga el atributo de la entidad
que tiene cardinalidad máxima 1 a la que tiene cardinalidad máxima N,
desapareciendo el nombre de la relación. Si existen atributos en la relación
éstos también se propagarán.
En el caso de las relaciones 1:1 también pueden darse dos casos:
o Si las entidades poseen cardinalidades (0,1), la relación se convierte en una
tabla.
o Si una de las entidades posee cardinalidad (0,1) y la otra (1,1), conviene
propagar la clave de la entidad con cardinalidad (1,1) a la tabla resultante
de la entidad con cardinalidad (0,1). Si ambas entidades poseen
cardinalidades (1,1) se puede propagar la clave de cualquiera de ellas a la
tabla resultante de la otra.
En el caso de las relaciones N-arias se aplica la misma regla que para las relaciones
N:M
En el caso de las relaciones reflexivas supondremos que se trata de una relación
binaria con la particularidad que las dos entidades son iguales y aplicaremos las
reglas vistas en los puntos anteriores.
Veamos algunos ejemplos.
Relaciones N:M
Supongamos el siguiente modelo entidad-relación.
En este caso la relación “compra” se
transforma en una nueva tabla cuya
clave primaria estará formada por los
atributos dni, que es la clave primaria
de cliente, y código, que es la clave
primaria de producto. Además tendrá
como campo fecha compra, ya que
este atributo forma parte de la relación.
El modelo relacional quedaría de la siguiente forma (en negrita las claves primarias):
CLIENTE(dni,nombre,apellidos)
PRODUCTO(código,descripción)
COMPRAS(dni_cliente,código_producto,fecha_compra)
Relaciones 1:N
Veamos ahora el caso de una
relación 1:N. En el siguiente
modelo entidad-relación un
empleado pertenece a un único
departamento (debe pertenecer a
uno obligatoriamente), y un
departamento tiene 1 o más
empleados.
En este caso se propaga el atributo código de departamento a la tabla EMPLEADO. El
modelo relacional quedaría de la siguiente manera:
EMPLEADO(dni,nombre,salario,codigo_departamento)
DEPARTAMENTO(codigo,nombre,localizacion)
Relaciones 1:1
Veamos ahora el caso de una relación 1:1 a través del siguiente ejemplo. En el siguiente
modelo entidad-relación un equipo de fútbol tiene a un único presidente y un presidente
preside a un único club de fútbol.
En este ejemplo, tal y como dicen las
reglas, podemos propagar la clave de
cualquier tabla a la tabla resultante de
la otra. Es decir, tenemos dos
opciones, o mover la clave de
PRESIDENTE a EQUIPO o mover la
clave de EQUIPO a PRESIDENTE. El
modelo relacional podría quedar de
cualquiera de las dos formas siguientes:
EQUIPO(código,nombre,año_fundación)
PRESIDENTE(dni,nombre,código_equipo)
EQUIPO(código,nombre,año_fundación,dni_presidente)
PRESIDENTE(dni,nombre)
Relaciones reflexivas
Veamos ahora como quedaría en el modelo
relacional la siguiente relación reflexiva. En
el siguiente modelo entidad-relación un
ALUMNO es delegado de varios ALUMNOS y
un ALUMNO tiene obligatoriamente un
delegado y sólo a uno.
Como podemos observar en las reglas de
transformación, en este caso la relación
reflexiva se trata como si fuera una relación binaria con la particularidad de que las dos
entidades son iguales. Al tratarse de una relación 1:N se propagará la clave de la entidad
ALUMNO a la entidad ALUMNO, quedando el modelo relacional de la siguiente forma:
ALUMNO(num_expediente,nombre,num_expediente_delegado)
A partir de las reglas anteriores se puede construir de manera el modelo
Entidad Relación a modelo Relacional:
Este diagrama generaría el diseño lógico de alto nivel
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `BDViajes` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `BDViajes` ;
-- -----------------------------------------------------
-- Table `mydb`.`Ciudad`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `BDViajes`.`Ciudad` (
`nombreCiudad` VARCHAR(50) NOT NULL,
PRIMARY KEY (`nombreCiudad`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Viaje`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `BDViajes`.`Viaje` (
`idViaje` INT NOT NULL,
`Viajecol` VARCHAR(45) NULL,
PRIMARY KEY (`idViaje`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Recorrido`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `BDViajes`.`Recorrido` (
`Ciudad_nombreCiudad` VARCHAR(50) NOT NULL,
`Viaje_idViaje` INT NOT NULL,
INDEX `fk_Recorrido_Ciudad_idx` (`Ciudad_nombreCiudad` ASC),
INDEX `fk_Recorrido_Viaje1_idx` (`Viaje_idViaje` ASC),
PRIMARY KEY (`Viaje_idViaje`, `Ciudad_nombreCiudad`),
CONSTRAINT `fk_Recorrido_Ciudad`
FOREIGN KEY (`Ciudad_nombreCiudad`)
REFERENCES `mydb`.`Ciudad` (`nombreCiudad`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Recorrido_Viaje1`
FOREIGN KEY (`Viaje_idViaje`)
REFERENCES `mydb`.`Viaje` (`idViaje`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Cliente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `BDViajes`.`Cliente` (
`codigoCliente` INT NOT NULL,
PRIMARY KEY (`codigoCliente`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Reparto`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `BDViajesciudad`.`Reparto` (
`paq_car` INT NULL,
`paq_desc` VARCHAR(45) NULL,
`Cliente_codigoCliente` INT NOT NULL,
`Recorrido_Viaje_idViaje` INT NOT NULL,
`Recorrido_Ciudad_nombreCiudad` VARCHAR(50) NOT NULL,
INDEX `fk_Reparto_Cliente1_idx` (`Cliente_codigoCliente` ASC),
PRIMARY KEY (`Cliente_codigoCliente`, `Recorrido_Viaje_idViaje`, `Recorrido_Ciudad_nombreCiudad`),
INDEX `fk_Reparto_Recorrido1_idx` (`Recorrido_Viaje_idViaje` ASC, `Recorrido_Ciudad_nombreCiudad` ASC),
CONSTRAINT `fk_Reparto_Cliente1`
FOREIGN KEY (`Cliente_codigoCliente`)
REFERENCES `mydb`.`Cliente` (`codigoCliente`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Reparto_Recorrido1`
FOREIGN KEY (`Recorrido_Viaje_idViaje` , `Recorrido_Ciudad_nombreCiudad`)
REFERENCES `mydb`.`Recorrido` (`Viaje_idViaje` , `Ciudad_nombreCiudad`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Modelo Relacional
Este modelo como lo abordamos en la introducción es el modelo de tablas, todo el diseño Entidad
Relación luego lo convertimos a tabla. El resultado en el SGBD Workbench
Ciudad
Viaje
Recorrido
Reparto
Cliente
EJEMPLOS
a) Identificando la entidad con sus atributos, relaciones, y restricciones:
Un cliente es prestatario de un préstamo.
Muchos préstamos pueden ser prestados por un cliente
b) Representación de una relación con entidad débil. Uno a muchos
Un pago se abona a un prestamo
Muchos pagos se abonan a un prestamo
La entidad débil se asocia al préstamo
c) Descripción de un mundo real #1
A partir del siguiente enunciado se desea realizar el modelo entidad-relación.
“Se desea informatizar la gestión de una empresa de transportes que reparte paquetes por
toda España. Los encargados de llevar los paquetes son los camioneros, de los que se
quiere guardar el dni, nombre, teléfono, dirección, salario y población en la que vive.
De los paquetes transportados interesa conocer el código de paquete, descripción,
destinatario y dirección del destinatario. Un camionero distribuye muchos paquetes, y un
paquete sólo puede ser distribuido por un camionero.
De las provincias a las que llegan los paquetes interesa guardar el código de provincia y
el nombre. Un paquete sólo puede llegar a una provincia. Sin embargo, a una provincia
pueden llegar varios paquetes.
De los camiones que llevan los camioneros, interesa conocer la matrícula, modelo,
tipo y potencia. Un camionero puede conducir diferentes camiones en fechas
diferentes, y un camión puede ser conducido por varios camioneros”.
Resultado del esquema:
Su modelo relacional sería:
CAMIONERO(dni, nombre, dirección,tfno,salario,poblacion)
CAMION(matricula,potencia,modelo,tipo)
PAQUETE(codigo,descripción,destinatario,dirección,codigoprov)
PROVINCIA(codigoprov,nombre)
Modelo Extendido
Modelo Entidad – Relación- Extendido. ERE
El modelo extendido es una característica del modelo entidad-relación para representar
característica del modelo orientado a objeto. Las características a estudiar son la
especialización, generalización, conjunto de entidades de nivel superior e inferior,
herencia de atributos y agregación.
Especialización Es el resultado de tomar un subconjunto de un conjunto de
entidades de un nivel superior para formar un conjunto de
entidades de nivel inferior
Generalización Es el resultado de tomar la unión de dos o más conjuntos disjunto
de entidades (de nivel inferior) para producir un conjunto de
entidades de nivel superior.
Herencia Es una propiedad que permite que los atributos del conjunto de
entidades de nivel superior se hereden al conjunto de entidades
de nivel inferior.
Los conjuntos de entidades de nivel superior e inferior también se pueden denominar con
los términos superclase y subclase.
Analizando el siguiente problema:
Ejemplo #1: “La BD de una universidad almacena información sobre todos sus
miembros. De cualquier persona se almacena su nombre, dirección, teléfono y
email. Los profesores además tienen el departamento al que pertenecen y su
dedicación, además de los centros en los que imparten clase. Los alumnos están
matriculados en un único centro y tienen un número de expediente y la titulación en
la que están matriculados. Del personal se almacena la unidad administrativa a la
que pertenecen y su categoría profesional.”
Como primer paso identificamos las entidades
Persona,
Profesores
Alumnos
Personal
Sin embargo notamos que la entidad persona es muy general, por lo que tanto
Profesores, Alumnos y Personal son un tipo de persona, éste análisis es propio del
modelo especialización Generalización y su representación en Esquema E-R seria:
Podemos notar que las entidades se han convertido en una dependencia de una clase
general Persona que corresponde a la entidad o clase superior. Así las entidades
Profesor, Alumno, Personal son las entidades o subclases inferiores que dependen por
la propiedad Generalización o Especialización de la entidad o superclase Persona, es así
que también las propiedades o atributos de la clase superior pasan a heredarse a las
subclases o se refieren a los mismos atributos. En este particular podemos ver que todos
los atributos de la entidad Persona pertenecen a los mismos de cada subentidad:
Profesor, Alumno y Personal. Por otra parte podemos notar que los atributos de cada
subentidad también poseen sus propios atributos que los identifica, asi por ejemplo la
entidad Profesor presenta sus atributos propios como Dedicacion y Departamento.
Desafortunadamente, no existe una terminología estándar para estos conceptos. Por lo
que se usará la terminología más empleada hasta estos momentos.
OTRA FORMA DE REPRESENTAR SUBCLASES, SUPERCLASES Y
ESPECIALIZACIÓN.
Subclases y Superclases. En varios casos, un tipo de entidad tiene varios subgrupos de
sus entidades y necesitan ser representados explícitamente porque así lo solicitan los
requerimientos de la base de datos.
Por ejemplo, los tipos de entidad que son miembros el tipo de entidad EMPLEADO
pueden ser agrupados en SECRETARIA, INGENIERO, TECNICO, ADMINISTRADOR,
etc., etc., el conjunto de tipos entidad es un subconjunto de los tipos de entidad que
pertenecen a EMPLEADO. Cada entidad pertenece a uno de los subgrupos y además es
un empleado. Se conocerá a éste subgrupo como SUBCLASE del tipo de entidad
EMPLEADO, y EMPLEADO se conoce como SUPERCLASE de estas subclases.
La relación CLASE/SUBCLASE es a veces conocida como una relación ES UN porque
nosotros decimos “un INGENIERO ES UN EMPLEADO” o “ una SECRETARIA ES UNA
EMPLEADA”, etc.
Una entidad no puede existir en una base de datos solo porque es miembro de una
subclase, debe ser también miembro de la superclase. Sin embargo, no es necesario que
toda entidad que pertenezca a una superclase sea miembro de alguna subclase.
La herencia en los atributos. Ya que una entidad de una subclase representa la misma
entidad de la superclase, poseerá atributos específicos que pertenecen a la subclase y
atributos que son parte de la superclase. Toda entidad que es miembro de una subclase
hereda todos los atributos de la superclase. Observe que una subclase, junto con todos
los atributos que hereda de la superclase, es ya un tipo de entidad por propio derecho.
Especialización. La especialización es el proceso de definir un conjunto de subclases de
un tipo de entidad llamada la superclase. El conjunto de subclases que forma una
especialización se define sobre la base de algunas características que lo distinguen de
otras especializaciones dentro de la misma superclase. Por ejemplo, el conjunto de
subclases {SECRETARIA, INGENIERO, TECNICO} es una especialización de la
superclase EMPLEADO, otra especialización puede ser {EMPLEADO_ASALARIADO,
EMPLEADO_POR_DESTAJO}; esta especialización distingue a los empleados basado en
el método de compensación.
Generalización.
La especialización discutida en la sección anterior nos permite:
• Definir un conjunto de subclases de un tipo de entidad.
• Asociar atributos específicos a cada subclase.
• Establecer tipos de relación adicionales entre subclases y entre cada subclase y
otros tipos de entidad u otras subclases.
Se puede pensar en un proceso de reversa en el cual se suprimen las diferencias sobre
varios tipos de entidad y se identifican sus rasgos comunes, y se generalizan a una
superclase del cual un tipo de entidad es una subclase en especial. Por ejemplo,
considere los tipos de entidad CAMIONETA y AUTO, ambos pueden ser generalizados a
un tipo de entidad VEHICULO. Se entiende como generalización al proceso de definir un
tipo de entidad generalizado a partir de tipos de entidades que se pueden agrupar.
La generalización puede ser vista como la inversa de la especialización.
La “d” en el círculo de la figura 1 indica “disjunto”, esto indica que una entidad solo puede
pertenecer a una de las subclases ahí indicada. Si no existe la restricción de disyunción,
entonces existe la restricción de sobre posición; esto es, la misma entidad puede
pertenecer a más de una subclase de la especialización. En este caso se colocará una “o”
en el circulo (de overlap).
En una especialización, la participación puede ser parcial o total. La participación total
indica que para toda entidad en la superclase debe ser miembro de una subclase dentro
de la especialización. Por ejemplo, en la figura 1, todo empleado tiene que ser o
asalariado o contratado por horas y se mostrará como doble línea en el modelo ERE. Una
línea simple indicará especialización parcial. De esta forma, se tienen cuatro tipos de
especialización:
• Disjunto, total
• Disjunto, parcial
• Sobrepuesto, parcial
• Sobrepuesto, total.
Ejemplo #2: Sea la entidad PERSONA de los funcionarios y estudiantes de Una
Universidad. Se puede definir sub-entidades como ACADÉMICO.
DMINISTRATIVO, ESTUDIANTES de la super – entidad PERSONA. Así mismo se
puede ver la Entidad ACADEMICO como super-entidad de las entidades DOCENTE
e INVESTIGADOR según se aprecia en la siguiente figura
Así por ejemplo PERSONA una super-entidad y ESTUDIANTE una sub-entidad.
se heredan todos los atributos de PERSONA a ESTUDIANTE. Los atributos
propios de ESTUDIANTE no pueden ser heredados a PERSONA.
En una herencia, como los objetos de la super-entidad y sus sub-entidades son los
mismos del mundo real, la llave primaria de la super-entidad se hereda a las sub-
entidades y será la llave primaria de las mismas.
PERSONA
cedula pNombre Direccion
ESTUDIANTE
cedula codigoCarrera TipoBeca annioIngreso
En el análisis anterior podemos ver un resultado del modelo E-R al modelo
Relacional (Tablas). En este caso el conjunto de atributos que caracteriza a la
entidad ESTUDIANTE es la unión de los atributos de PERSONA y sus propios
atributos.
COMPOSICIÓN
Otra herramienta que se utiliza para administrar la abstracción y la complejidad en
los sistemas se conoce como composición o agregación.
En una composición, la idea es que se pueden reunir varias entidades de un
mismo nivel en una nueva entidad de n nivel superior. En este caso, la entidad de
nivel superior llamada compuesto, se determina por medio de las entidades del
nivel inferior, llamadas componentes.
Ejemplo #3 Si se considera la entidad AVION, que representa los aviones en
construcción de una compañía de aviones, esta puede ser constituida a partir de
otras entidades, por ejemplo: MOTOR, ASIENTO Y FUSELAJE, según se aprecia en
la siguiente figura:
En este caso se observa que hay tres módulos principales que agrupados originan
a la super-entidad AVION. Igual se propaga la clave primaria que se comparte de
las sub-entidades a la super-entidad.
Una composición puede traducirse por medio de la expresión “es parte de”. Así
por ejemplo, un asiento es parte de un avión.
Con respecto a las llaves para cada una de las entidades en una composición, en
el capítulo 6 referente a la metodología de diseño, explica cómo traducir una
composición en relaciones mediante la creación de una nueva relación, en dónde
la llave primaria es la del compuesto y los atributos no llave serán las llaves
primarias de los componentes.
El siguiente esquema representa el ejemplo del alquiler de vehículos de una
Compañía dedicada a esta actividad.
Explicación de relaciones:
Un cliente contrata el alquiler de vehículo.
Un agente realiza de uno a muchos contrato de alquiler de vehículo
Un automóvil es parte de muchos vehiculos
Un camión es parte de muchos vehiculos
Un bus es parte de muchos vehículos
Un vehículo tiene una revisión
Bibliografía
Silberschatz, A., Korth, H,. y Sudarshan, S (2002). Fundamentos
de Bases de Datos. McGraw Hill