UD04 · Pràctiques

Resultats d'aprenentatge i criteris d'avaluació
RA6 Dissenya models relacionals normalitzats interpretant diagrames entitat/relació. 5 CE
  • RA6.b S'han identificat les taules del disseny lògic.
  • RA6.c S'han identificat els camps que formen part de les taules del disseny lògic.
  • RA6.e S'han identificat els camps clau.
  • RA6.g S'han aplicat regles de normalització.
  • RA6.h S'han analitzat i documentat les restriccions que no poden plasmar-se en el disseny lògic.
PràcticaTipusNivellCE principals
4.1 Normalitzar les factures d’un tallerGuiada●○○RA6.b, RA6.c, RA6.g
4.2 Dependències, tancaments i clausGuiada●●○RA6.e, RA6.g
4.3 En quina forma normal està?Autònoma●●○RA6.g
4.4 Reserves d’un hotel ruralAutònoma●●○RA6.b, RA6.c, RA6.e, RA6.g
4.5 FNBC i dependències perdudesRepte●●●RA6.g, RA6.h
4.6 Normalitzar o desnormalitzar?Repte●●●RA6.g
Projecte EduGest · UD04Projecte●●○RA6.b, RA6.c, RA6.e, RA6.g, RA6.h

Pràctica 4.1 · Normalitzar les factures d’un taller

Pràctica 4.1 Guiada
Durada
2 sessions
Dificultat
RA / CE
RA6: b, c, g
Programari
Full de càlcul o paper
Lliurament
Document amb cada pas de la normalització

Objectiu

Seguir el procediment complet de normalització sobre un document real (una factura) fins a obtindre un esquema en 3FN.

Context

Un taller mecànic guarda les seues factures en un full de càlcul. Cada fila és una línia de factura:

num_facturafechamatriculamodelodni_clienteclientetelefonos_clientecod_servicioservicioprecio_actualprecio_aplicadocantidadmecanicoespecialidad_mecanico
F-10103/10/20261234-LMNSeat Ibiza11111111HPedro Ruiz600100200S01Canvi d’oli45401AnaMotor
F-10103/10/20261234-LMNSeat Ibiza11111111HPedro Ruiz600100200S07Filtre d’aire18181AnaMotor
F-10204/10/20265678-PQRKia Ceed22222222JLaura Gil611200300, 966123456S01Canvi d’oli45451LuisMotor
F-10204/10/20265678-PQRKia Ceed22222222JLaura Gil611200300, 966123456S12Pneumàtic80754MartaRodes

Regles del negoci (confirmades amb el taller):

  • Cada factura correspon a un vehicle i a un client, en una data.
  • Cada vehicle pertany a un únic client; un client pot tindre diversos vehicles.
  • precio_actual és el preu de catàleg del servei; precio_aplicado és el que es va cobrar en eixa factura (pot haver-hi descompte).
  • En una factura, cada servei apareix en una sola línia i el realitza un mecànic. Cada mecànic té una especialitat.

