Diferència entre revisions de la pàgina «UF1A3. Teoria 2a part»
m (→Cas 1:M) |
m (→Cas 1:M) |
||
| Línia 151: | Línia 151: | ||
ALUMNE (dni (PK), nom, cognom, tel, id_mun) | ALUMNE (dni (PK), nom, cognom, tel, id_mun) | ||
-------- | -------- | ||
| − | 1234A;Pere;Rovira;636 51 66 77 | + | 1234A;Pere;Rovira;636 51 66 77;1 |
| − | + | 2345B;Maria;Claramunt;638 52 77 88;1 | |
| − | 2345B;Maria;Claramunt;638 52 77 88 | + | 3456C;Rita;Santandreu;646 22 33 44;6 |
| − | + | 4567D;Jordi;Puig;646 44 55 66;3 | |
| − | 3456C;Rita;Santandreu;646 22 33 44 | ||
| − | |||
| − | 4567D;Jordi;Puig;646 44 55 66 | ||
| − | |||
</pre> | </pre> | ||
Revisió del 12:26, 20 oct 2021
Contingut
Referències
T17. Normalització
Exemple que farem servir: ALUMNE cursa ASSIGNATURA
Model E-R
ALUMNE cursa ASSIG (N:M, opcional-opcional) (nota i data són atributs de la interrelació) ALUMNE viu a MUNICIPI (1:M, obligatori-opcional) ALUMNE (dni (PK), nom, cognom, tel, mail) ASSIG (id_assig (PK), assig) MUNICIPI (id_mun (PK), municipi)
ALUMNE cursa ASSIG és opcional-opcional perquè podem considerar casos en què tenim alumnes que estan registrats però que no estan a la bd; i assignatures que aquest curs no tenen cap matrícula.
ALUMNE viu a MUNICIPI és obligatori-opcional. Un alumne segur que pertany a un municipi. Partim d'una base de dades dels municipis de l'Àrea Metropolitana. Si tenim un alumne d'un altre municipi, afegirem el municipi a la bd. Però potser tenim municipis (per ex St Adrià del Besós) sense cap alumne. Ho fem opcional-opcional perquè és el cas més general possible.
Les dades que tenim són les següents:
ALUMNE: 1234A;Pere;Rovira;636 51 66 77;provira@jaumebalmes.net,provira@gmail.com,provira@hp.com 2345B;Maria;Claramunt;638 52 77 88;mclaramunt@jaumebalmes.net,mclaramunt@gmail.com 3456C;Rita;Santandreu;646 22 33 44;rsantandreu@jaumebalmes.net,rsantandreu@gmail.com 4567D;Jordi;Puig;646 44 55 66;jpuig@jaumebalmes.net,jpgui@gmail.com
Veiem que mail és multivaluat.
MUNICIPI: 1;Barcelona 2;Badalona 3;Santa Coloma 4;Sant Adrià 5;L'Hospitalet 6;Cornellà ASSIG: M01;Sistemes Informàtics M02;Bases de Dades M03;Programació M04;Llenguatge Marques M05;Entorns de Desenvolupament
En les interrelacions tenim aquestes dades:
- Pere Rovira viu a Barcelona
- Maria Claramunt viu a Barcelona
- Rita Santandreu viu a Cornellà
- Jordi Puig viu a Santa Coloma
- Pere Rovira està matriculat de Sistemes Informàtics, Bases de Dades, Programació, Llenguatge Marques
- Maria Claramunt està matriculat de Sistemes Informàtics, Bases de Dades
- Rita Santandreu està matriculat de Bases de Dades, Programació, Llenguatge Marques
- Jordi Puig està matriculat de: RES
De moment encara no tenim dades de les notes de les assignatures.
Pas a model relacional: Entitats
Cada entitat es transforma en una taula. L'identificador (o identificadors) de l'entitat passa a ser la clau principal de la relació (la subratllem o bé posem PK (Primary Key)). Si hi ha clau alternativa es posa en negrita (o bé AK).
Les entitats ALUMNE, ASSIG i MUNICIPI generen taula. Podem posar les claus primàries i les claus alternatives.
Les taules que tenim de moment són:
ALUMNE (dni (PK)) ASSIG (id_assig (PK)) MUNICIPI (id_mun (PK))
Ara bé, què passa amb els elements multi-valuats de la taula ALUMNE? Una de les regles és que no pot haver-hi valors multi-valuats. Cada valor multi-valuat el posarem en una fila diferent. La taula alumne queda de la següent manera:
ALUMNE -------- 1234A;Pere;Rovira;636 51 66 77;provira@jaumebalmes.net 1234A;Pere;Rovira;636 51 66 77;provira@gmail.com 1234A;Pere;Rovira;636 51 66 77;provira@hp.com 2345B;Maria;Claramunt;638 52 77 88;mclaramunt@jaumebalmes.net 2345B;Maria;Claramunt;638 52 77 88;mclaramunt@gmail.com 3456C;Rita;Santandreu;646 22 33 44;rsantandreu@jaumebalmes.net 3456C;Rita;Santandreu;646 22 33 44;rsantandreu@gmail.com 4567D;Jordi;Puig;646 44 55 66;jpuig@jaumebalmes.net 4567D;Jordi;Puig;646 44 55 66;jpuig@gmail.com
Ara bé, ara hem trencat la clau primària. Solució: ens veiem obligats a modificar el model ER, creant la relació USUARI té MAIL (1:M):
i ara tindrem una nova taula:
MAIL (mail (PK), tipus) (aprofitem per crear l'atribut tipus: feina, personal, institut) ALUMNE (dni (PK), nom, cognom, tel) (la taula ALUMNE ja no conté el camp mail)
Amb les següents dades:
ALUMNE -------- 1234A;Pere;Rovira;636 51 66 77 1234A;Pere;Rovira;636 51 66 77 2345B;Maria;Claramunt;638 52 77 88 2345B;Maria;Claramunt;638 52 77 88 3456C;Rita;Santandreu;646 22 33 44 3456C;Rita;Santandreu;646 22 33 44 4567D;Jordi;Puig;646 44 55 66 4567D;Jordi;Puig;646 44 55 66 MAIL -------- provira@jaumebalmes.net;institut provira@gmail.com;personal provira@hp.com;feina mclaramunt@jaumebalmes.net;institut mclaramunt@gmail.com;personal rsantandreu@jaumebalmes.net;institut rsantandreu@gmail.com;personal jpuig@jaumebalmes.net;institut jpuig@gmail.com;personal
Relacions binàries de grau 2
Cas N:M
És el cas més senzill: sempre generen taula.
Se crea una tabla que incorpora como claves ajenas o foráneas FK (Foreign Key) cada una de las claves de las entidades que participan en la relación. La clave principal de esta nueva tabla está compuesta por dichos campos. Es importante resaltar que no se trata de 2 claves primarias, sino de una clave primaria compuesta por 2 campos. Si hay atributos propios, pasan a la tabla de la relación.
És el cas de la relació ALUMNE cursa ASSIG (N:M). Com que la interrelació genera taula, li hem de trobar un nom adient. En aquest cas, el més adequat és MATRICULA.
MATRICULA ( dni FK, id_assig FK, nota, data PK (dni, id_assig) ) ------------------------------------- 1;1;NULL;01/09/2021 1;2;NULL;01/09/2021 1;3;NULL;01/09/2021 1;4;NULL;01/09/2021 2;1;NULL;01/09/2021 2;2;NULL;01/09/2021 3;2;NULL;01/09/2021 3;3;NULL;01/09/2021 3;4;NULL;01/09/2021
Cas 1:M
Es pot donar dos casos: que generin taula, o que no.
- Cas 1: Si l'entitat del costat 1 presenta participació opcional, aleshores es crea una nova taula per a la relació que incorpora com a claus forànies les claus de les dues entitats. La clau principal de la relació serà només la clau de l'entitat del costat N.
- Cas 2: Per a la resta de situacions, l'entitat del costat N rep com a clau aliena la clau de l'entitat del costat 1. Els atributs propis de la relació passen a la taula on s'ha incorporat la clau aliena.
En el cas de ALUMNE i MUNICIPI és el cas 2. El costat N és ALUMNE, i el que farem és afegir en la taula ALUMNE el id_mun com a clau forània, fent referència a quin municipi pertany a l'alumne. Per tant, queda:
ALUMNE (dni (PK), nom, cognom, tel, id_mun) -------- 1234A;Pere;Rovira;636 51 66 77;1 2345B;Maria;Claramunt;638 52 77 88;1 3456C;Rita;Santandreu;646 22 33 44;6 4567D;Jordi;Puig;646 44 55 66;3
Cas 1:1
creat per Joan Quintana Compte, octubre 2021