3. Pas a taules
Hi ha dues tècniques per a dissenyar BD relacionals, depenent de si hem fet prèviament el E-R o no:
Obtenció de l'esquema de taules
S'utilitza quan partim d'un esquema E-R. Aplicant-li unes regles obtindrem el conjunt de taules corresponent.
S'utilitza quan partim d'un esquema de taules "fet de qualsevol manera". Aplicant unes regles, obtindrem un bon esquema de taules.
En ambdues tècniques, es pretén aconseguir els següents objectius:
- Conservar les restriccions de clau, connectivitat i cardinalitat.
- Evitar duplicacions de dades.
- Evitar valors nuls on no toque posar-los.
Pla de treball
- Estudiarem primer la transformació del E-R a taules, i després la normalització.
- Per a cada suposit estudirem el seu pas a taules de manera general, amb lletres, i després amb un exemple concret, amb noms de taules i atributs.
3.1. Entitats i atributs
3.1.1. Entitats amb atributs simples
Cada entitat amb els seus atributs simples es converteix directament en una taula. La clau de l'entitat serà la clau primària de la taula.

Representació de la taula
\(A=\underline{a0} + a1 + a2 + a3\)
\(\text{Domini}(a2) = \{\text{'S'}, \text{'N'}\}\)
\(\text{VNN: } a3\)

Representació de la taula
\(\text{LLIBRES} = \underline{cod\_llibre} + títol + idioma + any\)
\(\text{VNN: } any\)
\(\text{Domini}(idioma) = \{\text{'Val'}, \text{'Cas'}, \text{'altre'}\}\)
Atenció
Ací hem fet servir any (año) per a representar l'any de publicació del llibre. Quan fem la implementació, donat que any és una paraula reservada en molts llenguatges de programació i a SQL (any <--> algun), no és recomanable usar-la com a nom d'atribut. Podríem usar any_pub o any_publicació.
3.1.2. Entitats amb atributs compostos
Els atributs compostos s'aplanen: cada sub-atribut passa a ser un camp de la taula.

Representació de la taula
\(A=\underline{a0} + a1 + a2 + a3\)

Representació de la taula
\(Clientes=\underline{codi}+nom + carrer + numero + poblacio\)
\(\hspace{1cm} Vnn:nom\)
Els atributs multivalents es tracten a l'apartat 3.5.
3.2. Relacions binàries
3.2.1. Relació binària M:M
Quan una relació és M:M, cal crear una taula per a la relació. Els atributs de la nova taula seran:
- Les claus de les entitats de la relació (que tots junts formaran la clau i cadascun d'ells serà una clau aliena)
- Els propis atributs de la relació.

Representació de la taula
\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(R = \underline{a0 + b0} + r\)
\(\hspace{1cm} C. Ali.: a0 → A(a0)\)
\(\hspace{2.3cm} b0 → B(b0)\)
Exercici 1. Realitza el pas a taules de la relació M:M següent

Exercici 2. Realitza el pas a taules de la relació M:M següent

3.2.2. Relació binària 1:M
En una relació 1:M, la clau de l'entitat del costat "1" passa com a clau aliena a la taula de l'entitat del costat "M". Els atributs de la relació també van a la taula del costat "M".

Representació de la taula
\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1 + a0 + r\)
\(\hspace{1cm} C. Aj. : a0 → A(a0)\)
\(\hspace{1cm} RI : si nulo(a0) → nulo (r)\)

