UF1A3. Teoria 2a part

De wikijoan
Salta a la navegació Salta a la cerca

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 (FK))
--------
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