Guía#
Advertencia
El proyecto debe estar en GitHub y todos deben participar activamente. Como se utilizara GitHub para almacenar el proyecto, todos los reportes y entregas que se realicen deben estar escritas en markdown.
1. Objetivo del Proyecto#
Desarrollar una base de datos relacional completa que gestione la información de un sistema del mundo real, aplicando los conceptos fundamentales de diseño de bases de datos, normalización, consultas SQL y administración. El proyecto debe ser realizado en equipos de máximo 4 personas.
2. Descripción del Proyecto#
Cada equipo deberá diseñar e implementar una base de datos que cumpla con los siguientes requisitos:
Diseño conceptual, lógico y físico de la base de datos.
Implementación en un Sistema de Gestión de Bases de Datos (SGBD) como MySQL, PostgreSQL, etc.
Creación de tablas, relaciones y restricciones.
Normalización de las tablas hasta la 3FN (Tercera Forma Normal).
Creación de consultas SQL (SELECT, INSERT, UPDATE, DELETE).
Generación de reportes mediante consultas avanzadas.
3. Requisitos Funcionales#
La base de datos debe incluir las siguientes características:
Entidades y Relaciones: Mínimo de 5 entidades y sus relaciones bien definidas.
Integridad Referencial: Uso adecuado de claves primarias, claves foráneas y restricciones de integridad.
Consultas SQL: Creación de consultas básicas y avanzadas que respondan a necesidades específicas del sistema. Mínimo 15 consultas.
Normalización: La base de datos debe estar normalizada, al menos hasta la tercera forma normal (3FN).
Optimización: Uso de índices para optimizar consultas (opcional).
Usuarios: Mecanismos de seguridad y gestión de usuarios (opcional). Al menos 3 usuarios (dba, usuario, etc).
4. Fases del Proyecto#
Fase 1: Investigación y Análisis del Problema
Objetivo: Entender el problema a resolver. Cada equipo debe entregar un documento con el análisis del problema, los casos de uso, y los requerimientos funcionales y no funcionales.
Cada equipo debe entregar un primer reporte de proyecto que incluya:
Descripción del problema a resolver (planteamiento, justificación y requerimientos de la solución al problema).
Objetivos principal y específicos del proyecto.
Posible división de tareas entre los miembros del equipo.
Algunas referencias de interés.
Nota
Hasta aquí va la primera entrega. Recuerden que el reporte debe estar en el repositorio del proyecto y TODOS deben participar activamente.
Fase 2: Análisis del Sistema y Modelado Conceptual
Objetivo: Analizar el problema propuesto, identificar las entidades, relaciones y atributos. Entregar un modelo Entidad-Relación (ER).
Entregable: Diagrama ER y descripción del problema.
Fase 3: Diseño Lógico y Normalización
Objetivo: Convertir el modelo conceptual en un modelo lógico (tablas, atributos, claves primarias y foráneas) y aplicar técnicas de normalización para garantizar la eficiencia.
Entregable: Modelo lógico y tablas normalizadas.
Fase 4: Implementación Física en un SGBD
Objetivo: Implementar el diseño lógico en un SGBD (por ejemplo, MySQL o PostgreSQL). Crear las tablas, relaciones y restricciones correspondientes.
Entregable: Script SQL para la creación de las tablas y las relaciones.
Nota
Hasta aquí va la segunda entrega. Recuerden que el reporte debe estar en el repositorio del proyecto y TODOS deben participar activamente. Esta entrega consta de las tablas normalizadas y subidas a Workbrench, al igual que los diagramas ER y EER.
Fase 5: Creación de Consultas SQL y Procedimientos Almacenados
Objetivo: Desarrollar consultas SQL que cubran operaciones de creación, actualización, eliminación y recuperación de datos. Implementar al menos un procedimiento almacenado, función o trigger.
Entregable: Scripts de consultas SQL y procedimientos.
Fase 6: Pruebas y Optimización
Objetivo: Realizar pruebas de funcionalidad, verificar la integridad de los datos, y optimizar las consultas mediante el uso de índices u otras técnicas.
Entregable: Resultados de pruebas y mejoras en la base de datos.
Fase 7: Presentación y Documentación
Objetivo: Presentar el proyecto a la clase, explicando el diseño, decisiones técnicas y justificaciones. Entregar la documentación completa que incluya el diseño conceptual, lógico, y físico, así como los scripts SQL y resultados de las pruebas.
5. Criterios de Evaluación#
La calificación del proyecto se basará en los siguientes aspectos:
Diseño Conceptual y Lógico: Claridad y coherencia en el modelo ER y la normalización de las tablas.
Implementación: Correcta creación de las tablas, relaciones, restricciones y consultas SQL.
Consultas SQL: Complejidad y funcionalidad de las consultas y procedimientos almacenados.
Optimización y Eficiencia: Uso adecuado de índices o técnicas de optimización.
Documentación: Claridad en la explicación del modelo y las decisiones de diseño, así como en la documentación técnica y funcional.
Presentación: Habilidad del equipo para explicar el proyecto, demostrar el funcionamiento del sistema y justificar sus decisiones.
6. Recursos#
[Enlaces a tutoriales de SQL, MySQL, o PostgreSQL].
[Documentación sobre normalización y diseño de bases de datos].
[Guías para optimización de consultas SQL].
[Instrucciones para el uso de herramientas de modelado como MySQL Workbench o dbdiagram.io].
Pueden encontrar enlaces de interés en uETITC.
7. Entregables#
Diagrama ER y modelo lógico.
Scripts SQL para la creación de tablas, relaciones, y restricciones.
Scripts SQL de consultas, procedimientos almacenados y triggers.
Resultados de las pruebas de funcionalidad.
Documentación técnica (manual del usuario, manual técnico, y resultados de las pruebas).
Informe de evaluación del equipo (opcional).
8. Fechas Importantes#
Inicio del proyecto: [Fecha]
Entrega final del proyecto: [Fecha]
9. Consideraciones Finales#
Es obligatorio el uso de un SGBD como MySQL, PostgreSQL o SQL Server.
Los equipos deben gestionar el proyecto utilizando un repositorio de control de versiones (como GitHub).
El cumplimiento de los plazos intermedios será evaluado, por lo que se recomienda una planificación adecuada.
10. Recomendaciones#
Organícense desde el inicio y asignen responsabilidades claras.
Realicen revisiones periódicas del código y usen herramientas de control de versiones para evitar conflictos.
Asegúrense de que todos los miembros del equipo comprendan el código y las decisiones tomadas.
Documenten el progreso y dificultades para la presentación final.