M2 - Bases de dades / UF1NF1: Conceptes de fitxers i bases de dades

De wikiserver
Dreceres ràpides: navegació, cerca

Concepte i origen de les BD

Les BD no existeixen per casualitat. Van aparèixer per donar resposta a una sèrie de necessitats. Veiem una petita aproximació històrica:

Les aplicacions informàtiques dels anys seixanta del segle XX tenien, per regla general, les característiques següents:

  • Normalment, consistien en processos per lots, amb les particularitats següents:
-Un lot és un conjunt finit de feines que es volen tractar com un tot.
-El seu processament, una vegada engegat, no necessita cap interacció amb l’usuari.
-Normalment, aquest tipus d’execució es realitza en tasques repetitives sobre gran volums d’informació.
  • Realitzaven tasques molt específiques, relacionades amb molt poques entitats tipus, com per exemple l’emissió de factures, la confecció de nòmines de personal, etc.
  • Normalment, els programes treballaven de manera seqüencial sobre un sol fitxer mestre, que estava emmagatzemat en una cinta magnètica (encara no, en un disc dur), i generaven un altre fitxer com a resultat.
  • Quan es detectava la necessitat d’implementar una nova aplicació que utilitzés parcialment les dades contingudes en un fitxer i, a més, algunes altres de noves, es dissenyava un nou fitxer amb tots els camps necessaris, i s’omplia amb les dades corresponents:
-Les dades que ja eren en l’antic fitxer es podien copiar en el nou, justament, mitjançant un altre processament per lots.
  • D’aquesta manera s’aconseguia que el nou programa no hagués de treballar amb molts fitxers, la qual cosa en simplificava el codi, d’una banda, i d’una altra n’optimitzava el temps d’execució.
  • Com a contrapartida, aquesta manera de treballar comportava la redundància d’algunes dades, que eren repetides en diferents fitxers. Aquest fet dificultava el manteniment de la coherència d’aquestes dades.

Posteriorment, l’evolució tecnològica va fer possible la implantació progressiva de tres nous elements:

  • Els terminals. Dispositius de maquinari per introduir o mostrar dades de les computadores.
  • Els discos durs. Dispositius d’emmagatzemament d’alt rendiment, que no estaven limitats de facto a l’accés seqüencial.
  • Les xarxes de comunicació.

A partir d’aquestes innovacions, els programes informàtics van haver d’implementar la possibilitat de realitzar consultes i actualitzacions de les mateixes dades, simultàniament, per part de diferents usuaris.

Al mateix temps, es va anar produint un fenomen que consistia en la integració de les diferents aplicacions informàtiques que utilitzava cada organització (per exemple, gestions d’estocs, facturacions, proveïdors...). Aquesta tendència requeria les accions següents:

  • Interrelacionar els fitxers de les antigues aplicacions.
  • Eliminar la redundància, és a dir, la repetició innecessària de dades, que a més de resultar ineficient posa en risc la seva coherència.

Tant la interrelació dels fitxers com el fet que cada vegada hi accedien simultàniament més usuaris exigien unes estructures físiques que proporcionessin accessos raonablement ràpids, com ara índexs.

Al començament dels anys setanta, aquests conjunts de fitxers interrelacionats, compartits per diferents processos i usuaris simultàniament, i amb estructures complexes, van rebre inicialment el nom de data bases, o DB (bases de dades, o BD, en català).

I al final dels anys setanta van anar sortint al mercat programaris encara més sofisticats, que permetien gestionar més fàcilment les relacions entre fitxers, i ja estaven en condicions de garantir l’actualització simultània de dades per part de diferents usuaris, etc. Aquests programaris es van anomenar sistemes gestors de bases de dades, o SGBD (data base management systems, o DBMS, en anglès).

Amb aquesta perspectiva històrica, doncs, podem donar una definició de BD més completa.

Una BD és la representació informàtica dels conjunts d’entitats instància corresponents a diferents entitats tipus i de les relacions entre aquestes. Aquest conjunt estructurat de dades ha de poder ser utilitzat de manera compartida i simultània per una pluralitat d’usuaris de diferents tipus.

Fitxers i BD

Els fitxers tradicionals (i els programes necessaris per treballar-hi) s’han trobat amb serioses dificultats per satisfer les creixents necessitats dels usuaris en pràcticament tots els àmbits.

Per aquesta raó, les BD s’han anat implantant com a mecanisme per excel·lència d’emmagatzematge, processament i obtenció d’informació, tot desplaçant progressivament els fitxers de la seva posició preeminent anterior. La taula següent conté una breu descripció de les principals diferències entre els sistemes basats en fitxers tradicionals i les BD.

