Construcción de bases de datos - Etapa de Transferencia
John Esteban Velásquez León
Julián Estiven Orozco Muñoz
Ingeniería de Sistemas, Fundación Universitaria Compensar
Profesor:Cristian Alejandro Amaya Fernandez
Mayo 30, 2024
Ucompensar
Bogotá
Índice
1. Con el fin de entender los conceptos fundamentales de la asignatura, se debe:
• Realizar los conceptos básicos de creación de bases de datos, tablas como,
particiones y relaciones.
• Utilizar ejemplos útiles para crear los diferentes esquemas de bases de datos.
Ejercicio 1. (Individual)
Diseña un modelo entidad-relación para una biblioteca. La biblioteca debe llevar un
registro de libros, autores, préstamos y socios. Cada libro tiene un título, un número
de ISBN único y una cantidad disponible en inventario. Los autores tienen un nombre,
una fecha de nacimiento y una nacionalidad. Los préstamos se realizan a los socios de
la biblioteca y deben incluir la fecha de inicio y la fecha de vencimiento. Cada socio
tiene un nombre, un número de socio y una dirección de correo electrónico. Los
socios pueden tomar prestados varios libros a la vez.
Ejercicio 2. (Individual)
Diseña un modelo entidad-relación para un sistema de gestión de una tienda en línea.
La tienda en línea debe llevar un registro de productos, clientes, pedidos y categorías
de productos. Cada producto tiene un nombre, un precio, una descripción y una
cantidad en stock. Los clientes tienen un nombre, una dirección de envío y un número
de teléfono de contacto. Los pedidos deben incluir la fecha de compra y pueden
contener varios productos. Cada categoría de productos tiene un nombre y puede
contener múltiples productos.
2. Dando continuidad al proyecto que dio solución en actividad 2 mediante el diseño del
diagrama entidad relación, en esta etapa del curso debes aplicar la normalización
hasta la tercera forma normal y la construcción de Diagrama Relacional definitivo.
VER ESTUDIO DE CASO
1. Aplicar la primer, segunda y tercera forma normal (1FN, FN, 3FN) al diseño
2. Construcción del Diagrama Relacional Definitivo
3. Construir una base de datos (tablas, registros, consulta sencilla en un gestor de
bases de datos).
ESTUDIO DE CASO:
El proyecto de estudio se basa en la continuidad de la actividad 2, aquí se da
paso a realizar un proceso revisión ajustes en normalización del modelo y
construcción del Diagrama Relacional definitivos (identificando las tablas,
relaciones, llaves primarias y foráneas.). Posteriormente e procede a
interactuar con un gestor de bases de datos que permite la creación del
esquema de la base de datos. Sugeridos (MYSQL Online XAMMP).
1. Crear Diseño Bases de Datos.
• Diseña un modelo entidad-relación para una empresa de entretenimiento que
se dedica a la producción de películas y series de televisión.
• La empresa necesita llevar un registro de actores, directores, películas,
episodios de series, personajes y premios.
• Cada actor tiene un nombre, fecha de nacimiento, género y número de
teléfono.
• Cada director tiene un nombre, fecha de nacimiento y número de películas
dirigidas.
• Las películas tienen un título, año de lanzamiento y género. Los episodios de
series tienen un número de episodio, título y duración.
• Cada película y episodio de serie puede contener varios personajes.
• Los personajes tienen un nombre y una descripción.
• Además, se desea llevar un registro de los premios que han ganado los
actores y directores, incluyendo el nombre del premio y la fecha.
Desarrollo de la Actividad
PARTE 1
RTA:
Ejercicio 1. (Individual) JOHN ESTEBAN VELASQUEZ
Diseñar el modelo Entidad Relación para una biblioteca:
● Organización de los atributos por entidad para uso posterior del modelo
entidad relaciòn:
● Diagrama Entidad Relación:
Realizado en LucidChart
Ejercicio 2. (Individual) JULIAN ESTIVEN OROZCO
Diseñar el modelo Entidad Relación para una tienda en línea:
● Organización de los atributos por entidad para uso posterior del modelo
entidad relaciòn:
● Diagrama Entidad Relación:
Realizado en LucidChart
PARTE 2
RTA:
Paso 1: Modelo Entidad-Relación Inicial:
Relaciones:
Actúa entre Actor y Personaje (n)
Dirige entre Director y Película (1)
Aparece entre Personaje y Película o Episodio (n)
Gana entre Actor/Director y Premio (n)
Paso 2: Normalización:
● Primera Forma Normal (1FN)
Todos los atributos deben ser simples o atómicos
● Segunda Forma Normal (2FN)
Debe cumplir con 1FN.
Eliminar dependencias parciales; todos los atributos no clave deben depender de toda
la clave primaria.
Todas las entidades están ya en 2FN, ya que no hay dependencias parciales.
● Tercera Forma Normal (3FN)
Debe cumplir con 2FN.
Eliminar dependencias transitivas; los atributos no clave no deben depender de otros
atributos no clave.
Paso 3: Construcción del Diagrama Relacional Definitivo
● Organización de los atributos por entidad para uso posterior del modelo
entidad relaciòn:
● Diagrama Entidad Relación Definitivo:
Realizado en LucidChart
Paso 4: Creación de la Base de Datos en un Gestor de Bases de Datos (MySQL)
● Crear Tablas:
CREATE TABLE Actor (
ActorID INT PRIMARY KEY,
Nombre VARCHAR(100),
FechaNacimiento DATE,
Genero VARCHAR(50),
Telefono VARCHAR(20)
);
CREATE TABLE Director (
DirectorID INT PRIMARY KEY,
Nombre VARCHAR(100),
FechaNacimiento DATE,
NumeroPeliculasDirigidas INT
);
CREATE TABLE Película (
PeliculaID INT PRIMARY KEY,
Titulo VARCHAR(100),
AñoLanzamiento INT,
Genero VARCHAR(50)
);
CREATE TABLE Episodio (
EpisodioID INT PRIMARY KEY,
NumeroEpisodio INT,
Titulo VARCHAR(100),
Duracion INT
);
CREATE TABLE Personaje (
PersonajeID INT PRIMARY KEY,
Nombre VARCHAR(100),
Descripcion TEXT
);
CREATE TABLE Premio (
PremioID INT PRIMARY KEY,
NombrePremio VARCHAR(100),
Fecha DATE
);
CREATE TABLE Actúa (
ActorID INT,
PersonajeID INT,
PRIMARY KEY (ActorID, PersonajeID),
FOREIGN KEY (ActorID) REFERENCES Actor(ActorID),
FOREIGN KEY (PersonajeID) REFERENCES Personaje(PersonajeID)
);
CREATE TABLE Dirige (
DirectorID INT,
PeliculaID INT,
PRIMARY KEY (DirectorID, PeliculaID),
FOREIGN KEY (DirectorID) REFERENCES Director(DirectorID),
FOREIGN KEY (PeliculaID) REFERENCES Película(PeliculaID)
);
CREATE TABLE Aparece (
PersonajeID INT,
PeliculaID INT,
EpisodioID INT,
PRIMARY KEY (PersonajeID, PeliculaID, EpisodioID),
FOREIGN KEY (PersonajeID) REFERENCES Personaje(PersonajeID),
FOREIGN KEY (PeliculaID) REFERENCES Película(PeliculaID),
FOREIGN KEY (EpisodioID) REFERENCES Episodio(EpisodioID)
);
CREATE TABLE Gana (
PersonaID INT,
PremioID INT,
PRIMARY KEY (PersonaID, PremioID),
FOREIGN KEY (PersonaID) REFERENCES Actor(ActorID) OR REFERENCES
Director(DirectorID),
FOREIGN KEY (PremioID) REFERENCES Premio(PremioID)
);
Evidencia en Herramienta SQL:
Realizado en sqliteonline.com
● Insertar Registros de Ejemplo:
INSERT INTO Actor (ActorID, Nombre, FechaNacimiento, Genero, Telefono) VALUES
(1, 'Brad Pitt', '1963-12-18', 'Masculino', '555-1234'),
(2, 'Angelina Jolie', '1975-06-04', 'Femenino', '555-5678');
INSERT INTO Director (DirectorID, Nombre, FechaNacimiento, NumeroPeliculasDirigidas) VALUES
(1, 'Doug Liman', '1965-07-24', 5),
(2, 'Quentin Tarantino', '2063-03-27', 8);
INSERT INTO Película (PeliculaID, Titulo, AñoLanzamiento, Genero) VALUES
(1, 'Sr y Sra Smith', 2005, 'Aventura'),
(2, 'Había una vez en Hollywood', 2019, 'Aventura');
INSERT INTO Episodio (EpisodioID, NumeroEpisodio, Titulo, Duracion) VALUES
(1, 1, 'Primera Parte', 90),
(2, 2, 'Primera Parte', 105);
INSERT INTO Personaje (PersonajeID, Nombre, Descripcion) VALUES
(1, 'Heroe', 'El protagonista valiente'),
(2, 'Villano', 'El antagonista malvado');
INSERT INTO Premio (PremioID, NombrePremio, Fecha) VALUES
(1, 'Mejor Actor', '2023-03-15'),
(2, 'Mejor Director', '2023-03-15');
INSERT INTO Actúa (ActorID, PersonajeID) VALUES
(1, 1),
(2, 2);
INSERT INTO Dirige (DirectorID, PeliculaID) VALUES
(1, 1),
(2, 2);
INSERT INTO Aparece (PersonajeID, PeliculaID, EpisodioID) VALUES
(1, 1, NULL),
(2, NULL, 1);
INSERT INTO Gana (PersonaID, PremioID) VALUES
(1, 1),
(2, 2);
Evidencia en Herramienta SQL:
Realizado en sqliteonline.com
● Consultas:
SELECT * FROM Actor;
SELECT Película.Titulo
FROM Película
INNER JOIN Dirige ON Película.PeliculaID = Dirige.PeliculaID
WHERE Dirige.DirectorID = 1;
SELECT Personaje.Nombre
FROM Personaje
INNER JOIN Aparece ON Personaje.PersonajeID = Aparece.PersonajeID
WHERE Aparece.PeliculaID = 1;
SELECT Premio.NombrePremio, Premio.Fecha
FROM Premio
INNER JOIN Gana ON Premio.PremioID = Gana.PremioID
WHERE Gana.PersonaID = 1;
Realizado en sqliteonline.com
Conclusiones:
● Mediante los ejemplos de la Biblioteca, Tienda Virtual y finalmente con los
datos de películas se puede conocer muchos atributos que sin estudiarlos no se
encontraron tan sencillamente es bueno analizar cada elemento para desglosar
cada columna o entidad y asi poder mirar en cualquier ejemplo del mercado
como organizar la información y además como usarla para entender como
realizar un proceso.
● Conocer nuevas herramientas como las vistas para el uso de SQL son de gran
ayuda para aprender nuevas funcionalidades y formas de tratar los datos y
poder entender un poco mejor su estructura.
● Los diagramas de relaciòn y su aprendizaje de cómo usarlos en las
herramientas expuestas, ayudarlos a identificar los aspectos más relevantes
para organizar la informaciòn para creaciòn de bases de datos mediante
entidades y atributos para luego categorizarlos en tipos de datos (texto,
enteros, flotantes, fecha), esta información u forma de recopilar datos ha sido
muy útil en el aprendizaje.
BIBLIOGRAFÍA
(S/F) LucidChart - ¿Que es un diagrama entidad relación
https://www.lucidchart.com/pages/es/que-es-un-diagrama-entidad-relacion
(S/F) Wikipedia - Modelo entidad-relación
https://es.wikipedia.org/wiki/Modelo_entidad-relaci%C3%B3n
(S/F) MySql Online - Para colocar datos
https://sqliteonline.com/
(S/F) LucidChart - Para realizar modelos
https://lucid.app/lucidchart