Salta el contingut

Model Relacional

Autor: Joan Puigcerver Ibáñez

Correu electrònic: j.puigcerveribanez@edu.gva.es

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.

      Example

      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.

      Example

      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.

      Example

      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.

      Example

      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