Model Relacional
Llicència: CC BY-NC-SA 4.0
(Reconeixement - NoComercial - CompartirIgual) 🅭
Introducció
Una vegada s'ha realitzat el disseny del model i l'estructura de les dades,
es pot dissenyar com representar aquesta informació en les estructures
utilitzades en les bases de dades relacionals. Aquesta representació s'anomena Model Relacional,
que descriu com es poden organitzar les dades mitjançant taules relacionals.
Taula relacional
Una taula relacional és una estructura que organitza les dades en forma de matriu,
distribuïdes en files i columnes.
Una taula relacional té els següents requisits:
- Cada entrada de la taula, és a dir, cada element que es vol emmagatzemar està representat en una fila o tupla.
- Cada atribut dels elements emmagatzemats es guarda en una columna.
- La taula és homogènia per columnes; és a dir, tots els elements d'una taula tenen el mateix nombre de columnes
i totes les dades d'una columna representen el mateix atribut dels diferents elements.
- Cada columna de la taula té assignat un nom únic en la taula. En diferents taules es pot repetir el nom.
- No es permeten valors múltiples dins d'una cel·la.
Les propietats d'aquestes taules són:
- Els elements o files poden estar en qualsevol ordre.
- Els atributs o columnes poden estar en qualsevol ordre.
- Els elements poden ser referenciats mitjançant els valors que el formen.
- Les columnes poden ser referenciades mitjançant el nom que la identifica.
La representació que utilitzarem serà, el nom de la taula EN MAJÚSCULA, i entre parèntesi, tots els atributs en minúscula.
Consell
Si una entitat o atribut està compost per diferents paraules, podeu utilitzar la convenció snake_case,
on cada paraula està separada per guions baixos.
Exemple
L'entitat Cotxe amb els atributs Matrícula, Número de bastidor, Marca, Model, Quilòmetres i Data compra es
pot descriure com la següent taula relacional.
Aquesta taula es representaria com:
- COTXE(matricula, n_bastidor, marca, model, quilòmetres, data_compra)
Exemple de la taula COTXE amb dades:
| #Matrícula |
N. Bastidor |
Marca |
Model |
Km |
Data compra |
| 4231 KJL |
16483920 |
Ford |
Focus |
39031 |
08/12/2000 |
| 4078 CMP |
23948756 |
Ford |
Fiesta |
10542 |
02/01/2001 |
| 3091 LSF |
12347003 |
Volkswagen |
Golf |
8065 |
02/04/2001 |
| 7012 DLM |
84012398 |
Peugeot |
207 |
48623 |
28/11/2001 |
| 3877 FFT |
74832134 |
Audi |
Q2 |
57737 |
05/12/2001 |
| 1034 KMC |
56481093 |
BMW |
X3 |
8480 |
NULL |
El conjunt de tots els valors que pot pendre un atribut s'anomena
domini, i és un aspecte que cal tindre en compte.
A més, també es pot assignar el valor nul o NULL quan
l'element no té o es desconeix el valor per a un atribut.
Claus
En les taules relacionals s'utilitzen diferents claus per identificar
els elements de les taules relacionals, tant en una única taula com en
taules externes.
Clau candidata
La clau candidata és un atribut o conjunt mínim d'atributs que identifica
de manera única cada element d'una taula relacional.
Aquestes claus han de complir les condicions UNIQUE i NOT NULL, és a dir,
si s'especifica una clau primària, tots elements de la taula han de tindre
un valor assignat (no pot ser null) i a més, han de ser diferents entre ells
(dos elements no poden tindre la mateixa clau primària).
Exemple
En la taula COTXE, tenim les claus candidates: matricula i n_bastidor.
Els dos atributs són capaços d'identificar cada element de la taula,
ja que tots els cotxes han de tindre una matrícula i un número de bastidor,
i en els dos casos, cap cotxe pot tindre el mateix valor que un altre cotxe.
Clau primària
La clau primària és la clau candidata que es tria per identificar
cada element d'una taula relacional.
Normalment, es representen subratllades o amb el símbol #.
Exemple
En la taula Cotxe, la matrícula pot ser la clau primària.
Es representaria com:
- COTXE(#matricula, resta d'atributs...)
Clau alternativa
Les claus alternatives són aquelles claus candidates que no són la clau primària.
La principal diferència entre una clau primària i alternativa és que en una taula poden existir múltiples claus
alternatives, però sols una primària.
Aquest tipus de claus no tenen una representació especial respecte a un atribut regular. Quan s'especifiquen les restriccions d'integritat,
es pot definir una restricció de tipus UNIQUE, per evitar valors repetits.
Exemple
En aquest cas, com s'ha decidit que la matrícula s'utilitzarà per a identificar
els cotxes (clau primària), el número de bastidor és una clau alternativa,
ja que també serveix per identificar cada cotxe.
Clau forana o externa
La clau forana o externa és l'atribut o conjunt d'atributs que permet relacionar un element d'una taula
amb elements d'una altra taula. Normalment, s'utilitzen les claus primàries per relacionar les taules entre si.
Aquestes claus es representen en cursiva, indicant entre parèntesi la taula i l'atribut al qual fa referència.
- ENTITAT(#clau_primaria, clau_forana(ENTITAT2:atribut))
Exemple
Ens agradaria saber qui és el propietari de cada cotxe, per tant,
s'ha afegit la taula PERSONA a la nostra base de dades.
| #DNI |
Nom |
Cognoms |
| 91471118A |
Carles |
Perelló |
| 23986973C |
Òscar |
Peris |
| 24211153L |
Andreu |
Pastor |
| 76064612R |
Isabel |
Mora |
A més, s'ha afegit la clau forana _propietari(PERSONA:dni)_ a la taula COTXE
que relaciona les dues taules.
Aquesta clau forana emmagatzema els valors de la clau primària dni de la taula PERSONA
i, per tant, es pot relacionar i saber quin cotxe pertany a cada persona.
La representació d'aquesta taula és:
- COTXE(#matricula, n_bastidor, marca, model, km, propietari(PERSONA:dni), data_compra)
| #Matrícula |
N. Bastidor |
Marca |
Model |
Km |
Propietari |
Data compra |
| 4231 KJL |
16483920 |
Ford |
Focus |
39031 |
91471118A |
08/12/2000 |
| 4078 CMP |
23948756 |
Ford |
Fiesta |
10542 |
91471118A |
02/01/2001 |
| 3091 LSF |
12347003 |
Volkswagen |
Golf |
8065 |
23986973C |
02/04/2001 |
| 7012 DLM |
84012398 |
Peugeot |
207 |
48623 |
24211153L |
28/11/2001 |
| 3877 FFT |
74832134 |
Audi |
Q2 |
57737 |
76064612R |
05/12/2001 |
| 1034 KMC |
56481093 |
BMW |
X3 |
8480 |
NULL |
NULL |
Integritat
Es defineixen com regles d'integritat a aquelles regles que garanteixen la consistència i
integritat de la informació. Aquestes regles es basen en els dominis dels atributs, les claus
primàries i les claus foranes (integritat referencial).
Regles d'integritat
Taula:
- Una taula relacional no pot tindre tuples iguals (elements repetits).
Domini:
- Cada atribut sols pot prendre un únic valor per cada tupla.
- Un atribut no pot prendre valors que estiguen fora del domini definit.
Claus primàries:
- Les claus primàries no poden contindre elements nuls. Aquesta restricció s'anomena
NOT NULL.
- Les claus primàries no poden tindre valors repetits en diferents elements, és a dir,
el valor ha de ser únic per a cada element. Aquesta restricció s'anomena
UNIQUE.
Aquesta restricció pot ser definida en les claus alternatives.
Integritat referencial o clau forana:
-
Les claus foranes han de prendre valors existents en la taula a la qual es vol referencial o NULL.
-
Es poden definir diferents comportaments per a la modificació i eliminació de les tuples referenciades:
-
Eliminació o modificació en cascada (CASCADE): Si s'elimina una tupla o es modifica la clau primària de la taula referenciada,
també s'esborren o es modifiquen les tuples de la taula on està referenciada.
Exemple
Si s'esborra la tupla 91471118A de la taula PERSONA, també s'esborraran les tuples 4231 KJL i 4078 CMP de la taula COTXE.
-
Eliminació o modificació restringida (RESTRICT): No és possible eliminar entrades d'una taula si són referenciades des d'una altra taula.
Exemple
La tupla 91471118A no pot ser eliminada i la clau primària no pot ser modificada.
-
Eliminació o modificació amb valors nuls (SET NULL): És possible l'eliminació o modificació, però els valors en la taula des d'on es referència passarà a ser NULL.
Exemple
tupla 91471118A de la taula PERSONA pot ser eliminada.
valor de l'atribut propietari de les tuples 4231 KJL i 4078 CMP passarà a ser NULL.
-
Eliminació o modificació amb valors per defecte (SET DEFAULT): És possible l'eliminació o modificació, però els valors en la taula des d'on es referència passarà a ser un valor per defecte definit.
Exemple
La tupla 91471118A de la taula PERSONA pot ser eliminada.
El valor de l'atribut propietari de les tuples 4231 KJL i 4078 CMP passarà a ser un valor per defecte definit.
Bibliografia
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent
a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.