IIC2413 / Syllabus-2023-1

76 stars 24 forks source link

Entrega 2: ¿Cómo podemos identificar dependencias? #118

Open KainaBGR opened 1 year ago

KainaBGR commented 1 year ago

Hola :) he trabajado un poco los datos que nos han entregado en los archivos .csv y he identificado las llaves de las tablas. Pero no sé cómo podré identificar las dependencias existentes si no son a partir de llaves. Una forma sería comparar conjuntos de columnas para todas las filas pero hay archivos con más de 5000 filas y más de 7 columnas, entonces no alcanzaría por tiempo a verificar manualmente. ¿Debemos asumir que no existen dependencias adicionales a las que se crean por las llaves en las tablas de los archivos .csv que nos han entregado? o ¿ustedes nos indicarán dependencias? Por ejemplo, para el archivo productos podría ser que a partir de el nombre del producto y las dimensiones se pudiera saber la cantidad de cajas, pero no sé cómo revisar que eso se cumple o no se cumple para las 5000 y tantas filas. Gracias.

NicolasOlmosQuiroga commented 1 year ago

¡Hola!, como respondi anteriomente en una issue:

Como se dice en el enunciado, "se deben procesar los datos en los archivos csv con Python o tu lenguaje de programación favorito para facilitar la importación", esto se hace por dos razones:

  1. Deben pre-procesar los datos sin pérdida de información para que se ajusten a tu esquema final, en este proyecto se evalua que su esquema este en forma BCNF o 3NF, lo que implica que si o si tendran que separar alguno de los atributos de los archivos o tablas que ya tienen, en otras tablas para que esten en BCNF o 3NF, un ejemplo (no neceriamente real) seria que procesaran la tabla compras en 3 archivos .csv diferentes para importarlos a otras tablas que hagan en su esquema.

  2. Los datos vienen con errores, por ejemplo, algunos de los ids de los clientes en compras.csv no existen en el archivo clientes.csv, por lo que esas compras deberian eliminarse, ademas, hay muchos valores duplicados que tambien deben ser capaces de encontrar y eliminar (no importa si se pierde esta informacion, puesto que es erronea), ademas de esto, hay mas detalles/errores que deben arreglar o eliminar, asi que atentos a los detalles.

Entonces, ustedes con python o cualquier lenguaje, deben filtrar los datos para sacar los errores, obviamente hacerlo manual es imposible, pero el revisar manualmente si por ahi haya algun tipo de error es totalmente posible y se espersa que lo hagan (todos los errores presentes deberian ser visibles en menos de 100 filas), pero tambien pueden ustedes pensar en que error podria haber en algun atributo (por ejemplo uno facil de pensar serian ver si las fechas siguen el formato adecuado), y despues usando algun tipo de pre-procesamiento, se modifican/eliminan dependiendo del caso. Un detalle importante es que tampoco los errores son mega rebuscados, no habra solamente un error en la fila 8261 con un atributo en especifico, si no que se repetiran hartos.

Por ejemplo, en tu caso de que "el archivo productos podría ser que a partir de el nombre del producto y las dimensiones se pudiera saber la cantidad de cajas, pero no sé cómo revisar que eso se cumple o no se cumple para las 5000 y tantas filas", lo mas probable es que no hayan problemas, pero aun asi revisa 1 minuto rapidamente si hay algo que no cuadra o piensa que tipo de error pueda haber y compruebalo, pero lo mas probable es que no haya errores (como ya mencione, los errores son bien obvios y se ven rapidamente).

Por lo tanto, asume que no existen dependencias adicionales.

Saludos.

KainaBGR commented 1 year ago

Hola, creo que no se entendió mi pregunta. Quiero saber cómo identificar dependencias entre columnas de los archivos, no cómo identificar errores. Esto para poder verificar que se cumpla BCNF o 3NF.