Bases de dades

De castillowiki
Saltar a: navegación, buscar

Una base de dades o banc de dades (de vegades abreujada amb la sigla BD o amb l'abreviatura bd) és un conjunt de dades pertanyents a un mateix context i emmagatzemats sistemàticament per al seu posterior ús. En aquest sentit, una biblioteca pot considerar-se una base de dades composta en la seva majoria per documents i textos impresos en paper i indexats per a la seva consulta. En l'actualitat, i a causa del desenvolupament tecnològic de camps com la informàtica i l'electrònica, la majoria de les bases de dades estan en format digital (electrònic), que ofereix un ampli rang de solucions al problema d'emmagatzemar dades.

Hi ha programes anomenats sistemes gestors de bases de dades, abreujat SGBD, que permeten emmagatzemar i posteriorment accedir a les dades de forma ràpida i estructurada. Les propietats d'aquests SGBD, així com la seva utilització i administració, s'estudien dins de l'àmbit de la informàtica.

Les aplicacions més usuals són per a la gestió d'empreses i institucions públiques. També són àmpliament utilitzades en entorns científics per tal d'emmagatzemar la informació experimental.

La paraula base de dades es va usar per primera vegada en els anys 60 i poc a poc s'ha integrat en la vida quotidiana, fins i tot més enllà de l'àmbit informàtic. En aquella època s'usava el model jeràrquic i el model en xarxa. Actualment, s'usa gairebé en la majoria de les bases de dades el model relacional. Altres models més moderns que s'estan implantant amb èxit són el model de bases de dades orientades a objectes i el de bases de dades en XML, les característiques s'estan incorporant a les bases de dades relacionals actuals.

Models de bases de dades

Les primeres bases de dades seguien el model jeràrquic. En aquest s'utilitzava una estructura d'arbre. Els registres s'organitzaven de forma jeràrquica i si s'eliminava un node pare s'havien eliminar els nodes fills. Actualment només s'usa en determinades bases de dades, com per exemple la de l'Active Directory o les bases de dades DNS.

El següent model va ser el de Xarxa És similar al jeràrquic, però en forma de malla on un fill pot tenir diversos pares. Actualment a caigut en desús.

El model relacional és el més usat actualment i sobre el qual es basen els SGBD actuals més potents. Oracle, SQL Server, PostgreSQL o Mysql són alguns exemples d'aquests. Aquest model es compon de diverses taules. Cada taula té una sèrie de registres que consten de columnes o camps. El tipus de dades d'una columna han de ser igual en tots els registres. Cada registre representa un objecte de la vida real del qual s'emmagatzemen les dades que siguin necessaris. Tots els registres d'una taula tenen el mateix nombre de columnes.

La informació no importa en l'ordre que es guardi, però ha de ser accedida de manera eficient per mitjà de consultes. El llenguatge d'aquestes consultes és el SQL.

A mode de resum, el model relacional permet l'ús de restriccions com que hi hagi una clau principal única que defineixi unívocament cada registre o claus foranes que apuntin al registre de una altra taula. Una base de dades relacional correcta ha d'evitar la redundància. Per a això es realitzar segons les formes normals. La primera indica que no hi ha camps amb múltiples valors en un registre, la segona que tot camp del registre ha de dependre totalment de la clau. I la tercera que un camp ha de dependre de la clau i no d'un altre camp. Per dissenyar una base de dades relacional es pot usar el model entitat-relació que les representa de forma gràfica.

El següent model és l'orientat a objectes. Aquest model es va dissenyar per treballar bé amb els llenguatges de programació orientats a objectes. S'hi incorporen totes les característiques d'aquest tipus de llenguatges com l'herència, el polimorfisme o l'encapsulació. Una de les característiques més interessants és la possibilitat d'unir les dades a una sèrie de funcions dins de la mateixa base de dades i tot de forma transparent a l'usuari. S'espera que les noves versions de SQL suportin aquest tipus de bases de dades.

El model relacional ha sigut durant molts anys el predominant en totes les bases de dades. Però servicis com facebook o twitter necessiten una accés més ràpid a consultes més simples. Les bases de dades orientades a documents o NoSQL són un substitut per a casos molt puntuals.

Finalment, el model XML és un dels que més rellevància estan adquirint. Les anomenades bases de dades natives XML s'emmagatzemen les dades en documents XML. XML és un metallenguatge d'etiquetes. Es considera l'XML com una de les opcions de tractament de dades de cara al futur. El seu avantatge és la fàcil utilització per a tot tipus d'aplicacions, sobretot les aplicacions web. Com a desavantatge principal està el cost de fer una consulta. En comptes d'usar SQL, usen XPath, que és un llenguatge per a interpretar documents XML. Encara que no és tan potent com l'SQL. Sobre aquest model, dir que el concepte actual d'AJAX o javascript asíncron amb XML permet crear aplicacions web molt potents combinat els avantatges de les bases de dades relacionals, generalment MySQL amb els fitxers XML

Model relacional de dades

Al 1970, Edgar Codd va plantejar el model relacional. El seu objectiu va ser el de millorar els models antics, el jeràrquic i el de xarxa. No va aconseguir el seu màxim èxit fins a finals d'aquesta dècada amb el desenvolupament de l'àlgebra relacional. Des d'aquell dia és el model més utilitzat per modelar bases de dades. El seu principal avantatge enfront dels anteriors models és que no cal estructures, sinó que són les pròpies dades els que defineixen les relacions.


OBJECTIUS DEL MODEL RELACIONAL

Els models anteriors eren més complicats de mantenir i no diferenciaven l'estructura de la base de dades de les pròpies dades.

Té els següents objectius:

  • Independència física: la forma en què s'emmagatzemin les dades no afecta la seva manipulació.
  • Independència lògica: El codi dels programes gestors no influeix en la manera de manipular les dades.
  • Flexibilitat: es poden presentar les dades de la vostra manera preferida l'usuari.
  • Uniformitat: s'estructura tot de la mateixa manera perquè sigui fàcil de manipular pels usuaris.
  • Senzillesa: ha de ser fàcil d'utilitzar.

El concepte fonamental del model relacional és la relació o taula com a estructura. Una taula es compon de tuples o registres i camps o columnes. Cadascun d'aquests registres conté una sèrie de camps. El tipus de dades d'una columna han de ser igual en tots els registres. Cada registre representa un objecte de la vida real del qual s'emmagatzemen les dades que siguin necessaris. Tots els registres d'una taula tenen el mateix nombre de columnes.

La informació ha de poder ser accedida per mitjà de consultes. I aquestes consultes es realitzaran en un llenguatge estàndard, normalment SQL.

Un altre dels objectius del model relacional és aconseguir estar normalitzat.


ESTRUCTURA DEL MODEL RELACIONAL

En primer lloc hi ha la relació o taula. Es poden entendre els registres o tuples com les files de la taula i cada camp d'aquesta tupla com les columnes de la taula.

Cada taula té un esquema i unes instàncies. L'esquema és la definició de l'estructura, és a dir, les metadades. En ell es defineix la quantitat de columnes, el nom i els atributs de totes elles. Les instàncies, d'altra banda són les dades que s'emmagatzemen. No són sempre tots els registres i columnes de la taula, perquè es pot treballar amb un subconjunt d'ells. Es defineix doncs la cardinalitat com el nombre de tuples i el grau com el nombre de columnes.

Es denomina Domini al conjunt d'elements associats a un nom i un tipus de dades. El tipus de dades es defineix en l'SGBD encara que els usuaris poden derivar tipus a partir dels predefinits. A més, un domini té una sèrie de restriccions com aquestes:

  • Restricció d'unicitat
  • Restricció de valor no nul
  • Clau primària: compleix les dues condicions anteriors i serveix per identificar de forma unívoca un registre. Aquesta clau poden ser una o més columnes.
  • Clau Aliena permet expressar relacions entre dues taules. Aquesta clau apunta a la clau primària d'una altra taula. Poden haver relacions un a un, un a diversos i diversos a diversos. Aquestes relacions defineixen la integritat referencial que permet que no es pugui, per exemple, no es pugui esborrar un registre que estigui referenciat per la clau aliena d'un altre.

També permet realitzar esborrats o modificacions en cascada.

Resumint:

  • Una base de dades relacional es compon de diverses taules o relacions.
  • No poden existir dues taules amb el mateix nom ni registre.
  • Cada taula és al seu torn un conjunt de registres (files i columnes).
  • La relació entre una taula pare i un fill es porta a terme per mitjà de les claus primàries i alienes (o foranes).
  • Les claus primàries són la clau principal d'un registre dins d'una taula i aquestes han de complir amb la integritat de dades.
  • Les claus alienes es posen a la taula filla, contenen el mateix valor que la clau primària del registre pare, per mitjà d'aquestes es fan les relacions.

L'esquema i les instàncies poden ser manipulats pel llenguatge SQL. Aquest es divideix en DML o Data Manipulation languaje, DDL o Data definition languaje i DCL o Data control languaje. El DML permet modificar les instàncies mentre que el DDL els esquemes. DCL s'encarrega de les restriccions als usuaris per accedir a les dades.

El DML permet fer consultes o modificacions de les dades, per això fa servir l'àlgebra relacional. I aquestes consultes es realitzaran en un llenguatge estàndard, normalment SQL.


ÀLGEBRA RELACIONAL

Aquesta àlgebra relacional té el seu propi llenguatge que no és SQL, sinó un orientat a les operacions amb conjunts i lògiques. Són els SGBD els que transformen la sentència SQL en operacions relacionals mitjançant el seu processador de consultes.

L'àlgebra relacional defineix una sèrie d'operacions bàsiques que són:

  • En primer lloc la selecció: permet seleccionar un conjunt de tuples que compleixin una condició. La condició serà una operació lògica amb I, O i operadors com = = menor que o major que.
  • La projecció permet extreure columnes d'un conjunt de tuples. Si s'uneix a la selecció, es poden obtenir les columnes desitjades d'un conjunt de tuples que compleixin una condició.
  • Producte cartesià. Uneix dues relacions lliurant una relació amb tuples de totes les combinacions d'una relació amb l'altra. Si dues relacions tenen 5 tuples, retorna 25 tuples amb les columnes de les dues.
  • Unió. Retorna les tuples que estiguin en les dues relacions o en alguna d'elles. Aquestes hauran de ser compatibles.

Diferència. Retorna les tuples que estiguin en una relació, però no en l'altra.

Hi ha altres operacions derivades que són no bàsiques, però que s'usen molt sovint. Aquestes són:

  • Intersecció: Es tracta de les tuples que estan tant en una relació com en l'altra.
  • Combinació o natural Join: És més útil que el producte cartesià ja que estableix una condició per a aquesta combinació. Aquesta operació en primer lloc realitza el producte cartesià i després selecciona les tuples que compleixen la condició. D'aquesta manera, la combinació de dues relacions molt grans és molt menor que el producte cartesià.
  • Divisió: Si hi ha una relació A (x, i) i una B (i) sent i dominis equivalents, retorna tots els valors de x tal que per a tot valor de i hi ha una tupla a A que sigui (x, y).


DISSENYAR BASES DE DADES RELACIONALS

El model Entitat-relació és el més famós per a la representació gràfica de les bases de dades. Aquests són la seva components: Per a representar entitats, que són les taules, es fa amb un rectangle nominat.

Cada entitat té una sèrie d'atributs o les columnes que es representen amb una el·lipse unida a l'entitat. Si és l'identificador o clau primària se subratlla. Potser l'atribut estigui compost d'altres, aquests s'uneixen a la mateixa línia cap a l'entitat. A més, s'ha d'indicar si és atòmic o multivaluat, en aquest cas es posa una n a la línia.

Per a representar associacions, es fa amb un polígon unit a les entitats que es relacionen. Aquesta relació té un nom i es pot afegir un nom a l'arc que uneix cada entitat perquè quedi més clar. El grau de l'associació indica quantes entitats participen, des de les reflexives d'una entitat amb si mateixa, grau 2, 3 o n.

Les restriccions es representen de la següent manera: la clau primària subratllant el nom de l'atribut, no nul amb un petit cercle. Es pot representar el tipus d'associació 1:1 1: N o M: N.

Hi ha entitats i associacions febles que depenen de l'existència d'una entitat pare. Aquestes es representen amb un rectangle doble. La cardinalitat defineix el màxim i mínim d'ocurrències d'una entitat per participar d'una associació. Es representa amb (0,1), (1,1), (0, M), (1, M), o (M, N)

Una entitat pot especialitzar-se, es representa amb un triangle.

Hi ha una altra forma de representar atributs que és amb un cercle amb el nom al costat. Si és clau primària serà negre i si és clau alternativa mitges negres mig blanc. Si és multivaluat s'usa una fletxa i si és opcional punts suspensius.

És necessari detectar aquestes entitats del cas real, els atributs necessaris de les mateixes i quina serà la seva clau primària. Després s'han de detectar les relacions entre les entitats. Indicant el tipus i la cardinalitat. El cas real se sol redactar en llenguatge natural explicant l'objectiu de la base de dades. Alguns trucs per detectar entitats són fixar-se en els substantius, els quals definirien les entitats i els atributs. Els verbs solen indicar associacions.

Cal fer multitud d'exemples de transformació d'un cas real en un model E/R fins a adquirir la capacitat de detectar l'estructura del model a partir de la descripció del cas.

Un cop dissenyat el model E/R és necessari transformar-lo en el model relacional. Per a això es realitzaran taules a partir de les entitats. Les relacions M: N necessitaran una taula i també els atributs múltiples. Si hi ha jerarquia, és a dir, una entitat especialitzada, es pot eliminar l'entitat pare, el que produeix redundància. També es poden eliminar les entitats filles i posar tots els atributs en la pare, la qual cosa provoca valors nuls. I es poden realitzar associacions binàries, la qual cosa és més complex, però conserva la jerarquia i queda més clar, per això sol ser la més usada. Les associacions 1:1 amb cardinalitat 1,1 se solen unir en una sola taula. Encara que depèn del que es necessiti. Si no és cardinalitat 1,1 es pot utilitzar una taula per a la relació o afegir una clau forana a una de les taules. Si la relació és 1: M se sol posar una clau forana a la taula que tingui la M. Per a les de N: M, com he dit, és necessari sempre utilitzar una tercera taula per a la relació. Si tenen més de dues entitats també s'usarà sempre una tercera taula. Les reflexives de cardinalitat 1 es farà servir una clau forana a la seva pròpia clau principal i si és NM s'utilitzarà una taula per a la relació.

Després d'aquesta transformació al model lògic es pot implantar, però potser no és del tot correcte. Cal evitar al màxim les redundàncies, per la qual cosa s'ha de normalitzar la base de dades.

FORMES NORMALS

L'objectiu de la normalització és evitar les redundàncies i garantir la integritat de la base de dades. Hi ha fins a 6 nivells de formes normals. Però fins el tercer és l'imprescindible per considerar una base de dades normalitzada.

La primera forma normal es defineix formalment com: Si el valor dels dominis dels atributs és únic o atòmic. És a dir, que per a cada camp d'una fila hi ha un sol valor i no un conjunt. La millor manera de entendre-ho és mitjançant un exemple: Suposem una taula de llibres, la columna autor pot tenir diversos valors, pel que no estaria en primera forma normal. La manera de solucionar-ho és treure aquesta columna a una altra taula anomenada autors que tingui un identificador únic com pot ser el nom de l'autor o un codi autonumèric i una altra taula que relacioni autors amb llibres, ja que un autor pot tenir diversos llibres.

La segona forma normal es defineix com quan està en primera forma normal ia més, cada atribut diferent de la clau primària té dependència funcional completa de la clau candidata. Seguint amb l'exemple: hi ha una taula anomenada lloguers té com a atributs el codi del llibre, el lector que l'ha llogat, els dies, el nom del llibre, el codi del proveïdor i el número de telèfon del proveïdor. La clau principal és el codi del llibre i el client. Com es veu, només depèn totalment de la clau l'atribut dies. El codi i el telèfon del proveïdor depenen només del llibre. Pel que és necessari eliminar d'aquesta taula i afegir-los a la taula de llibres. Això no és del tot correcte, però ja està en segona forma normal i em servirà per explicar la següent.

La tercera forma normal diu que un atribut que no sigui clau primària no ha de dependre transitivament de la mateixa. És a dir, no dependrà d'un atribut que no sigui la clau primària. En l'exemple es veu que la taula llibres queda amb els atributs: codi, nom, proveïdor, telèfon del proveïdor. El telèfon depèn del proveïdor que al seu torn depèn del codi del llibre. Pel que hi ha una dependència transitiva. Es solucionarà creant la taula proveïdors i deixant només el codi com a clau forana a la taula llibres.

Totes les bases de dades s'han de dissenyar en tercera forma normal. Però a l'hora de implementar-les, per facilitar algunes consultes o millorar el rendiment, es pot desnormalitzar. Encara que cal anar amb compte i tenir-ho en compte perquè pot provocar inconsistències.