Representació de la taula
\(PROFESSORS = \underline{dni}+ nom\)
\(ALUMNES = \underline{num}+ nom + dni\_tutor + informe\)
\(\hspace{1cm} C. Ali. : dni\_tutor \to PROFESSORS(dni)\)
\(\hspace{1cm} R.I : nul(dni\_tutor) \to nul(informe)\)
És a dir: si en algun registre de l’entitat alumnes hi ha un valor de dni_tutor que
està buit, també haurà d’estar buit el valor d'informe d’eixe registre. Mirem les següents dades:
| num | nom | dni_tutor | informe |
|---|---|---|---|
| 1 | Pep | 33333333 | Es porta mal |
| 2 | Pepa | 33333333 | No fa els deures |
| 3 | Pepet | 55555555 | Molesta en classe |
| 4 | Pepin | ||
| 5 | Pepeta | ||
| 6 | Pepiqueta | 55555555 |
Com pot observar-se, quí ha posat l'informe a l'alumne 4?. Amb la R.I. diem que no té sentit que Pepin tinga alguna cosa en el camp informe ja que no té cap tutor assignat (i l’informe l’elabora el tutor). Ara bé, potser que Pepiqueta tinga un tutor assignat però que encara no ha fet cap informe d’ella.
Exercici 3. Realitza el pas a taules de la relació 1:M següent

Exercici 4. Realitza el pas a taules de la relació 1:M següent

Relació binària 1:M — Altra solució sense restricció

Representació de la taula
\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(R= \underline{b0} + a0 + r\)
\(\hspace{1cm} C. Aj. : a0 → A(a0)\)
\(\hspace{1cm} C. Aj. : b0 → B(b0)\)
\(\hspace{1cm} VNN: a0\)
Si no volem tindre la R.I., en compte d'expressar la relació mitjançant una de les entitats, podríem posar-la com a una taula apart, on estigueren només les parelles d'ocurrències de les dos entitats que estiguen relacionades.

Representació de la taula
\(PROFESSORS = \underline{dni}+ nom\)
\(ALUMNES = \underline{num}+ nom\)
\(TUTORIES = \underline{num\_alumne} + dni\_tutor + informe\)
\(\hspace{1cm} C. Ali. : num\_alumne \to ALUMNES(num)\)
\(\hspace{1cm} C. Ali. : dni\_tutor \to PROFESSORS(dni)\)
\(\hspace{1cm} VNN(dni\_tutor)\)
En la taula ALUMNES estaran tots els alumnes, però en la de TUTORIES només posarem aquells alumnes que tenen tutor. Per això li posem el VNN a dni_tutor. Així no podrà donar-se el cas que un alumne tinga informe sense tindre tutor.
3.2.3. Relació binària 1:1
Les relacions 1:1 són iguals que les de 1:M però posant la corresponent clau alternativa. Hem de triar-ne una de les dos com a primària i l'altra com a alternativa.
Recordem que, com havíem dit que les claus alternatives poden tindre valors nuls, cal indicar també que si és nul, que també ho siga l’atribut de la relació ( R.I: nul(a0) → nul(r) ). És a dir, una 1:1 és igual que una 1:M però amb la clau alternativa.

Les possibles solucions són:
\(A = \underline{a0}+ a1 + b0 + r\)
\(\hspace{1cm} C. Ali. : b0 \to B(b0)\)
\(\hspace{1cm} C. Alt. : b0\)
\(\hspace{1cm} RI : \text{si nul(b0)} \to \text{nul(r)}\)
\(B = \underline{b0} + b1\)
\(B = \underline{b0} + b1 + a0 + r\)
\(\hspace{1cm} C. Ali. : a0 \to A(a0)\)
\(\hspace{1cm} C. Alt. : a0\)
\(\hspace{1cm} RI : \text{si nul(a0)} \to \text{nul(r)}\)
\(A = \underline{a0}+ a1\)
Amb R.E."
Si l'entitat A tinguera una restricció d'existència sobre la relació R, usaríem la primera solució, ja que desapareixeria la R.I. Escriu la solució.
Relació binària 1:1 — Altra solució
Si no volem eixa R.I., en compte d'expressar R per mig de A (o B), podríem posar-la com a una nova taula apart, on estigueren només les parelles de A i B relacionades.
\(A = \underline{a0}+ a1\)
\(B = \underline{b0} + b1\)
\(R= \underline{a0} + b0 + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : b0 → B(b0)\)
\(\hspace{1cm} C. Alt. : b0 → B(b0)\)
\(\hspace{1cm} VNN : b0\)

