UD04 · Prácticas

Resultados de aprendizaje y criterios de evaluación
RA6 Diseña modelos relacionales normalizados interpretando diagramas entidad/relación. 5 CE
  • RA6.b Se han identificado las tablas del diseño lógico.
  • RA6.c Se han identificado los campos que forman parte de las tablas del diseño lógico.
  • RA6.e Se han identificado los campos clave.
  • RA6.g Se han aplicado reglas de normalización.
  • RA6.h Se han analizado y documentado las restricciones que no pueden plasmarse en el diseño lógico.
PrácticaTipoNivelCE principales
4.1 Normalizar las facturas de un tallerGuiada●○○RA6.b, RA6.c, RA6.g
4.2 Dependencias, cierres y clavesGuiada●●○RA6.e, RA6.g
4.3 ¿En qué forma normal está?Autónoma●●○RA6.g
4.4 Reservas de un hotel ruralAutónoma●●○RA6.b, RA6.c, RA6.e, RA6.g
4.5 FNBC y dependencias perdidasReto●●●RA6.g, RA6.h
4.6 ¿Normalizar o desnormalizar?Reto●●●RA6.g
Proyecto EduGest · UD04Proyecto●●○RA6.b, RA6.c, RA6.e, RA6.g, RA6.h

Práctica 4.1 · Normalizar las facturas de un taller

Práctica 4.1 Guiada
Duración
2 sesiones
Dificultad
RA / CE
RA6: b, c, g
Software
Hoja de cálculo o papel
Entrega
Documento con cada paso de la normalización

Objetivo

Seguir el procedimiento completo de normalización sobre un documento real (una factura) hasta obtener un esquema en 3FN.

Contexto

Un taller mecánico guarda sus facturas en una hoja de cálculo. Cada fila es una línea de factura:

num_facturafechamatriculamodelodni_clienteclientetelefonos_clientecod_servicioservicioprecio_actualprecio_aplicadocantidadmecanicoespecialidad_mecanico
F-10103/10/20261234-LMNSeat Ibiza11111111HPedro Ruiz600100200S01Cambio de aceite45401AnaMotor
F-10103/10/20261234-LMNSeat Ibiza11111111HPedro Ruiz600100200S07Filtro de aire18181AnaMotor
F-10204/10/20265678-PQRKia Ceed22222222JLaura Gil611200300, 966123456S01Cambio de aceite45451LuisMotor
F-10204/10/20265678-PQRKia Ceed22222222JLaura Gil611200300, 966123456S12Neumático80754MartaRuedas

Reglas del negocio (confirmadas con el taller):

  • Cada factura corresponde a un vehículo y a un cliente, en una fecha.
  • Cada vehículo pertenece a un único cliente; un cliente puede tener varios vehículos.
  • precio_actual es el precio de catálogo del servicio; precio_aplicado es el que se cobró en esa factura (puede haber descuento).
  • En una factura, cada servicio aparece en una sola línea y lo realiza un mecánico. Cada mecánico tiene una especialidad.

Desarrollo

  1. Dependencias funcionales. A partir de las reglas, escribe:

    • num_factura → fecha, matricula
    • matricula → modelo, dni_cliente
    • dni_cliente → cliente (y los teléfonos, que son multivaluados)
    • cod_servicio → servicio, precio_actual
    • num_factura, cod_servicio → precio_aplicado, cantidad, mecanico
    • mecanico → especialidad_mecanico
  2. Clave candidata. num_factura y cod_servicio no aparecen a la derecha de ninguna dependencia. Calcula {num_factura,cod_servicio}+\{num\_factura, cod\_servicio\}^+ y comprueba que contiene todos los atributos (salvo los teléfonos, que se tratan en 1FN).

  3. 1FN. Saca telefonos_cliente a TELEFONO_CLIENTE(dni_cliente, telefono).

  4. 2FN. Elimina las dependencias parciales respecto a la clave (num_factura, cod_servicio):

    • FACTURA_2(num_factura, fecha, matricula, modelo, dni_cliente, cliente)
    • SERVICIO(cod_servicio, servicio, precio_actual)
    • LINEA(num_factura, cod_servicio, precio_aplicado, cantidad, mecanico, especialidad_mecanico)
  5. 3FN. Elimina las dependencias transitivas:

    • En FACTURA_2: num_factura → matricula → modelo, dni_cliente → cliente.
    • En LINEA: (num_factura, cod_servicio) → mecanico → especialidad_mecanico.
  6. Verifica que con las tablas finales desaparecen las anomalías del principio.

🔒 Solución: esquema en 3FN

Contenido protegido: introduce la clave para verlo.

