IIC2413 / Syllabus-2023-2

94 stars 1 forks source link

Duda sobre Cuando/como hay que normalizar los datos #256

Closed ibgarrido closed 10 months ago

ibgarrido commented 10 months ago

Hola! hemos estado intentando avanzar con el proyecto junto a mi duo, sin embargo tenemos la duda de cuando y como hay que normalizar los datos (es decir, pasar las tablas a 3NF y BCNF), puesto que el enunciado es ambiguo en ese sentido y al estar separado en distintos archivos (readme) se presta a confusion. Las opciones que tenemos pensadas son las siguientes:

Saludos.

ypne commented 10 months ago

P: cuando y como hay que normalizar los datos ? R: Lo que se normaliza en 3FN o BCNF no son los datos, La normalización sale del resultado del modelo E/R y los esquemas. Una vez que generan el esquema, crean las tablas y en PHP solo se hace el polamiengto de estas. Pro ejemplo si recorren el archivo csv usuarios_actividades (AS) de los pares, se darán cuenta que están todos los datos de los usuarios de la tabla usuarios de los pares por lo que, segun enunciado deben insertarlos ahí. Una propuesta de pseudocódigo sería: INSERT PARES.usuarios_actividades.id,nombre, password,mail,username, Fecha_nacimiento INTO IMPARES.usuarios.id,nombre, password,mail,username, Fecha_nacimiento -> output errores

dvictorerol commented 10 months ago

Hola, para asegurarme, quiero saber si entendí bien la respuesta. O sea, si ya tenemos el E/R y los esquemas, creamos las tablas a partir de eso? Por ejemplo, para los grupos impares, uno de los datasets que se nos entregó se llama 'multimedia', el cuál claramente no está en BCNF, por lo tanto, lo separamos en 'series', 'peliculas' y 'capitulos. ¿Hay que crear a partir del script de carga una tabla 'multimedia' y poblarla con los datos de multimedia que se nos entregaron (cumpliendo los constraints que tmb nos dieron)?, ¿o hay que crear las tablas 'series', 'películas' y 'capítulos' y poblarlas a partir del script de carga con sus respectivos datos?

Realmente no queda muy claro, ya que en el enunciado dice que 'El grupo deberá generar o modificar los scripts de cargas de datos desde los archivos CSV entregados teniendo en cuenta los tipos de datos y las restricciones que se aplican a los atributos, así como el manejo de errores que se pudieran producir...'. Lo que se entiende es que se deben crear las tablas y poblar estas con los datos tal cuál fueron entregados.

ypne commented 10 months ago

P: si ya tenemos el E/R y los esquemas, creamos las tablas a partir de eso? R: correcto

P: por lo tanto, lo separamos en 'series', 'peliculas' y 'capitulos. R: No necesariamente, los datasets de los archivos no son talas de la base, ustedes deben generar un schema en 3NF o BCNF a partir de todos los datasets.

P: ¿Hay que crear a partir del script de carga una tabla 'multimedia' R: No, ustedes deben crear el script que a partir de los ARCHIVOS csv (o excel) pueblen los datos de las tablas resultantes de la normalización por ejemplo poblar los usuarios de la tabla impar (ya existente y poblada con los datos del archivo csv de usuarios.csv

En pseudocódigo Read from usuario_actividades.csv (id_usuario, nombre, mail, password, username, id_videojuego, cantidad, veredicto, titulo, texto, fecha_nacimiento) INSERT INTO Impares.usuarios AS ui (ui.id=id_usuario, ui.nombre=nombre, ui.mail=mail, ui.password=password, ui.username=username, ui.fecha_nacimiento=fecha_nacimiento) -> resultado

Si "resultado" es correcto significa que se insertó correctamente o sea el usuario no estaa registrado previamente Si el "resultado" es que ya existía el usuario entonces se descarta la inserción Si el "resultado" es erróneo se debe investigar el motivo del error y corregirlo.

P:Lo que se entiende es que se deben crear las tablas y poblar estas con los datos tal cuál fueron entregados. R: No, las tablas deben crearse a partir del modelo ER, del cual crea un schema y se pueblan desde los archivos. NO hay que cargar los archivos en tablas de datos tal como vienen.

P: teniendo en cuenta los tipos de datos y las restricciones que se aplican a los atributos, R: Los CONSTRAIN los maneja el DBMS por lo que al hacer el INSERT éste dará error si es que se viola