No entrem en conflictes de la llibertat de les persones, ni en la poligàmia, ni en la homosexualitat, ni en la transexualitat, ni en la bisexualitat, ni en la pansexualitat, ni en la asexualitat, ni en la poliamor, ni en la monogàmia, ni en la monogàmia serial, ni en el poliamor jeràrquic, ni en el poliamor no jeràrquic, ni en el poliamor primari/secundari...
Exercici 6. Realitza el pas a taules de la relació 1:1 següent

Soluciona-ho de les 4 maneres possibles:
- Sense taula per a la relació, on el cotxe te el pilot
- Sense taula per a la relació, on el pilot te el cotxe
- Amb taula per a la relació, on el cotxe te el pilot
- Amb taula per a la relació, on el pilot te el cotxe
3.3. Relacions unàries
Cal imaginar que una unària és com una binària però on les dos entitats són realment la mateixa. En una mateixa taula tindrem 2 voltes la clau de l'entitat. Per tant, caldrà triar un nom diferent.
Respecte dels noms dels camps en relacions unàries
- Si les 2 ocurrències que es relacionen tenen el mateix significat en la relació, els noms poden ser qualsevol. Per exemple, en la relació
casar-seels codis de les persones podrien dir-secònjuge1iconjuge2, posem per cas. - Però si tenen una participació diferent en la relació, els noms hauran de ser significatius. Per exemple, en la relació
estimarels atributs haurien de dir-seestimadoriestimat, posem per cas.
3.3.1. Relació unària M:M