Desenvolupament

  1. Dependències funcionals. A partir de les regles, escriu:

    • num_factura → fecha, matricula
    • matricula → modelo, dni_cliente
    • dni_cliente → cliente (i els telèfons, que són multivalorats)
    • cod_servicio → servicio, precio_actual
    • num_factura, cod_servicio → precio_aplicado, cantidad, mecanico
    • mecanico → especialidad_mecanico
  2. Clau candidata. num_factura i cod_servicio no apareixen a la dreta de cap dependència. Calcula {num_factura,cod_servicio}+\{num\_factura, cod\_servicio\}^+ i comprova que conté tots els atributs (excepte els telèfons, que es tracten en 1FN).

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

  4. 2FN. Elimina les dependències parcials respecte a la clau (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 les dependències transitives:

    • En FACTURA_2: num_factura → matricula → modelo, dni_cliente → cliente.
    • En LINEA: (num_factura, cod_servicio) → mecanico → especialidad_mecanico.
  6. Verifica que amb les taules finals desapareixen les anomalies del principi.

🔒 Solució: esquema en 3FN

Contingut protegit: introduïx la clau per a veure'l.

Comprovació

Comprobación
  • Obtens 7 taules i totes tenen clau primària.

  • Cap taula conté alhora cliente i num_factura.

  • El client d’una factura s’obté a través del vehicle (factura → vehicle → client).

  • Expliques per què precio_actual i precio_aplicado estan en taules distintes.

Errors habituals

  • Guardar dni_cliente també en FACTURA «per a no haver de passar pel vehicle». Seria una dependència transitiva: si el vehicle canvia de propietari, les factures antigues mostrarien dades contradictòries. Compte: si el negoci exigix conservar qui va pagar cada factura encara que el cotxe canvie de propietari, llavors sí que és una dada pròpia de la factura. Pregunta al client.
  • Esborrar precio_aplicado per pensar que és redundant amb precio_actual.

Ampliació

Comprova en la teua solució que la descomposició és sense pèrdua: per a cada parell de taules que es combinen, indica l’atribut comú i de quina taula és clau. Quan acabes la UD07, escriu el JOIN que reconstruïx el full original.


Pràctica 4.2 · Dependències, tancaments i claus

Pràctica 4.2 Guiada
Durada
1 sessió
Dificultat
RA / CE
RA6: e, g
Programari
Paper
Lliurament
Full d'exercicis

Objectiu

Dominar el càlcul del tancament d’atributs per a trobar totes les claus candidates d’una relació.

Enunciat

Per a cada relació, calcula les claus candidates indicant els tancaments que has calculat. Després indica la forma normal més alta que complix.

#RelacióDependències
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
🔒 Solucions

Contingut protegit: introduïx la clau per a veure'l.


Pràctica 4.3 · En quina forma normal està?

Pràctica 4.3 Autònoma
Durada
1 sessió
Dificultat
RA / CE
RA6: g
Programari
Paper
Lliurament
Taula de respostes justificades

Enunciat

Indica la forma normal més alta de cada relació (la clau primària està subratllada) i, si no està en 3FN, normalitza-la.

  1. ALUMNO(nia, nombre, idiomas) on idiomas = «anglés, francés».
  2. PRESTAMO(isbn, num_socio, fecha, titulo, nombre_socio, fecha_devolucion).
  3. EMPLEADO(id_emp, nombre, cod_postal, poblacion), amb cod_postal → poblacion.
  4. VUELO(num_vuelo, fecha, avion, plazas_avion, piloto), amb avion → plazas_avion.
  5. PRODUCTO(id_producto, nombre, precio, iva), on tots depenen només d’id_producto.
  6. NOTA(id_alumno, id_modulo, evaluacion, nota, nombre_modulo).

Comprovació

Comprobación
  • La relació 1 no està en 1FN.
  • Les relacions 2 i 6 estan en 1FN (dependències parcials).
  • Les relacions 3 i 4 estan en 2FN (dependències transitives).
  • La relació 5 està en FNBC.
Pista per a la relació 4

La clau és composta (num_vuelo, fecha). avion depén de tota la clau (el mateix número de vol pot usar avions distints en dies distints), però plazas_avion depén d’avion, que no és clau: dependència transitiva.


Pràctica 4.4 · Reserves d’un hotel rural

Pràctica 4.4 Autònoma
Durada
2 sessions
Dificultat
RA / CE
RA6: b, c, e, g
Programari
Paper o Data Modeler
Lliurament
Informe de normalització complet

Context

Un hotel rural gestiona les reserves amb este formulari en paper, que han passat a un full de càlcul:

cod_reservafecha_reservadni_clientenombre_clienteemailnum_habtipo_habprecio_noche_tipofecha_entradafecha_salidaextrasimporte_extras
R101/0933333333PElena Sanzelena@mail.es3Doble8510/1012/10Esmorzar, Aparcament30
R101/0933333333PElena Sanzelena@mail.es4Doble8510/1012/10Esmorzar20
R205/0944444444AIván Moraivan@mail.es1Suite14015/1016/100

Una reserva pot incloure diverses habitacions, cadascuna amb els seus propis extres. El preu per nit depén del tipus d’habitació. Cada extra té un preu per nit fix.

Enunciat

  1. Llista les anomalies que observes.
  2. Escriu les dependències funcionals i justifica les que no siguen evidents.
  3. Determina la clau candidata.
  4. Normalitza fins a 3FN mostrant el resultat de cada forma normal.
  5. Decidix què fer amb importe_extras: és un atribut derivat? Ha de guardar-se?
  6. Escriu almenys dues restriccions que no queden arreplegades (per exemple, que una habitació no tinga dues reserves solapades).

Comprovació

Comprobación
  • extras es tracta com a multivalorat en 1FN i acaba en una taula amb la seua pròpia clau.

  • El preu per nit s’associa al tipus d’habitació, no a la reserva.

  • L’esquema final té entre 6 i 8 taules, i totes estan en 3FN.


Pràctica 4.5 · FNBC i dependències perdudes

Pràctica 4.5 Repte
Durada
1 sessió
Dificultat
RA / CE
RA6: g, h
Programari
Paper
Lliurament
Anàlisi raonada

Context

En una autoescola, cada professor dóna classe en una sola seu. Un alumne, en cada seu a què acudix, té assignat un únic professor.

CLASE(alumno, sede, profesor) amb alumno, sede → profesor i profesor → sede.

Enunciat

  1. Calcula les claus candidates.
  2. Demostra que la relació està en 3FN però no en FNBC.
  3. Descompon-la en FNBC i comprova que la descomposició és sense pèrdua.
  4. Quina dependència es perd? Escriu un exemple de dades que la incomplisca i que les noves taules acceptarien.
  5. Recomana una solució per a l’autoescola i explica com garantiries la regla perduda (avança el que faries a la UD09).
Pista

Les claus són (alumno, sede) i (alumno, profesor). La descomposició en FNBC és PROFESOR_SEDE(profesor, sede) i ALUMNO_PROFESOR(alumno, profesor). Prova d’assignar al mateix alumne dos professors de la mateixa seu.


Pràctica 4.6 · Normalitzar o desnormalitzar?

Pràctica 4.6 Repte
Durada
1 sessió
Dificultat
RA / CE
RA6: g
Programari
Document
Lliurament
Informe de decisió (1 pàgina per cas)

Enunciat

Per a cada proposta d’un company, decidix si l’acceptes, la rebutges o l’acceptes amb condicions. Justifica la decisió amb arguments d’integritat, rendiment i manteniment.

  1. «Guardem el nombre_ciclo en cada fila de MATRICULA perquè els informes de secretaria no necessiten tres JOIN».
  2. «Afegim num_alumnos a la taula GRUPO, perquè el panell de direcció d’estudis el consulta cada vegada que s’obri».
  3. «A la taula de comandes de la botiga en línia guardem l’adreça d’enviament completa, encara que ja estiga en CLIENTE».
  4. «Per al quadre de comandament de la direcció, creem una taula amb una fila per cicle, curs i any amb la nota mitjana i el nombre d’aprovats, que es recalcula cada nit».

Comprovació

Comprobación
  • El cas 3 s’identifica com una dada històrica (l’adreça pot canviar després de la comanda).

  • El cas 4 es relaciona amb els sistemes OLAP de la UD01.

  • Quan acceptes una redundància, expliques com es manté sincronitzada.


Projecte EduGest · UD04: informe de normalització

Pràctica EduGest-4 Projecte
Durada
Treball transversal (1 setmana)
Dificultat
RA / CE
RA6: b, c, e, g, h
Programari
Document Markdown
Lliurament
edugest/docs/04-normalizacion.md

Enunciat

  1. Migració del full heretat. Normalitza el full MATRICULA_HOJA de la teoria afegint-li estes columnes: email_tutor, departamento_tutor, faltas_totales. Indica com encaixa el resultat en el teu model d’EduGest.
  2. Verificació del teu esquema. Per a cada taula del teu model relacional (EduGest-3), escriu les seues dependències funcionals i justifica que està en 3FN (o en FNBC).
  3. Comparació amb la solució de referència. Ja pots consultar el model de referència. Escriu una taula amb les diferències i, per a cadascuna, si la teua decisió era també vàlida o si la corregixes.
  4. Catàleg de restriccions actualitzat amb les que hagen aparegut en normalitzar.

Comprovació

Comprobación
  • faltas_totales s’identifica com un atribut derivat i es justifica si es guarda o es calcula.
  • Cap taula de l’esquema final té dependències parcials ni transitives.
  • Les diferències amb la referència estan argumentades, no només llistades.

A partir de la UD05 tot el grup treballarà amb l’esquema de referència perquè els resultats de les consultes coincidisquen. Si el teu disseny era distint però correcte, menciona’l en la teua documentació: eixa capacitat de justificar alternatives és exactament el que avalua RA6.