UD04 · Pràctiques
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àctica | Tipus | Nivell | CE principals |
|---|---|---|---|
| 4.1 Normalitzar les factures d’un taller | Guiada | ●○○ | RA6.b, RA6.c, RA6.g |
| 4.2 Dependències, tancaments i claus | Guiada | ●●○ | RA6.e, RA6.g |
| 4.3 En quina forma normal està? | Autònoma | ●●○ | RA6.g |
| 4.4 Reserves d’un hotel rural | Autònoma | ●●○ | RA6.b, RA6.c, RA6.e, RA6.g |
| 4.5 FNBC i dependències perdudes | Repte | ●●● | RA6.g, RA6.h |
| 4.6 Normalitzar o desnormalitzar? | Repte | ●●● | RA6.g |
| Projecte EduGest · UD04 | Projecte | ●●○ | RA6.b, RA6.c, RA6.e, RA6.g, RA6.h |
Pràctica 4.1 · Normalitzar les factures d’un taller
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_factura | fecha | matricula | modelo | dni_cliente | cliente | telefonos_cliente | cod_servicio | servicio | precio_actual | precio_aplicado | cantidad | mecanico | especialidad_mecanico |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| F-101 | 03/10/2026 | 1234-LMN | Seat Ibiza | 11111111H | Pedro Ruiz | 600100200 | S01 | Canvi d’oli | 45 | 40 | 1 | Ana | Motor |
| F-101 | 03/10/2026 | 1234-LMN | Seat Ibiza | 11111111H | Pedro Ruiz | 600100200 | S07 | Filtre d’aire | 18 | 18 | 1 | Ana | Motor |
| F-102 | 04/10/2026 | 5678-PQR | Kia Ceed | 22222222J | Laura Gil | 611200300, 966123456 | S01 | Canvi d’oli | 45 | 45 | 1 | Luis | Motor |
| F-102 | 04/10/2026 | 5678-PQR | Kia Ceed | 22222222J | Laura Gil | 611200300, 966123456 | S12 | Pneumàtic | 80 | 75 | 4 | Marta | Rodes |
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
Dependències funcionals. A partir de les regles, escriu:
num_factura → fecha, matriculamatricula → modelo, dni_clientedni_cliente → cliente(i els telèfons, que són multivalorats)cod_servicio → servicio, precio_actualnum_factura, cod_servicio → precio_aplicado, cantidad, mecanicomecanico → especialidad_mecanico
Clau candidata.
num_facturaicod_serviciono apareixen a la dreta de cap dependència. Calcula i comprova que conté tots els atributs (excepte els telèfons, que es tracten en 1FN).1FN. Trau
telefonos_clientea TELEFONO_CLIENTE(dni_cliente, telefono).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)
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.
- En FACTURA_2:
Verifica que amb les taules finals desapareixen les anomalies del principi.
🔒 Solució: esquema en 3FN
Comprovació
Obtens 7 taules i totes tenen clau primària.
Cap taula conté alhora
clienteinum_factura.El client d’una factura s’obté a través del vehicle (factura → vehicle → client).
Expliques per què
precio_actualiprecio_aplicadoestan en taules distintes.
Errors habituals
- Guardar
dni_clientetambé 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_aplicadoper pensar que és redundant ambprecio_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
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 |
|---|---|---|
| a | R(A, B, C, D) | A → B, B → C, C → D |
| b | R(A, B, C, D) | AB → C, C → D, D → A |
| c | R(A, B, C, D, E) | A → BC, CD → E, B → D, E → A |
| d | CURSO(cod_curso, aula, hora, profesor) | cod_curso → profesor; aula, hora → cod_curso; profesor, hora → aula |
🔒 Solucions
Pràctica 4.3 · En quina forma normal està?
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.
- ALUMNO(nia, nombre, idiomas) on
idiomas= «anglés, francés». - PRESTAMO(isbn, num_socio, fecha, titulo, nombre_socio, fecha_devolucion).
- EMPLEADO(id_emp, nombre, cod_postal, poblacion), amb
cod_postal → poblacion. - VUELO(num_vuelo, fecha, avion, plazas_avion, piloto), amb
avion → plazas_avion. - PRODUCTO(id_producto, nombre, precio, iva), on tots depenen només d’
id_producto. - NOTA(id_alumno, id_modulo, evaluacion, nota, nombre_modulo).
Comprovació
- 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
Context
Un hotel rural gestiona les reserves amb este formulari en paper, que han passat a un full de càlcul:
| cod_reserva | fecha_reserva | dni_cliente | nombre_cliente | num_hab | tipo_hab | precio_noche_tipo | fecha_entrada | fecha_salida | extras | importe_extras | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| R1 | 01/09 | 33333333P | Elena Sanz | elena@mail.es | 3 | Doble | 85 | 10/10 | 12/10 | Esmorzar, Aparcament | 30 |
| R1 | 01/09 | 33333333P | Elena Sanz | elena@mail.es | 4 | Doble | 85 | 10/10 | 12/10 | Esmorzar | 20 |
| R2 | 05/09 | 44444444A | Iván Mora | ivan@mail.es | 1 | Suite | 140 | 15/10 | 16/10 | 0 |
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
- Llista les anomalies que observes.
- Escriu les dependències funcionals i justifica les que no siguen evidents.
- Determina la clau candidata.
- Normalitza fins a 3FN mostrant el resultat de cada forma normal.
- Decidix què fer amb
importe_extras: és un atribut derivat? Ha de guardar-se? - Escriu almenys dues restriccions que no queden arreplegades (per exemple, que una habitació no tinga dues reserves solapades).
Comprovació
extrases 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
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
- Calcula les claus candidates.
- Demostra que la relació està en 3FN però no en FNBC.
- Descompon-la en FNBC i comprova que la descomposició és sense pèrdua.
- Quina dependència es perd? Escriu un exemple de dades que la incomplisca i que les noves taules acceptarien.
- 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?
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.
- «Guardem el
nombre_cicloen cada fila de MATRICULA perquè els informes de secretaria no necessiten tres JOIN». - «Afegim
num_alumnosa la taula GRUPO, perquè el panell de direcció d’estudis el consulta cada vegada que s’obri». - «A la taula de comandes de la botiga en línia guardem l’adreça d’enviament completa, encara que ja estiga en CLIENTE».
- «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ó
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ó
Enunciat
- 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. - 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).
- 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.
- Catàleg de restriccions actualitzat amb les que hagen aparegut en normalitzar.
Comprovació
-
faltas_totaless’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.