Es crea una taula nova per a la relació amb dues claus alienes que apunten a la mateixa taula (amb noms diferents).
Representació de la taula
\(A = \underline{a0}+ a1\)
\(R= \underline{a0 + a0'} + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : a0' → A(a0)\)
3.3.2. Relació unària 1:M

La clau aliena va a la mateixa taula (amb un nom diferent per distingir-la).
Representació de la taula
\(A = \underline{a0}+ a1 + a0' + r\)
\(\hspace{1cm} C. Ali. : a0' → A(a0)\)
\(\hspace{1cm} RI : \text{si nul(a0')} → nul(r)\)
3.3.3. Relació unària 1:1

Com en la binària 1:1, però amb clau alternativa a la mateixa taula.
Representació de la taula
\(A = \underline{a0}+ a1 + a0' + r\)
\(\hspace{1cm} C. Ali. : a0' → A(a0)\)
\(\hspace{1cm} C. Alt. : a0'\)
\(\hspace{1cm} RI : \text{si nul(a0')} → nul(r)\)
Exercici 7. Realitza el pas a taules de la relació unària següent

Exercici 8. Realitza el pas a taules de la relació unària següent

Exercici 9. Realitza el pas a taules de la relació unària següent

3.4. Relacions ternàries
Totes les ternàries generen taula nova per a la relació R.
Atributs de la nova taula:
- Les claus de les corresponents entitats
- Els atributs propis de la relació
Clau de la nova taula:
- Si és M:M:M: la clau estarà formada per les claus de les tres taules.
- Si no: la clau estarà formada per les claus de 2 de les 3 taules. N'hi haurà tantes claus com connectivitats a "1", sent la clau respectiva la parella dels altres dos. Una serà la primària; si n'hi ha més, les altres seran les alternatives.
Es veurà més clar amb els exemples següents.
3.4.1. Relació ternària M:M:M (zero triangles blancs)

Representació de la taula
\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(C = \underline{c0}+ c1\)
\(R= \underline{a0 + b0 + c0} + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : b0 → B(b0)\)
\(\hspace{1cm} C. Ali. : c0 → C(c0)\)
La clau de R = clau de A + clau de B + clau de C. Totes tres formen la clau primària i cadascuna és clau aliena.
Exercici 10. Realitza el pas a taules de la relació M:M:M següent

3.4.2. Relació ternària 1:M:M (1 triangle blanc)

La clau de R = clau de A + clau de B (les dues del costat "M"). La clau de C és clau aliena però no forma part de la clau primària.
Representació de la taula
\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(C = \underline{c0}+ c1\)
\(R= \underline{a0 + b0} + c0 + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : b0 → B(b0)\)
\(\hspace{1cm} C. Ali. : c0 → C(c0)\)
\(\hspace{1cm} VNN : c0\)
3.4.3. Relació ternària 1:1:M (2 triangles blancs)

La clau de R = clau de A (el costat "M"). Les claus de B i C seran claus alternatives.
Representació de la taula
\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(C = \underline{c0}+ c1\)
\(R= \underline{a0 + b0} + c0 + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : b0 → B(b0)\)
\(\hspace{1cm} C. Ali. : c0 → C(c0)\)
\(\hspace{1cm} C. Alt. : a0 + c0\)
\(\hspace{1cm} VNN : c0\)
3.4.4. Relació ternària 1:1:1 (3 triangles blancs)

La clau de R = clau de qualsevol de les tres entitats (s'elegix una com a primària i les altres dos seran alternatives).
Representació de la taula
\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(C = \underline{c0}+ c1\)
\(R= \underline{a0 + b0} + c0 + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : b0 → B(b0)\)
\(\hspace{1cm} C. Ali. : c0 → C(c0)\)
\(\hspace{1cm} VNN : c0\)
\(\hspace{1cm} C. Alt. : a0 + c0\)
\(\hspace{1cm} C. Alt. : b0 + c0\)
Exercici 11
Com quedaria el pas a taules de l’exercici anterior si les connectivitats de GRUPS i de PROFESSORS respecte a la relació “pertànyer” estigueren a 1 i no a M.
3.5. Atributs multivalents
Un atribut multivalent és un atribut que pot tenir diversos valors per a una mateixa ocurrència de l'entitat. Per a fer el pas a taules d'atributs multivalents sempre crearem una taula nova per a guardar dit atribut.

Representació de la taula
\(A = \underline{a0}+ a1 + \ldots\)
$AT =\underline{a0 + an}
\(\hspace{1cm} C. Ali. : a0 \to A(a0)\)

Representació de la taula
\(CLIENTS = \underline{codi}+ nom + adreça + \ldots\)
\(CLI\_TEL = \underline{codi + tel}\)
\(\hspace{1cm} C. Ali. : codi \to CLIENTS(codi)\)
Si la relació entre clients i telèfons fóra 1:M (un telèfon només és d'un client), la clau de CLI_TEL seria només el codi del telèfon.
Exercici 12. Realitza el pas a taules de l'atribut multivalent següent
Passa a taules este E-R tenint en compte que un mateix telèfon pot pertànyer a més d’un client però un e-mail només és d’un i prou.

3.6. Atributs multivalents compostos
S'aplica el mateix principi: es crea una taula nova amb la clau de l'entitat i els sub-atributs del multivalent compost.

Representació de la taula
\(A = \underline{a0}+ ... + \{a1 + a2 + a3\}\)
\(\hspace{2cm} \Downarrow\)
\(A = \underline{a0} + \ldots\)
\(AT =\underline{a0 + a1 + a2 + a3}\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)

Representació de la taula
\(CLIENTS = \underline{codi}+ \ldots\)
\(CLI\_ADR = \underline{codi + carrer +numero + població}\)
\(\hspace{1cm} C. Ali. : codi \to CLIENTS(codi)\)
Això suposant que la relació entre clients i adreces és de M:M. Si fóra 1:M (és a dir, una adreça només correspon a un client), la clau de CLI_ADR seria només el codi de l’adreça (carrer + número + població).
Exercici 13. Realitza el pas a taules de l'atribut multivalent compost següent
Passa a taules este E-R tenint en compte que un mateix telèfon pot pertànyer a més d’un client però un e-mail només és d’un i prou.

3.7. Restriccions d'identificació (entitats dèbils)
Les restriccions tipus ID sempre es donen en relacions 1:M (amb la ID a la part del "molts"). Recorda que son elementes que necessiten de l'ajuda de la part del 1 per a identificar-se El pas a taules consisteix en:
- Fer el pas a taules d'una relació 1:M
- Subratllar també la clau aliena. Com esta ja no podrà tindre valors nuls, ja no té sentit posar la R.I.
nul(a0) → nul(r)

Representació de la taula
\(A = \underline{a0}+ a1\)
\(B = \underline{b0 +a0}+ b1 + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)

Representació de la taula
\(LLIBRES = \underline{codi} + titol + idioma + any\)
\(\hspace{1cm} VNN: titol\)
\(EXEMPLARS = \underline{num\_exemplar + codi\_llibre } + estat\)
\(\hspace{1cm} C. Ali. : codi\_llibre \to LLIBRES(codi)\)
Exercici 14. Realitza el pas a taules de la relació 1:M amb ID següent

Exercici 15
Pensa com seria el pas a taules de la ID anterior si haguérem resolt la relació subministrar de la segona forma que hem vist en les relacions 1:M (és a dir: sense la R.I. nul(...) → nul(...)).
3.8. Restriccions d'existència
Hi ha dues formes de tractar les restriccions d'existència (RE), depenent de si les parelles d'ocurrències relacionades estan en la mateixa taula que l'entitat que té la restricció o no:
- Si estan en la mateixa taula, ho indicarem amb VNN
- SI no, ho indicarem amb una R.I. semblant a una clau aliena ( \(\subset\) )
3.8.1 La R.E. en la mateixa taula: VNN
Si l'entitat i les parelles relacionades estan en la mateixa taula, expressarem la RE com un VNN sobre la clau aliena.
Exemple: Tots els professors han de pertànyer obligatòriament a un departament.

Primer, fem el pas a taules de la relació 1:M sense tenir en compte la RE. Ens quedaria així:
Representació de la taula inicial
\(DEPARTAMENTS = \underline{codi} + nom\)
\(PROFESSORS = \underline{dni} + nom + dep + data\)
\(\hspace{1cm} C. Ali: dep → DEPARTAMENTS(codi)\)
Pensem ara ocurrències de la taula PROFESSORS:
| num | nom | dep | data | estat |
|---|---|---|---|---|
| 1 | Pep | Inf | 01/01/2020 | ✅ |
| 2 | Pepa | Mat | 01/04/2020 | ✅ |
| 3 | Pepet | 03/01/2020 | ❌ | |
| 4 | Pepin | Cas | 01/01/2020 | ✅ |
No volem que passe això: que hi hagen professors sense departament (com és el cas del 3, Pepet). Per tant, obligarem a que en el camp dep no puguen haver valors nuls. La restricció d'existència E significa que Tots els professors han de pertànyer obligatòriament a un departament:
- En quina taula estan tots els professors?: En la de PROFESSORS
- En quina taula estan les parelles professor-departament?: En la de PROFESSORS també
Veiem que per a expressar la E ho tenim tot en la mateixa taula. En eixe cas expressarem la E com un VNN.
Representació de la taula final
\(DEPARTAMENTS = \underline{codi} + nom\)
\(PROFESSORS = \underline{dni} + nom + dep + data\)
\(\hspace{1cm} C. Ali: dep → DEPARTAMENTS(codi)\)
\(\hspace{1cm} VNN: dep\)
3.8.2 La R.E. en taules diferents: R.I. tipus ⊂ (inclòs)
Ho vegem també amb un exemple: Tots els equips han de tindre obligatòriament algun jugador.

Fem el pas de la relació 1:M sense tenir en compte la RE. Ens quedaria així:
Representació de la taula inicial
\(EQUIPS = \underline{codi} + nom\)
\(JUGADORS = \underline{dni} + nom + equip + posició\)
\(\hspace{1cm} C. Ali: equip → EQUIPS(codi)\)
\(\hspace{1cm} R. I: nul(equip) → nul(posició)\)
Anem a veure ocurrències de la taula JUGADORS i EQUIPS:
| dni | nom | equip | posició | vàlid |
|---|---|---|---|---|
| 1 | Pep | BAR | porter | ✅ |
| 2 | Pepa | VAL | ✅ | |
| 3 | Pepet | MAD | migcamp | ✅ |
| 4 | Pepin | ✅ | ||
| 5 | Pepeta | defensa | ❌ |
Com podem veure, no tenim cap problema en que un jugador no tinga possició. Tampoc en que un jugador no tinga equip. Si que tenim la RI que ens diu que si un jugador no te equip, no pot tindre posició, per la qual cosa el registre 5 és incorrecte.
Anem a veure la RE els equips:
| codi | nom | vàlid |
|---|---|---|
| BAR | Barça | ✅ |
| VAL | València | ✅ |
| MAD | Madrid | ✅ |
| LLE | Llevant | ❌ |
Fixa't que tenim la RE, que ens diu que tots els equips han de tindre algun jugador. Això vol dir que tots els codis de la taula EQUIPS han d'aparéixer com a ocurrències del camp equip de la taula JUGADORS. En el nostre exemple, l'equip LLE no té cap jugador, per tant, és incorrecte.
Ho solucionarem amb una R.I. tipus ⊂, que ens diu que tots els codis de la taula EQUIPS han d'aparéixer com a ocurrències del camp equip de la taula JUGADORS.
És a dir, eixa E significa que Tots els equips han de tindre obligatòriament algun jugador que jugue en ell:
- En quina taula estan tots els equips?: En la d’EQUIPS
- En quina taula estan les parelles equip-jugador? En l’altra taula: la de JUGADORS
Representació de la taula final
\(EQUIPS = \underline{codi} + nom\)
\(JUGADORS = \underline{dni} + nom + equip + posició\)
\(\hspace{1cm} C. Ali: equip → EQUIPS(codi)\)
\(\hspace{1cm} R. I: nul(equip) → nul(posició)\)
\(R. I: EQUIPS(codi) ⊂ JUGADORS(equip)\)
3.8.3 Totes les combinacions possibles de relació i RE
Relació binària 1:M amb R.E a la part del Molts

\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1 + a0 + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} VNN: a0\)
Relació unària 1:M amb R.E a la part del Molts

\(A = \underline{a0}+ a1 + a0' + r\)
\(\hspace{1cm} C. Ali. : a0' → A(a0)\)
\(\hspace{1cm} VNN: a0'\)
Relació binària 1:1 amb R.E

\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1 + a0 + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Alt. : a0)\)
\(\hspace{1cm} VNN: a0\)
Relació binària 1:1 amb doble R.E

Aquest cas és especial. L’entitat A està tan íntimament relacionada amb l’entitat B, que es pot considerar la mateixa entitat. Per tant, no tindrem una taula per a A i altra per a B, sinó que només tindrem una única taula (li posarem el nom més adequat), on posarem tots els atributs:
\(R = A = B = \underline{a0}+ a1 +b0 +b1 +r\)
\(\hspace{1cm} C. Alt. : b0\)
\(\hspace{1cm} VNN: b0\)
També podriem fer-ho amb b0 com a clau primària i a0 com a clau alternativa. La qüestió és que només tindrem una taula.
Relació unària 1:1 amb doble R.E

Tots els següents casos són equivalents i es resolen igual:
- Unària 1:1 amb una R.E
- Unària 1:M amb una R.E
- Unària 1:M amb doble R.E
Aquest cas és especial. L’entitat A està tan íntimament relacionada amb l’entitat B, que es pot considerar la mateixa entitat. Per tant, no tindrem una taula per a A i altra per a B, sinó que només tindrem una única taula (li posarem el nom més adequat), on posarem tots els atributs:
\(A = \underline{a0}+ a1 +b0 +a0' +r\)
\(\hspace{1cm} C. Ali. : a0' \to A(a0)\)
\(\hspace{1cm} C. Alt. : a0\)
\(\hspace{1cm} VNN: a0'\)
Relació binària 1:M amb R.E a la part de l'1

\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1 + a0 + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} RI: nul(a0) → nul(r)\)
\(R.I.: A[a0] ⊂ B[b0]\)
Relació binària 1:M amb doble R.E

\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1 + a0 + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} VNN: a0\)
\(R.I.: A[a0] ⊂ B[b0]\)
Relació binària N:M amb R.E

\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(R= \underline{a0 + b0} + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : b0 → B(b0)\)
\(R.I.: B[b0] ⊂ R[b0]\)
Relació binària N:M amb doble R.E

\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(R= \underline{a0 + b0} + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : b0 → B(b0)\)
\(R.I.: B[b0] ⊂ R[b0]\)
\(R.I.: A[a0] ⊂ R[a0]\)
Relació unària N:M amb R.E

\(A = \underline{a0}+ a1\)
\(R= \underline{a0 + a0'} + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : a0' → A(a0')\)
\(R.I.: A[a0] ⊂ R[a0]\)
Relació unària N:M amb doble R.E

\(A = \underline{a0}+ a1\)
\(R= \underline{a0 + a0'} + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : a0' → A(a0')\)
\(R.I.: A[a0] ⊂ R[a0']\)
\(R.I.: A[a0] ⊂ R[a0]\)
Relació ternària amb una R.E
Per a l'exemple femr servir una 1:1:M, però la restricció d'existència podria estar en qualsevol de les tres entitats.

\(A = \underline{a0} + a1\)
\(B = \underline{b0}+ b1\)
\(C = \underline{c0}+ c1\)
\(R = \underline{a0 + b0} + c0+ r\)
\(\hspace{1cm} C. Aj. : a0 → A(a0)\)
\(\hspace{2.3cm} b0 → B(b0)\)
\(\hspace{2.3cm} c0 → C(c0)\)
\(\hspace{1cm} VNN. : c0\)
\(\hspace{1cm} C. Alt. : (a0 + b0))\)
\(R.I.: A[a0] ⊂ R[a0]\)
Donat que totes les ternàries generen taula per a la relació, qualsevol R.E. que posem en alguna de les entitats (independentment de la cardinalitat de la relació), provocarà una R.I. com l’anterior. És a dir:
- A té una R.E. sobre R: A[a0] ⊂ R[a0]
- Si B té una R.E. sobre R: B[b0] ⊂ R[b0]
- Si C té una R.E. sobre R: C[c0] ⊂ R[c0]
Resum per tipus de relació
- Binària 1:M amb R.E a la part del "Molts": VNN a la clau aliena que ja estava en la taula del "Molts".
- Binària 1:M amb R.E a la part de l'"1": R.I. tipus ⊂.
- Binària 1:M amb doble R.E.: VNN + R.I. tipus ⊂.
- Binària 1:1 amb una R.E.: usar la solució on l'entitat amb la RE té la clau aliena (evita la R.I. de l'atribut).
- Binària 1:1 amb doble R.E.: fusionar les dues entitats en una sola taula.
- Ternàries amb R.E.: sempre R.I. tipus ⊂, ja que totes les ternàries generen taula per a la relació.
Exercici 16.

Exercici 17.

Exercici 18.

Exercici 19.

Exercici 20.

Exercici 21.
Exercici 22.

3.9. Agregacions
Anem a vore com es resol a partir del següent exemple, on la relació de l’agregació és una binària M:M, però els passos a seguir serien els mateixos que si fóra una relació unària o ternària, tinga la connectivitat que tinga.

Passos a seguir:
- Resoldre la relació de l'agregació sense tindre en compte la resta de l'esquema E-R, però SEMPRE ha d'eixir una taula nova per a la relació, encara que siga 1:1 o 1:M.
Representació de la taula abans de l'agregació
\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(R = \underline{a0 + b0} + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : b0 → B(b0)\)
- Continuar amb el disseny de la resta de l'esquema. Per a resoldre les relacions amb l'agregació, ho farem com si estigueren relacionades amb la taula que ha eixit en la relació de l'agregació.
Representació de la taula després de l'agregació
\(C = \underline{c0}+ c1\)
\(S = \underline{c0} + c1 + a0 + b0 + s\)
\(\hspace{1cm} C. Ali. : (a0 + b0) → R(a0 + b0)\)
\(\hspace{1cm} RI : nul(a0+b0) → nul(s)\)
Resultat complet
\(A = \underline{a0}+ a1\)
\(B = \underline{b0}+ b1\)
\(R = \underline{a0 + b0} + r\)
\(\hspace{1cm} C. Ali. : a0 → A(a0)\)
\(\hspace{1cm} C. Ali. : b0 → B(b0)\)
\(C = \underline{c0}+ c1\)
\(S = \underline{c0} + c1 + a0 + b0 + s\)
\(\hspace{1cm} C. Ali. : (a0 + b0) → R(a0 + b0)\)
\(\hspace{1cm} RI : nul(a0+b0) → nul(s)\)
Exercici 23.

3.10. Especialitzacions / Generalitzacions
Anem a veure-ho mitjançant un exemple:

Solució general (vàlida per a tots els tipus). Començarem creant una taula per a l'entitat general i una taula per a cada entitat especialitzada. La clau de la general serà la clau de l'especialitzada, que serà clau aliena en cada subclasse.
Representació de la taula
Taula general:
\(EMPLEATS = \underline{dni}+ nom + cog1 + cog2 + d\_naix + adreça\)
Taules especialitzades:
\(COMERCIALS = \underline{dni}+ comissió\)
\(\hspace{1cm} C. Aj. : dni → EMPLEATS(dni)\)
\(TÈCNICS = \underline{dni}+ nivell\)
\(\hspace{1cm} C. Aj. : dni → EMPLEATS(dni)\)
\(ENGINYERS = \underline{dni} + llicenciatura\)
\(\hspace{1cm} C. Aj. : dni → EMPLEATS(dni)\)
Restriccions addicionals:
Si l'especialització és Total
\(R. I: EMPLEATS[dni] = COMERCIALS[dni] ∪ TÈCNICS[dni] ∪ ENGINYERS[dni]\)
Els dni dels empletas han d'aparéixer entre totes de les tres taules especialitzades.
Si l'especialització és Disjunta
\(R.I: COMERCIALS[dni] ∩ TÈCNICS[dni] = ∅\)
\(\hspace{1cm} COMERCIALS[dni] ∩ ENGINYERS[dni] = ∅\)
\(\hspace{1cm} TÈCNICS[dni] ∩ ENGINYERS[dni] = ∅\)
Els dni dels empleats no poden aparéixer en més d'una de les taules especialitzades; si apareix en una, no pot aparéixer en les altres dues.
Parcial i superposada
Per als altres tipus (parcial i superposada) no posarem cap restricció d'integritat.
Altra forma, si l'especialització és Total i Disjunta: cap taula per a la superclasse, i una taula per cada subclasse amb la clau i els atributs de la superclasse més els atributs propis de la subclasse. Però aquesta opció té inconvenients:
- No es pot controlar que el dni no es puga repetir entre subclasses.
- No és vàlida per a especialitzacions Parcials ni Superposades.
- Quan busquem un empleat qualsevol, haurem de recórrer totes les taules de les subclasses.
Exercici 24.