Fitxers Bases de dades
Entitats tipus Les entitats instància d’un fitxer pertanyen a una sola entitat tipus. Les BD contenen entitats instància d’infinitat d’entitats tipus interrelacionades.
Interrelacions El sistema no interrelaciona fitxers. El sistema té previstes eines per interrelacionar fitxers.
Redundàncies És necessari crear fitxers a mida de cada aplicació, amb totes les dades necessàries, encara que estiguin repetides en altres fitxers. Tècnicament, totes les aplicacions poden treballar amb la mateixa

BD, la qual cosa evita la redundància de dades i els riscos que comporta.

Inconsistències És possible que els valors d’unes mateixes dades en diferents fitxers no coincideixin, si els programadors no les han actualitzat degudament. Si les interrelacions estan ben dissenyades, les dades només han d’estar emmagatzemades en la BD un sol cop. Per tant, no hi ha risc d’inconsistències.
Obtenció de dades Si no hi ha una aplicació que obtingui les dades que volem, o bé s’ha de fer un programa a mida, o bé s’ha d’aprofitar la sortida d’un programa amb objectius similars, i fer els càlculs necessaris manualment. Permeten obtenir qualsevol conjunt de dades, segons les necessitats, dels del seu propi entorn de treball, sense haver d’escriure, compilar i executar cap nou programa d’aplicació contra la BD.
Aïllament de dades Les dades estan disperses i aïllades en diferents arxius, la qual cosa dificulta el desenvolupament de les aplicacions. Totes les dades són en la mateixa BD, interconnectades, la qual cosa en facilita l’obtenció.
Integritat de dades Els programes han d’implementar totes les restriccions sobre les dades, afegint el codi font corresponent. El manteniment és complicat quan la informació es conté en diferents fitxers utilitzats per diferents aplicacions. La BD s’encarrega directament d’implementar les restriccions sobre les dades. Els programes no han d’incorporar codi font addicional per garantir-les.
Atomicitat Alguns conjunts d’operacions sobre les dades s’han d’executar de manera indivisible (o tots o cap), independentment de les fallades que el sistema pugui presentar (com ara per un tall de subministrament elèctric). Però això és molt difícil de garantir amb un sistema d’informació basat en fitxers. Les BD incorporen la tècnica de les transaccions per tal de garantir fàcilment l’execució atòmica d’una pluralitat de processos sobre les dades.
Accés concurrent L’actualització simultània de dades d’un mateix fitxer per part de diferents usuaris o aplicacions en pot provocar fàcilment la inconsistència. Amb la tècnica del bloqueig, les BD garanteixen automàticament la consistència de les dades, malgrat que més d’un usuari o més d’una aplicació les vulguin actualitzar simultàniament.
Seguretat Habitualment, cada fitxer serveix per a un sol usuari o una sola aplicació (sobretot simultàniament), i ofereix una visió única del món real. Però no sempre tots els usuaris que utilitzen un fitxer haurien de tenir accés a totes les dades que conté. Una BD pot ser compartida per molts usuaris de diferents tipus (fins i tot, simultàniament), els quals poden tenir diferents visions (vistes) del món real, en funció del seu perfil i dels permisos que s’hagin de concedir en cada cas.


Evidentment, les prestacions de les BD són molt superiors a les que proporcionen els sistemes de fitxers. Però això no vol dir que en alguns casos no sigui millor utilitzar fitxers, com ara quan el volum de les dades a contenir és molt petit, o quan només hem de treballar amb una entitat instància i, per tant, no cal considerar interrelacions.

Algunes utilitzacions possibles dels fitxers en l’actualitat són les següents:

  • Fitxers de configuració d’aplicacions.
  • Fitxers de configuració de sistemes.
  • Fitxers de registres d’esdeveniments (logs).

En casos com aquests, no compensaria carregar innecessàriament el sistema amb una BD (i amb el sistema gestor corresponent), ja que no s’aprofitarien els avantatges de les BD però, en canvi, empitjoraria el rendiment del sistema.

L’accés a les dades: tipologies

No serveix de res estructurar dades i emmagatzemar-les si després no s’hi pot d’accedir, per consultar-les, modificar-les o transmetre-les.

En general, hi ha dues maneres bàsiques d’accedir a les dades:

  • L’accés seqüencial a un registre determinat, que implica l’accés previ a tots els registres anteriors.
  • L’accés directe a un registre concret, que implica l’obtenció directa del registre.

A més, hi ha una altra classificació habitual de tipologies d’accessos:

  • L’accés per valor, que permet obtenir el registre en funció del valor d’algun (o alguns) dels seus camps, sense considerar la posició que ocupa el registre.
  • L’accés per posició, que obre l’accés a un registre que ocupa una posició determinada, sense considerar el contingut del registre.