Comprobación

Comprobación
  • Obtienes 7 tablas y todas tienen clave primaria.

  • Ninguna tabla contiene a la vez cliente y num_factura.

  • El cliente de una factura se obtiene a través del vehículo (factura → vehículo → cliente).

  • Explicas por qué precio_actual y precio_aplicado están en tablas distintas.

Errores habituales

  • Guardar dni_cliente también en FACTURA «para no tener que pasar por el vehículo». Sería una dependencia transitiva: si el vehículo cambia de dueño, las facturas antiguas mostrarían datos contradictorios. Ojo: si el negocio exige conservar quién pagó cada factura aunque el coche cambie de dueño, entonces sí es un dato propio de la factura. Pregunta al cliente.
  • Borrar precio_aplicado por pensar que es redundante con precio_actual.

Ampliación

Comprueba en tu solución que la descomposición es sin pérdida: para cada par de tablas que se combinan, indica el atributo común y de qué tabla es clave. Cuando termines la UD07, escribe el JOIN que reconstruye la hoja original.


Práctica 4.2 · Dependencias, cierres y claves

Práctica 4.2 Guiada
Duración
1 sesión
Dificultad
RA / CE
RA6: e, g
Software
Papel
Entrega
Hoja de ejercicios

Objetivo

Dominar el cálculo del cierre de atributos para encontrar todas las claves candidatas de una relación.

Enunciado

Para cada relación, calcula las claves candidatas indicando los cierres que has calculado. Después indica la forma normal más alta que cumple.

#RelaciónDependencias
aR(A, B, C, D)A → B, B → C, C → D
bR(A, B, C, D)AB → C, C → D, D → A
cR(A, B, C, D, E)A → BC, CD → E, B → D, E → A
dCURSO(cod_curso, aula, hora, profesor)cod_curso → profesor; aula, hora → cod_curso; profesor, hora → aula
🔒 Soluciones

Contenido protegido: introduce la clave para verlo.


Práctica 4.3 · ¿En qué forma normal está?

Práctica 4.3 Autónoma
Duración
1 sesión
Dificultad
RA / CE
RA6: g
Software
Papel
Entrega
Tabla de respuestas justificadas

Enunciado

Indica la forma normal más alta de cada relación (la clave primaria está subrayada) y, si no está en 3FN, normalízala.

  1. ALUMNO(nia, nombre, idiomas) donde idiomas = «inglés, francés».
  2. PRESTAMO(isbn, num_socio, fecha, titulo, nombre_socio, fecha_devolucion).
  3. EMPLEADO(id_emp, nombre, cod_postal, poblacion), con cod_postal → poblacion.
  4. VUELO(num_vuelo, fecha, avion, plazas_avion, piloto), con avion → plazas_avion.
  5. PRODUCTO(id_producto, nombre, precio, iva), donde todos dependen solo de id_producto.
  6. NOTA(id_alumno, id_modulo, evaluacion, nota, nombre_modulo).

Comprobación

Comprobación
  • La relación 1 no está en 1FN.
  • Las relaciones 2 y 6 están en 1FN (dependencias parciales).
  • Las relaciones 3 y 4 están en 2FN (dependencias transitivas).
  • La relación 5 está en FNBC.
Pista para la relación 4

La clave es compuesta (num_vuelo, fecha). avion depende de toda la clave (el mismo número de vuelo puede usar aviones distintos en días distintos), pero plazas_avion depende de avion, que no es clave: dependencia transitiva.


Práctica 4.4 · Reservas de un hotel rural

Práctica 4.4 Autónoma
Duración
2 sesiones
Dificultad
RA / CE
RA6: b, c, e, g
Software
Papel o Data Modeler
Entrega
Informe de normalización completo

Contexto

Un hotel rural gestiona las reservas con este formulario en papel, que han pasado a una hoja de cálculo:

cod_reservafecha_reservadni_clientenombre_clienteemailnum_habtipo_habprecio_noche_tipofecha_entradafecha_salidaextrasimporte_extras
R101/0933333333PElena Sanzelena@mail.es3Doble8510/1012/10Desayuno, Parking30
R101/0933333333PElena Sanzelena@mail.es4Doble8510/1012/10Desayuno20
R205/0944444444AIván Moraivan@mail.es1Suite14015/1016/100

Una reserva puede incluir varias habitaciones, cada una con sus propios extras. El precio por noche depende del tipo de habitación. Cada extra tiene un precio por noche fijo.

