Salta el contingut

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

  1. Estudiarem primer la transformació del E-R a taules, i després la normalització.
  2. 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.

Image title

Representació de la taula

\(A=\underline{a0} + a1 + a2 + a3\)

\(\text{Domini}(a2) = \{\text{'S'}, \text{'N'}\}\)

\(\text{VNN: } a3\)

Image title

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.

Image title

Representació de la taula

\(A=\underline{a0} + a1 + a2 + a3\)

Image title

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ó.

Image title

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

Image title

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

Image title

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".

Image title

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)\)

Image title

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 Ha furtat un pendrive
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

Image title

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

Image title

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

Image title

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.

Image title

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.

1:1

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\)

Exercici 5

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

Image title

Soluciona-ho de les 4 maneres possibles:

  1. Sense taula per a la relació, on el cotxe te el pilot
  2. Sense taula per a la relació, on el pilot te el cotxe
  3. Amb taula per a la relació, on el cotxe te el pilot
  4. 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-se els codis de les persones podrien dir-se cònjuge1 i conjuge2, posem per cas.
  • Però si tenen una participació diferent en la relació, els noms hauran de ser significatius. Per exemple, en la relació estimar els atributs haurien de dir-se estimador i estimat, posem per cas.

3.3.1. Relació unària M:M

M:M Unària

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

M:M Unària

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

M:M Unària

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

Image title

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

Image title

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

Image title

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)

Ternaria M:M:M

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

Image title

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

Ternaria 1:M:M

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)

Ternaria 1:1:M

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)

Ternaria 1:1:1

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.

Multivalent

Representació de la taula

\(A = \underline{a0}+ a1 + \ldots\)

$AT =\underline{a0 + an}

\(\hspace{1cm} C. Ali. : a0 \to A(a0)\)

Multivalent

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.

Image title

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.

Image title

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)\)

Image title

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.

Image title

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:

  1. Fer el pas a taules d'una relació 1:M
  2. 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)

Image title

Representació de la taula

\(A = \underline{a0}+ a1\)

\(B = \underline{b0 +a0}+ b1 + r\)

\(\hspace{1cm} C. Ali. : a0 → A(a0)\)

Image title

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

Image title

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:

  1. Si estan en la mateixa taula, ho indicarem amb VNN
  2. 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.

Image title

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.

Image title

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

Image title

\(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

Image title

\(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

Image title

\(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

Image title

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

Image title

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

Image title

\(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

Image title

\(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

Image title

\(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

Image title

\(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

Image title

\(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

Image title

\(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.

Image title

\(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.

Image title

Exercici 17.

Image title

Exercici 18.

Image title

Exercici 19.

Image title

Exercici 20.

Image title

Exercici 21.

Image title

Exercici 22.

Image title

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.

Image title

Passos a seguir:

  1. 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)\)

  1. 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.

Image title

3.10. Especialitzacions / Generalitzacions

Anem a veure-ho mitjançant un exemple:

Image title

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.

Image title