Combinant les dues dicotomies anteriors, resulten quatre mètodes d’accés a les dades, tal com es mostra en la taula següent, que s’ajusten més a la realitat.

P-per posició V-per valor
S-seqüencial SP SV
D-directe DP DV

Examinem, doncs, les quatre tipologies d’accés a dades més freqüents:

  • SP (accés seqüencial per posició). Després d’haver accedit a un registre que es troba en una posició determinada, s’accedeix al registre que ocupa la posició immediatament posterior.
  • DP (accés directe per posició). S’obté directament un registre pel fet d’ocupar una posició determinada.
  • SV (accés seqüencial per valor). Després d’haver accedit a un registre que té un valor concret, s’accedeix al registre que ocupa la posició immediatament posterior, segons l’ordenació establerta a partir d’un camp determinat(o més). L’ordre serà creixent o decreixent, si es tracta d’un camp numèric, o alfabètic ascendent o descendent, si es tracta d’un camp de caràcters.
  • DV (accés directe per valor). S’obté directament un registre pel fet de tenir un valor determinat en un dels seus atributs (o més).
Exemples de tipus d’accés a les dades
Imaginem que disposem un fitxer en què s’emmagatzema informació relativa als alumnes d’un centre docent: DNI, nom, cognoms, data de naixement, adreça, telèfon, etc. A continuació, es dóna un exemple de cadascun del quatre mètodes d’accés estudiats.
SP (accés seqüencial per posició): la llista de tots els alumnes, sense establir cap ordenació.
DP (accés directe per posició): en l’àmbit de la programació, el cas més típic és el de les cerques dicotòmiques en vectors ordenats; en l’àmbit de les BD, aquest tipus d’accés es produeix en utilitzar un índex de tipus hashing.
SV (accés seqüencial per valor): la llista de tots els alumnes, seguint un ordre alfabètic ascendent, en primer lloc dels cognoms i després del nom.
DV (accés directe per valor): obtenció de les dades emmagatzemades en un registre corresponent a un alumne concret, que es digui, per exemple, Pere García Manent (és a dir, que el camp Nom conté el valor “Pere”, i el camp Cognoms conté el valor “García Manent”).

Les diferents visions de les dades

Un dels principals objectius de les BD és proporcionar, als usuaris, una visió abstracta de les dades. Amb aquesta finalitat, el sistema amaga als usuaris certs detalls relatius a l’emmagatzemament i manteniment de les dades, per facilitar-los la feina, d’una banda, però també per garantir certs aspectes en matèria de seguretat.

Perquè les BD resultin útils, han de ser mínimament eficients a l’hora de recuperar les dades. Per aquest motiu, els sistemes de BD tenen implementades, a baix nivell, estructures de dades bastant complexes.

S’utilitzen tres nivells d’abstracció -físic, lògic i de vistes- per tal d’amagar aquestes estructures complexes i simplificar, d’aquesta manera, la interacció dels usuaris amb el sistema.

1. Nivell físic: és el nivell d’abstracció més baix de tots els utilitzats.

  • Descriu com s’emmagatzemen realment les dades a baix nivell, especificant en detall les complexes estructures que es necessiten.
  • No és freqüent treballar a aquest nivell. Només es fa quan calen optimitzacions en l’estructuració de les dades a baix nivell.

2. Nivell lògic: és el nivell d’abstracció intermedi.

  • Descriu totes les dades emmagatzemades en la BD i les seves interrelacions, mitjançant un nombre no gaire elevat d’estructures força simples (típicament, taules).
  • La implementació d’aquestes estructures lògiques pot comportar la presència d’estructures molt més complexes a nivell físic. Però els usuaris del nivell lògic no s’han de preocupar d’aquesta complexitat. Ni tan sols necessiten conèixer-la.
  • Els administradors de BD treballen habitualment amb aquest nivell d’abstracció.

3. Nivell de vistes: és el nivell d’abstracció més alt.

  • La majoria dels usuaris no necessiten conèixer tota l’estructuració lògica de la BD amb què treballen. Tractant-se d’una BD gran, a més, conèixer tota la seva estructura pot comportar un esforç considerable.
  • D’altra banda, sovint, i per motius tant de seguretat com de privacitat, no resulta convenient que els usuaris tinguin accés a totes les dades, sinó solament a la part que estrictament necessiten per realitzar la seva feina.
  • Cada vista només descriu una part de la BD. L’establiment de vistes simplifica la interacció de l’usuari amb el sistema, el fa més segur, i proporciona més privacitat. Es poden establir diferents vistes, segons les necessitats, sobre la mateixa BD.

En la figura següent, es poden veure els diferents nivells d’abstracció utilitzats per facilitar la interacció dels usuaris amb les BD.

Nivells d'abstracció