M2 - Bases de dades / UF1NF3: Model relacional
El model relacional és un model de dades basat en dues disciplines matemàtiques: la lògica de predicats i la teoria de conjunts.
SGBD Acrònim de Sistema Gestor de Bases de Dades. És un programari especialitzat en la gestió de bases de dades (enteses, aquestes, com un conjunt estructurat d’informació).
Potser a causa d’aquest sòlid fonament teòric, que proporciona a aquest model una robustesa excepcional, els SGBD relacionals (o SGBDR) són actualment els que tenen una implantació més gran en el mercat. El model relacional va ser proposat originàriament per Edgar Frank Codd en el seu treball A Relational Model of Data for Large Shared Data Banks (‘Un model relacional de dades per a grans bancs de dades compartits’) l’any 1970, tot i que no es va implementar comercialment fins al final de la dècada.
E. F. Codd Codd treballava per a IBM, però no va ser aquesta multinacional qui va creure abans en les possibilitats del model relacional, sinó més aviat la competència, i molt especialment Oracle, empresa que va néixer, justament, amb el nom de Relational Software.
Estructuració de les dades
El model relacional permet construir estructures de dades per representar les diferents informacions del món real que tinguin algun interès.
Les estructures de dades construïdes seguint el model relacional estan formades per conjunts de relacions.
Les relacions poden ser concebudes com a representacions tabulars de les dades.
Tuple En l’àmbit de les BD, podem definir tuple com una seqüència finita d’objectes que comprèn les diferents associacions entre cada atribut de la relació i un valor concret, admissible dins del domini respectiu.
Cal precisar els extrems següents:
- Tota relació ha de tenir un nom que la identifiqui unívocament dins de la base de dades.
- Cada fila està constituïda per un tuple de dades relacionades entre elles, anomenat també registre, que guarda les dades que ens interessa reflectir d’un objecte concret del món real.
- En canvi, cada columna conté, en cada cel·la, dades d’un mateix tipus, i se la pot anomenar atribut o camp.
- Cada cel·la, o intersecció entre fila i columna, pot emmagatzemar un únic valor.
Exemple de relació La següent taula reflecteix l’estructuració tabular de la relació ALUMNE, que conté les dades personals corresponents als individus matriculats en un centre docent. Cada fila conté unes quantes dades relacionades que, en aquest cas, són les que pertanyen a un mateix alumne. La relació té un nom (ALUMNE), com cadascuna de les columnes (DNI, Nom, Cognoms i Telefon). Si aquests noms són prou significatius, permeten copsar de seguida el sentit que tenen els valors de les dades emmagatzemades en la relació.
Taula Exemple de relació ALUMNE ------------------------------------------------- DNI Nom Cognoms Telefon 47126654F Josep Bel Rovira 453641282 51354897S Anna Pacheco Cuscó 723352151 56354981L Xavier Rius Montalvo 726922235
Tota base de dades relacional està formada per un conjunt de relacions.
Aquesta senzilla manera de visualitzar l’estructura de les bases de dades relacionals resulta molt entenedora per a la majoria d’usuaris. Però cal aprofundir en algunes característiques addicionals de les relacions, per talde poder-les distingir clarament dels fitxers tradicionals.
Domini
Pel que fa al model relacional, un domini consisteix en un conjunt finit de valors indivisibles.
Els atributs només poden prendre els valors que estiguin inclosos dins del domini respectiu. Altrament no són valors vàlids, i un SGBD relacional no en pot permetre l’emmagatzematge.
Exemples de dominis Examinem l’atribut Telefon de la relació ALUMNE. Si el definim de tal manera que només pugui emmagatzemar nou caràcters (perquè els telèfons sempre consten de nou dígits) de tipus numèric (ja que les lletres no poden formar part d’un número de telèfon), el domini d’aquest atribut inclourà totes les combinacions possibles (en concret, , que és una magnitud gran, però finita). Una altra cosa és que molts d’aquests valors no es podran correspondre mai amb valors existents en el món real (per exemple, difícilment un operador assignarà a un dels seus abonats una cadena de nou zeros com a identificador telefònic). Per aconseguir-ho, caldria restringir força més el domini de l’atribut a l’hora de definir-lo. Centrem-nos ara en l’atribut Cognoms. Contindrà els valors dels dos cognoms dels alumnes que els tinguin, separats per un espai en blanc. Per tant, aquest camp està definit per tal que pugui emmagatzemar dos objectes del món real: primer cognom i segon cognom. Conceptualment, els usuaris podran distingir entre els dos objectes representats, i els programadors d’aplicacions podran truncar, en cas necessari, el resultat obtingut en fer una consulta del camp Cognoms. Però tot SGBD relacional considerarà el valor contingut en l’atribut Cognoms de manera atòmica, sense cap estructuració interna.
Hem de considerar dues tipologies de dominis:
- Dominis predefinits. Són els tipus de dades que admeti cada SGBD, com, per exemple (esmentats de manera genèrica, ja que hi ha moltes especificitats en funció dels diferents sistemes gestors), les cadenes de caràcters, els
nombres enters, els nombres decimals, les dades de caire cronològic, etc.
- Dominis definits pels usuaris. Consisteixen en restriccions addicionals aplicades sobre el domini predefinit d’alguns atributs, establertes pels dissenyadors i pels administradors de bases de dades.
Exemple de domini definit per l'usuari En una relació per emmagatzemar les dades dels aspirants a mosso d’esquadra, es podria establir el camp IMC, per registrar els índexs de massa corporal respectius. Doncs bé, es podria restringir el domini d’aquest camp de tal manera que no admetés aspirants amb valors inferiors a dinou ni superiors a trenta, ja que la normativa no ho permet.