V2#

Instrucciones#

A continuación, se detalla un examen práctico de normalización y modelado de una base de datos relacional, utilizando una tabla de películas de superhéroes. Sigue cuidadosamente cada paso y completa las tareas requeridas.

Tiempo máximo: 2 horas.

Contexto#

La siguiente tabla contiene información sobre Videojuegos Populares. La tabla original tiene problemas de diseño, incluyendo redundancia, no atomicidad y dependencias transitivas. Utilizaremos este contenido para realizar el proceso de normalización hasta la Tercera Forma Normal (3FN).

Título del Juego

Género

Año de Lanzamiento

Desarrollador

Sede del Desarrollador

Personajes Principales

Plataformas

Calificación

Fortnite

Battle Royale, Acción

2017

Epic Games

Cary

Jonesy, Peely, Drift

PC, PS4, Xbox, Switch

8.4

Minecraft

Sandbox, Aventura

2011

Mojang Studios

Estocolmo

Steve, Alex, Creeper

PC, PS4, Xbox, Switch, Móvil

9.5

League of Legends

MOBA, Estrategia

2009

Riot Games

Los Ángeles

Ahri, Jinx, Yasuo, Lux

PC

9.2

Genshin Impact

RPG, Aventura

2020

miHoYo

Shanghai

Lumine, Aether, Venti, Zhongli

PC, PS4, PS5, Móvil

8.8

Among Us

Multijugador, Estrategia

2018

InnerSloth

Redmond

Crewmate, Impostor

PC, PS4, Xbox, Switch, Móvil

7.5

Tareas#

Parte 1: Normalización hasta la Tercera Forma Normal (3FN)#

Objetivo: Llevar la tabla hasta la 3FN, eliminando redundancias y asegurando atomicidad.

Nota

Producto: Completa la normalización hasta obtener un conjunto de tablas relacionadas, que representen la estructura normalizada hasta la 3FN.

Parte 2: Implementación en MySQL#

Con las tablas obtenidas en el proceso de normalización:

  1. Creación de Tablas Normalizadas en MySQL:
    Crea las tablas en MySQL siguiendo la estructura obtenida de la normalización. Considera los tipos de datos apropiados para cada columna y define las claves primarias y las relaciones entre tablas.

  2. Población de las Tablas:
    Inserta los datos de la tabla original en las nuevas tablas normalizadas. Asegúrate de no perder información y de representar adecuadamente los datos de columnas con listas, utilizando tablas de ayuda para relaciones de muchos a muchos (por ejemplo, para personajes principales y plataformas de streaming).

  3. Uso de Llaves y Relaciones:

    • Define claves foráneas para establecer relaciones entre tablas.

    • Utiliza correctamente relaciones fuertes y débiles según corresponda.

Nota

Ninguna información debe ser omitida en la transición. Solo puedes agregar tablas de ayuda cuando sea necesario para mantener la integridad de la base de datos.

Parte 3: Modelado con Diagramas EER y ER#

  1. Dibujar el Diagrama ER:
    Representa la base de datos con un diagrama ER usando los símbolos correctos de entidades, relaciones y atributos. Las claves primarias y foráneas deben estar claramente etiquetadas, y se deben distinguir las relaciones fuertes y débiles.

  2. Dibujar el Diagrama EER:
    Crea el Diagrama EER a partir de la base de datos implementada. Realiza la ingeniería inversa para generar el diagrama, asegurándote de que:

    • Todos los elementos del modelo estén correctamente representados.

    • Los tipos de relación (uno a uno, uno a muchos, muchos a muchos) sean precisos y claros.

Truco

Usa software de diseño de bases de datos para los diagramas (Workbrench), asegurándote de mostrar claramente todas las claves y relaciones.

Parte 4: Ingeniería Directa#

../../../images/diagrama_exam2.jpeg

Figura 24 Diagrama ER sobre una compañía con empleados y varias sucursales.#

Dado el anterior diagrama ejecuta las siguientes dos tareas:

  1. Conversión del Diagrama a Código:
    Con el diagrama EER, realiza la ingeniería directa y escribe el código SQL para crear la base de datos con sus respectivas tablas y relaciones.

  2. Población de la Base de Datos:
    Inserta 3 registros de prueba en las tablas generadas, asegurándote de representar adecuadamente las relaciones entre ellas. Los datos deben ser consistentes y reflejar las relaciones definidas.

Nota

Los registros de prueba deben representar correctamente las relaciones de las tablas (por ejemplo, un título de película con sus plataformas de streaming asociadas y personajes principales).

Parte 5: Consultas Básicas#

Responde las siguientes preguntas utilizando consultas de MySQL. Si la consulta no retorna nada puedes cambiar la pregunta para que retorne algo.

1. Proyección: Obtener los Títulos y Años de Lanzamiento

\[\pi_{\text{Título_del_Juego, Año_de_Lanzamiento}}(\text{Juegos})\]

2. Selección: Filtrar juegos del género «RPG»

\[\sigma_{\text{Género} = 'RPG'}(\text{Juegos})\]

3. Proyección: Obtener solo los Desarrolladores y sus Sedes

\[\pi_{\text{Desarrollador, Sede_del_Desarrollador}}(\text{Juegos})\]

4. Selección: Filtrar juegos con calificación mayor a 8.0

\[\sigma_{\text{Calificación} > 8.0}(\text{Juegos})\]

5. Proyección y Selección: Obtener Títulos y Personajes Principales de juegos lanzados después de 2015

\[\pi_{\text{Título_del_Juego, Personajes_Principales}}(\sigma_{\text{Año_de_Lanzamiento} > 2015}(\text{Juegos}))\]

Criterios de Evaluación#

  1. Normalización: La estructura de datos está correctamente normalizada hasta la 3FN.

  2. Creación de Tablas y Población en MySQL: Se implementan correctamente las tablas normalizadas y se ingresa la información requerida.

  3. Modelado con Diagramas: Los diagramas ER y EER están correctamente dibujados, utilizando los elementos adecuados y diferenciando las relaciones fuertes y débiles.

  4. Conversión de Diagramas a Código y Población de Datos: La ingeniería directa está completa y contiene registros de prueba que representan las relaciones entre tablas.

  5. Consultas: Implementación y funcionamiento de las consultas, código que responda la pregunta dejada.