Bases de Datos - proceso de normalización, primeras tres formas normales

 
Vista:

proceso de normalización, primeras tres formas normales

Publicado por antonio_50 (1 intervención) el 30/12/2020 11:41:55
Buenos días gente!! estoy intentando hacer un ejercicio, y he de ponerlo en las 3 primeras formas normales, sino lo están todavía. Lo que me está liando es el enunciado de los supuestos:

1. Tenemos el siguiente supuesto:

Torneo de tenis Grand Slam:

El sistema debe memorizar todos los partidos que han tenido lugar desde que existió el torneo, así como las siguientes características de estos:
El Grand Slam consta de cuatro torneos anuales que se celebran en Gran Bretaña, Estados Unidos, Francia y Australia.
En cada país se pueden desarrollar en diferentes lugares (por ejemplo, en los EE. UU. Se puede desarrollar en Forest Hill o Flashing Meadows).
Cada partido está asociado con un premio de consolación para el perdedor que dependerá de la etapa en la que se encuentre el torneo (por ejemplo, el perdedor de los octavos de final puede ganar $ 10,000).
El ganador de la final recibirá el premio correspondiente al torneo.
Cada torneo tiene cinco modalidades: individuales masculinos, individuales femeninos, dobles masculinos, dobles femeninos y dobles mixtos.
También se debe tener en cuenta la nacionalidad de los jugadores (puede tener varias nacionalidades).
Si tenemos el siguiente modelo relacional del supuesto anterior, se nos pide aplicar el proceso de normalización , en las primeras 3 formas normales:

COACH (Coach_Name, Country_Birth)
JUGADOR (Player_Id, Player_Name, Nacionalidad, Coach_Name)
TORNEO (código_del_ torneo, año, ubicaciones_país, modalidades)
PARTIDO (Código de partido, Nombre de ganador, Ronda, Árbitro, Participantes, Código de torneo)
PARTICIPAR (Match_code, Player_Id, Prize, Position)

Me pone las tablas, por lo que yo entiendo es que las tablas son las que son y con los supuestos que me marca tengo que mirar si se repiten atributos o no, o claves primarias, y ponerlo es la 3FN correcta. Por ejemplo en COACH, entiendo que está en 3FN porque sólo tiene dos atributos,¿sería así? ...por ejemplo en jugador, ¿cómo sería?

gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

proceso de normalización, primeras tres formas normales

Publicado por anonymous (41 intervenciones) el 02/01/2021 22:37:59
A la hora de normalizar, lo primero que tienes que tener en cuenta es que un atributo pueda adquirir más de un valor.

De darse es obvio que te faltan estructuras o tablas.

En el caso concreto del jugador, es apenas obvio que un jugador habrá de tener múltiples coachs o entrenadores a lo largo de su carrera deportiva, luego si tu tuvieses algo como lo siguiente:

Player_Id, Player_Name, Nacionalidad, Coach_Name
1, Lionel Messi, Argentino, Josep Guardiola
1, Lionel Messi, Argentino, Luis Enrique

Mira que Messi ha tenido muchos entrenadores, luego no sería lógico repetir el mismo nombre y nacionalidad, solo para decir que tuvo n entrenadores.

Que hay que hacer, crear una estructura aparte que se “robe” la clave (Player_Id) de la tabla Jugador y que referencie como foránea ese Player_Id, que se repetirá como tantos entrenadores tenga, así solo repito información de una columna (la foránea), en vez de repetir nombre y nacionalidad por cada entrenador.

No sé si sea claro hasta acá, pero adicionalmente debería haber una estructura más, para almacenar solo los coachs, de esta forma tendrás 3 tablas:

Jugador, Jugador_Entrenador y Entrenador

Donde

Jugador = Player_Id, Player_Name, Nacionalidad

Entrenador = Entrenador_Id, Entrenador_Name

Jugador_Entrenador = Jugador_Entrenador_ID, Player_Id, Entrenador_Id

E incluso debería haber una estructura adicional solo para las nacionalidades y en la tabla jugador referenciaría el ID de cada nacionalidad.
Así te quedaría en 3FN, podría llevarse a 4 y 5 FN pero para este caso no lo veo tan necesario, todo depende de lo que se modele y que tan necesario sea evitar redundancia más allá de 3FN, y que ocasionaría la generación de muchos join a la hora de extraer información y ello trae problemas de rendimiento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar