M2 - Bases de dades / UF1NF1: Les dades i les bases de dades

De wikiserver
Dreceres ràpides: navegació, cerca

Les dades que s’utilitzen de manera informatitzada s’emmagatzemen, habitualment, en bases de dades (BD).

El programari que serveix per gestionar les bases de dades es denomina sistema gestors de bases de dades (SGBD).

Per a tot informàtic que hagi de treballar amb bases de dades (BD), és imprescindible saber distingir tres àmbits ben diferenciats:

  • El món real. Està constituït pels objectes (materials o no) de la realitat que ens interessen i amb els quals haurem de treballar.
  • El món conceptual. És el conjunt de coneixements o informacions obtinguts gràcies a l’observació de la part del món real que ens interessa. Un mateix món real pot donar lloc a diferents mons conceptuals, en funció de la manera de percebre la realitat, o els interessos de l’observador d’aquesta.
  • El món de les representacions. Està format per les representacions informàtiques, o dades, del món conceptual, necessàries per poder treballar.
El tres mons


Les dades i la seva representació

Les dades són representacions informàtiques de la informació disponible, relativa als objectes del món real del nostre interès.

El món de les representacions està format per les dades informatitzades amb les quals treballem.

La conversió de les concepcions en dades requereix passar per dues fases succesives de disseny, en què es prenen decisions que poden derivar en resultats dispars:

1. Fase de disseny lògic. Es treballa amb el model abstracte de dades obtingut al final de l’etapa de disseny conceptual, per tal de traduir-ho al model de dades utilitzat pel SGBD amb el qual es vol implementar i mantenir la futura BD.
2. Fase de disseny físic. Es poden fer certes modificacions sobre l’esquema lògic obtingut en la fase de disseny anterior, per tal d’incrementar l’eficiència en algunes de les operacions que s’hagin de fer amb les dades.

Un mateix conjunt de coneixements entorn d'una mateixa realitat, es pot representar de maneres diferents a causa, per exemple, dels factors segënts:

  • Les decisions de disseny preses (tant a nivell conceptual, com a nivell lògic i físic).
  • La tecnologia emprada (fitxers, BD relacionals, BD distribuïdes, etc.).

Rpresentacions diferents donen lloc a nivells d'eficiència també diferents. La responsabilitat de tot informàtic inclou garantir la correcció de les representacions, però també l'eficiència de les implementacions.

Entitats, atributs i valors

Tres elements caracteritzen fonamentalment les informacions:

1. Les entitats són els objectes del món real que conceptualitzem. Són identificables, és a dir, distingibles els uns dels altres. I ens interessen algunes (com a mínim una) de les seves propietats.
2. Els atributs són les propietats de les entitats que ens interessen.
3. Els valors són els continguts concrets dels atributs, les determinacions concretes que assoleixen.

En principi, els atributs haurien d’emmagatzemar un sol valor en cada instant. D’aquesta manera, els nostres models seran, de bon principi, compatibles amb el model lògic de dades més àmpliament utilitzat: el model relacional.

Exemple d’entitat, atributs i valors
Considerarem que una pel·lícula concreta és una entitat, perquè és un objecte del món real, que hem conceptualitzat dins d’una categoria (la dels films cinematogràfics), i que al mateix temps és distingible d’altres entitats de la mateixa categoria (és a dir, d’altres films).
D’aquesta pel·lícula ens interessaran alguns aspectes, que anomenarem atributs, com per exemple, el títol, el director i l’any de producció.
Finalment, aquests atributs adoptaran uns valors concrets com ara, i respectivament, Paths of glory, Stanley Kubrick i 1957.

Entitats tipus i entitats instància

El terme entitat fa referència a algun objecte concret del món real, conceptualitzat, i del qual ens interessen algunes característiques. Però aquest terme pot tenir dos significats diferents, segons a què faci referència:

Entitat tipus. Es tracta d’un tipus genèric d’entitat o, si es prefereix, d’una abstracció, que fa referència a una classe de coses com, per exemple, els cotxes, en general.

Entitat instància. Es refereix a la conceptualització d’un objecte concret del món real, com ara un cotxe concret, distingible dels altres objectes del mateix tipus, gràcies a alguna propietat (com podria ser el valor de l’atribut Matricula).

Entitats

Tipus de dada i domini dels atributs

Anomenem domini tot el conjunt de valors que un atribut determinat pot prendre vàlidament.

El concepte domini no es correspon amb el de tipus de dada, utilitzat tant en l’àmbit de les BD com també en el de programació.

Un tipus de dada defineix un conjunt de valors amb unes característiques comunes que els fan compatibles, per la qual cosa també defineix una sèrie d’operacions admissibles sobre aquests valors.

Exemple de tipus de dada
Podem considerar els nombres enters com un tipus de dada (diferent d’altres tipus, com per exemple els nombres reals, els caràcters, etc.), sobre el qual es poden definir certes operacions, com la suma, la resta, la multiplicació o la divisió entera (però no la divisió exacta, que només és possible entre els nombres reals).

Així, doncs, ambdós conceptes (domini i tipus de dada) s’assemblen, ja que tots dos limiten els valors acceptables. Allò que els diferencia és que un domini no estableix per si mateix cap conjunt d’operacions, mentre que un tipus de dada, per definició, si que ho fa.

Una altra diferència és que, en la pràctica, un domini és un subconjunt de valors possibles d’un tipus de dada. En alguns casos, pot interessar delimitar el rang de valors admesos per un tipus de dada determinat. Això es fa establint un domini.

Exemple de domini
Imaginem que, en l’àmbit d’uns estudis determinats, s’exigeix un mínim d’assistència a classes presencials per tal d’aconseguir el títol corresponent, independentment de les qualificacions obtingudes.
Imaginem que s’admet, durant tot el curs acadèmic, un màxim de vint faltes injustificades. Doncs bé, hi podria haver un atribut de l’entitat ALUMNE, anomenat, per exemple, NombreFaltes, que recollís aquesta circumstància.
Aquest atribut podria emmagatzemar dades de tipus enter. I també se’n podria limitar el domini de 0 (per indicar que no hi ha hagut cap inassistència) a vint faltes injustificades, ja que en arribar a aquest límit es produiria l’expulsió de l’alumne.

Valor nul dels atributs

De vegades, el valor d’un atribut és desconegut o, fins i tot, no existeix. Per representar aquesta circumstància, l’atribut en qüestió haurà d’admetre el valor nul.

L’expressió valor nul indica que no hi ha cap valor associat a un atribut determinat d’una entitat instància concreta.

Perquè un atribut admeti el valor nul, s’ha d’especificar aquesta possibilitat a l’hora de definir-ne el domini.

Exemple de valor nul
Considerem ara que l’entitat ALUMNE disposa d’un atribut anomenat Telefon, per emmagatzemar un número telefònic de contacte de cadascuna de les persones matriculades.
Si l’atribut Telefon no admetés valors nuls, el sistema no permetria que es matriculessin persones que no disposessin de telèfon.
En canvi, si s’ha admès aquesta possibilitat en definir el domini de l’atribut que ara ens ocupa, el sistema acceptarà la matrícula de les persones que no disposin de telèfon, o bé de les que senzillament no se’l saben de memòria i que, per tant, no el poden indicar en el moment de formalitzar la matrícula, de manera que la seva incorporació en la BD queda pendent.

No s’ha de confondre valor nul amb el zero, si estem tractant amb valors numèrics, o amb l’espai en blanc, si estem treballant amb caràcters. Tant l’un com l’altre són valors amb un significat propi. En canvi, el valor nul implica l’absència total de valor.

Atributs identificadors i claus

Un atribut identificador és el que permet distingir inequívocament cada entitat instància de la resta, pel fet que el seu valor és únic, i no es repeteix en diferents entitats instància.

Els atributs d’una entitat seran identificadors, o no, en funció de l’objecte del món real que l’entitat vulgui modelitzar.

Exemple d’atribut identificador
L’atribut DNI pot servir molt bé per identificar les instàncies d’una entitat que modelitzi els alumnes d’un centre docent, ja que cada alumne tindrà un DNI diferent.
Però si l’entitat amb què treballem vol modelitzar les qualificacions finals dels alumnes, el DNI per si sol no permetrà identificar les diferents entitats instància, ja que a cada alumne correspondrà una nota final per a cada assignatura en la qual s’hagi matriculat.

De vegades, un sol atribut no és suficient per identificar inequívocament les diferents instàncies d’una entitat. Aleshores, cal recórrer a la combinació dels valors de dos o més atributs de la mateixa entitat.

Tot atribut o conjunt d’atributs que permeten identificar inequívocament les instàncies d’una entitat s’anomenen claus.

Tot atribut identificador és, al mateix temps, una clau. Però els atributs que formen part d’un conjunt de més d’un atribut que actua com a clau de l’entitat no són identificadors, ja que, per si mateixos, no són capaços d’identificar les entitats instància.

Exemple de clau formada per més d’un atribut
Per tal de diferenciar les instàncies d’una entitat que vol reflectir les notes finals dels alumnes en cada assignatura en què s’hagin matriculat, cal combinar els valors de dos atributs: un que designi l’alumne de què es tracti (típicament, el DNI), i un altre que indiqui l’assignatura a la qual correspon la nota (que podria ser una cosa com ara CodiAssignatura).
Això és així perquè un alumne podrà estar matriculat en diferents assignatures, per la qual cosa el seu DNI es repetirà en diferents instàncies. I, al mateix temps, diversos alumnes podran estar matriculats d’una mateixa assignatura i, per tant, els valors de l’atribut CodiAssignatura també es podran repetir.
En canvi, cada alumne tindrà una instància per a cada assignatura en què s’hagi matriculat, fins que l’aprovi, per tal de reflectir la nota final. Modelitzada l’entitat d’aquesta manera, la combinació de valors de DNI i CodiAssignatura no es repetirà mai, i el conjunt format per aquests dos atributs podrà servir com a clau.

Per definició, ni els atributs identificadors ni els que formen part d’una clau poden admetre mai el valor nul, perquè aleshores no servirien per distingir les entitats instància sense valor en un dels tipus d’atribut esmentat de la resta.

El món de les representacions

Ja sabem que les dades són informacions representades informàticament. Per tant, també podríem anomenar món de les dades el món de les representacions.

La representació informàtica més freqüent en l’àmbit de les BD és la representació tabular, la qual s’implementa habitualment en fitxers que s’estructuren en registres i camps.

En el fons, les BD només són conjunts de fitxers interrelacionats (o, si es prefereix, que emmagatzemen dades que estan interrelacionades). Però no serveix de res emmagatzemar dades si, posteriorment, no hi accedim. Hi ha diferents tipus d’accés a les dades que convé examinar: seqüencial, directe, per valor i per posició.

Les representacions tabulars i la seva implementació: els fitxers

Les informacions són conceptualitzacions obtingudes a partir de l’observació del món real. Ara bé, les informacions no són gaire còmodes per treballar.

Represenació no informatitzada

En la figura podem veure una representació gràfica, no informatitzada, de l’entitat COTXES, que consta de dos atributs: Matrícula i Marca. Evidentment, si augmentés el nombre d’entitats instància, o bé el nombre d’atributs a considerar, aquest tipus de representació no serviria per a res.

És necessari representar les informacions per facilitar les tasques a fer amb elles, com ara les consultes, els processaments, les transmissions, etc.

La representació més freqüent en l’àmbit informàtic de les BD és l’anomenada representació tabular (o, el que és el mateix, en forma de taula).

Cada taula representa una entitat genèrica, i està estructurada en files (agrupacions horitzontals de cel·les) i columnes (agrupacions verticals de cel·les):

  • Cada fila representa una entitat instància.
  • Cada columna representa un atribut.
  • Cada cel·la (és a dir, cada intersecció d’una fila i d’una columna) emmagatzema el valor que tingui l’atribut de l’entitat instància de què es tracti.

La implementació informàtica de les representacions tabulars es materialitza mitjançant els anomenats fitxers de dades. S’entén per fitxer la implementació informàtica d’una taula, amb les dades estructurades en registres i camps.

Els fitxers s’implementen seguin aquestes consideracions:

  • La implementació de cada entitat instància s’anomena registre, i equival a una fila de la representació tabular.
  • La implementació de cada atribut s’anomena camp, i equival a una columna de la representació tabular.
  • Cada intersecció d’un registre i d’un camp emmagatzema el valor que tingui el camp del registre de què es tracti.

Els fitxers s’han d’emmagatzemar en algun dispositiu de memòria externa de l’ordinador, típicament un disc dur, per tal de conservar les dades permanentment. L’emmagatzemament en la memòria interna no satisfà aquest objectiu perquè és volàtil.

En la taula següent, podem veure una representació tabular de l’entitat COTXES, que només consta de dos camps: Matrícula i Marca. Si augmentés el nombre de registres a emmagatzemar només caldria afegir més files. I si haguéssim de considerar més camps, només caldria afegir més columnes.

Però en cap cas no es comprometria la complexitat de l’estructura tabular, que seria, essencialment, la mateixa.

Represenació tabular

Les BD

Normalment, quan hàgim de representar informàticament certes informacions (corresponents, doncs, al món conceptual), no ens trobarem amb una sola entitat tipus, sinó amb unes quantes.

Intuïtivament, podem pressuposar que si partim d’un nombre concret d’entitats tipus necessitarem, com a mínim, el mateix nombre de taules per representar-les (i probablement algunes més). Ara bé, aquestes taules, o fitxers, no seran objectes inconnexos, sinó que hauran d’estar interrelacionats.

Les interrelacions són informacions que permeten associar les entitats entre elles.

Les interrelacions entre els registres de dues (o més) taules es fan mitjançant camps del mateix tipus de dada que emmagatzemin els mateixos valors.

Exemple d’entitats interrelacionades
Imaginem ara que construïm una petita BD. Només hi ha dues entitats tipus del nostre interès: COTXES i MARQUES.
També tenim una altra informació complementària, sobre la interrelació entre ambdues entitats: cada cotxe serà d’una marca concreta, però hi podrà haver molts cotxes de cada marca.
En la següent figura, es mostra una representació de les dues entitats (COTXES i MARQUES) interrelacionades.
Entitats interrelacionades

L’entitat MARQUES només té l’atribut Marca, i l’entitat COTXES només té l’atribut Matrícula. El fitxer per representar COTXES haurà d’afegir un camp addicional, per tal de permetre la interrelació amb el fitxer que representa l’entitat MARQUES.

La següent figura mostra la interrelació entre els dos fitxers corresponents a l’entitat COTXES i a l’entitat MARQUES.

Fitxers interrelacionats

La interrelació entre fitxers implica que els canvis de valor dels camps que serveixen per interrelacionar-los (o, fins i tot, la seva supressió) han de quedar reflectits en tots els fitxers implicats, per tal de mantenir la coherència de les dades.

Per tant, els programes que treballen amb fitxers de dades interrelacionats sempre tindran un plus de complexitat, derivat de l’exigència que acabem de comentar.

Una BD consisteix en un conjunt de fitxers de dades interrelacionats.

En aquest sentit, els SGBD(tipus de programari especialitzat en gestionar i administrar bases de dades) s’han anat desenvolupant tenint com a un dels objectius principals facilitar la programació amb accés a dades persistents, i per gestionar l’accés simultani a les dades per part de diferents usuaris.

El nivell lògic i el seu nivell físic

L’organització de les dades, i el seu enregistrament i accés, es poden considerar des de dos punts de vista, més o menys propers a la implementació física de l’enregistrament de les dades:

  • Nivell lògic. Permet treballar amb les dades de manera més senzilla, independentment de la implementació física concreta, que no cal conèixer. És la manera de treballar més productiva i, per tant, la més recomanable, sempre que les circumstàncies no ens obliguin a fer optimitzacions a nivells més baixos.
  • Nivell físic. Implica un coneixement a baix nivell de la implementació física de l’organització de les dades i el seu accés.

En la figura següent, es mostra la doble perspectiva apuntada, la lògica i la física. En el disc dur es desen les dades, organitzades de determinada manera a nivell físic. L’SGBD ens permet accedir a les dades emmagatzemades en el disc dur considerant només aspectes de nivell lògic, com ara seqüències de registres.

Nivell lògic i físic
Exemples de treball a nivell lògic i a nivell físic
Nivell lògic: es treballa tenint en compte, fonamentalment, les taules, amb els camps i registres corresponents, i les seves interrelacions.
Nivell físic: es treballa considerant altres factors a més baix nivell, com ara l’encadenament dels registres físics, la compressió de dades, les tipologies d’índexs, etc.