Enunciado

  1. Lista las anomalías que observas.
  2. Escribe las dependencias funcionales y justifica las que no sean evidentes.
  3. Determina la clave candidata.
  4. Normaliza hasta 3FN mostrando el resultado de cada forma normal.
  5. Decide qué hacer con importe_extras: ¿es un atributo derivado? ¿Debe guardarse?
  6. Escribe al menos dos restricciones que no queden recogidas (por ejemplo, que una habitación no tenga dos reservas solapadas).

Comprobación

Comprobación
  • extras se trata como multivaluado en 1FN y termina en una tabla con su propia clave.

  • El precio por noche se asocia al tipo de habitación, no a la reserva.

  • El esquema final tiene entre 6 y 8 tablas, y todas están en 3FN.


Práctica 4.5 · FNBC y dependencias perdidas

Práctica 4.5 Reto
Duración
1 sesión
Dificultad
RA / CE
RA6: g, h
Software
Papel
Entrega
Análisis razonado

Contexto

En una autoescuela, cada profesor da clase en una sola sede. Un alumno, en cada sede a la que acude, tiene asignado un único profesor.

CLASE(alumno, sede, profesor) con alumno, sede → profesor y profesor → sede.

Enunciado

  1. Calcula las claves candidatas.
  2. Demuestra que la relación está en 3FN pero no en FNBC.
  3. Descomponla en FNBC y comprueba que la descomposición es sin pérdida.
  4. ¿Qué dependencia se pierde? Escribe un ejemplo de datos que la incumpla y que las nuevas tablas aceptarían.
  5. Recomienda una solución para la autoescuela y explica cómo garantizarías la regla perdida (adelanta lo que harías en la UD09).
Pista

Las claves son (alumno, sede) y (alumno, profesor). La descomposición en FNBC es PROFESOR_SEDE(profesor, sede) y ALUMNO_PROFESOR(alumno, profesor). Prueba a asignar al mismo alumno dos profesores de la misma sede.


Práctica 4.6 · ¿Normalizar o desnormalizar?

Práctica 4.6 Reto
Duración
1 sesión
Dificultad
RA / CE
RA6: g
Software
Documento
Entrega
Informe de decisión (1 página por caso)

Enunciado

Para cada propuesta de un compañero, decide si la aceptas, la rechazas o la aceptas con condiciones. Justifica la decisión con argumentos de integridad, rendimiento y mantenimiento.

  1. «Guardemos el nombre_ciclo en cada fila de MATRICULA para que los informes de secretaría no necesiten tres JOIN».
  2. «Añadamos num_alumnos a la tabla GRUPO, porque el panel de jefatura lo consulta cada vez que se abre».
  3. «En la tabla de pedidos de la tienda online guardemos la dirección de envío completa, aunque ya esté en CLIENTE».
  4. «Para el cuadro de mando de la dirección, creemos una tabla con una fila por ciclo, curso y año con la nota media y el número de aprobados, que se recalcula cada noche».

Comprobación

Comprobación
  • El caso 3 se identifica como un dato histórico (la dirección puede cambiar después del pedido).

  • El caso 4 se relaciona con los sistemas OLAP de la UD01.

  • Cuando aceptas una redundancia, explicas cómo se mantiene sincronizada.


Proyecto EduGest · UD04: informe de normalización

Práctica EduGest-4 Proyecto
Duración
Trabajo transversal (1 semana)
Dificultad
RA / CE
RA6: b, c, e, g, h
Software
Documento Markdown
Entrega
edugest/docs/04-normalizacion.md

Enunciado

  1. Migración de la hoja heredada. Normaliza la hoja MATRICULA_HOJA de la teoría añadiéndole estas columnas: email_tutor, departamento_tutor, faltas_totales. Indica cómo encaja el resultado en tu modelo de EduGest.
  2. Verificación de tu esquema. Para cada tabla de tu modelo relacional (EduGest-3), escribe sus dependencias funcionales y justifica que está en 3FN (o en FNBC).
  3. Comparación con la solución de referencia. Ya puedes consultar el modelo de referencia. Escribe una tabla con las diferencias y, para cada una, si tu decisión era también válida o si la corriges.
  4. Catálogo de restricciones actualizado con las que hayan aparecido al normalizar.

Comprobación

Comprobación
  • faltas_totales se identifica como un atributo derivado y se justifica si se guarda o se calcula.
  • Ninguna tabla del esquema final tiene dependencias parciales ni transitivas.
  • Las diferencias con la referencia están argumentadas, no solo listadas.

A partir de la UD05 todo el grupo trabajará con el esquema de referencia para que los resultados de las consultas coincidan. Si tu diseño era distinto pero correcto, menciónalo en tu documentación: esa capacidad de justificar alternativas es exactamente lo que evalúa RA6.