Introducció a les bases de dades Què és una base de dades? Podem definir una base de dades com una col·lecció de dades sobre un assumpte. Està organitzada de manera que permet trobar fàcilment la informació, fer-hi canvis o afegir-hi nous ítems. Mireu aquest diagrama per a un dels exemples de dalt: una simple agenda telefònica. Un diagrama d'una base de dades de números de telèfon Un diagrama d'una base de dades de números de telèfon La imatge de dalt mostra un conjunt de dos contactes, cadascun dels quals es presenta com a una targeta separada. Sembla que cada targeta constitueix una línia en una taula: Taula Contactes Nom Núm. de telèfon Joana 799 23 43 12 Marc 711 19 77 21 Termes i definicions: d'una dada que constitueix una part d'una gran col·lecció se'n pot dir línia o, més professionalment, un registre. A la col·lecció se li diu normalment taula. Per altra part, la nom més natural per a la taula és un que descrigui les dades que ofereix/emmagatzema que és Contactes. A més, cada línia de la taula està composada per columnes sovint dites també camps. A la taula Contactes hi ha dues columnes (camps): Nom i Núm. de telèfon. Per a usos simples, una única taula pot fer una base de dades. Molta gent considera aquestes dues equivalents. Com veureu, per a les bases de dades de debò, ens caldrà normalment més d'una taula. Resumint, ja teniu una base de dades simple amb una taula Contactes. Base de dades i full de càlcul Segurament, ja haureu fet servir aplicacions de fulls de càlcul com el KSpread, OpenOffice.org o Microsoft Excel. Si és aixó, probablement us preguntareu: si tant els fulls de càlcul com les bases de dades tenen taules, per què haig d'usar aquestes últimes? Si compareu els fulls de càlcul amb les bases de dades, trobareu els següents assumptes que veurem més endavant en detall: Integritat de dades referencial Redundància de dades Integritat i validació de dades Limitant la vista de dades Execució i capacitat Entrada convenient de dades Informes Programació Multiús Seguretat En què es diferencien una base de dades d'un full de càlcul? Excedint gradualment la capacitat d'un telèfon mòbil, expandiu la vostra taula Contactes afegint-hi una columna (camp) Adreça. Afegiu-hi més números de telèfon (feina, casa) per a cada persona i afegiu-hi cognoms als noms. Per a fer-ho més simple, assumim el següent: la taula està limitada a dues persones (òbviament, hi podria haver centenars i milers d'elles en una base de dades real) no hi ha dues persones amb el mateix nom i cognom Taula de contactes Nom i cognom Tel Adreça Joana Llopis 799 23 43 12 plaça de Catalunya, 1, Barcelona Marc Vila 711 19 77 21 València, Joan Fuster, 5 Joana Llopis 110 98 98 00 plaça de Catalunya, 1 Llopis Joana 312 43 42 22 Barcelona, plaça de Catalunya, 1 MARC Vila 231 83 02 04 Joan Fuster, 5, València Una taula com aquesta es pot fer tant amb un full de càlcul com amb una base de dades. Usar un full de càlcul és molt fàcil, és clar. Quins problemes trobem en aquest pas? Integritat de dades referencial Suposeu que feu servir un full de càlcul i que us cal canviar l'adreça d'almenys una persona. Teniu un petit problema: sovint heu de canviar l'adreça en moltes línies. Per exemple, Joana agafa tres línies. Tindreu un bon problema si oblideu de canviar alguna de les línies -l'adreça assignada a aquella persona serà ambígua, per tant les vostres dades perden integritat. A més, no hi ha cap manera simple d'esborrar una persona escollida de la taula en tant que heu de recordar d'esborrar totes les línies relacionades amb ell o ella. Redundància de dades Això està connectat directament amb el problema anterior. En els camps Nom i cognom i Adreça s'introdueixen les mateixes dades moltes vegades. Això és típic de la manera ineficient d'emmagatzemar les dades que tenen els fulls de càlcul, perquè la base de dades creix innecessàriament, de manera que requereix més recursos informàtics (més volum de dades i accés més lent). Com podeu solucionar aquests problemes amb una base de dades? Podeu dicvidir la informació en troços més petits creant una taula addicional Persones amb només dues columnes: Nom i cognom i Adreça: Taula Persones Nom i cognom Adreça Joana Llopis plaça de Catalunya, 1, Barcelona Marc Vila Joan Fuster, 5, València Cada línia de la taula Persones correspon a una única persona. La taula Contactes està des d'ara relacionada amb la taula Persones. Integritat de dades i validació Adoneu-vos de la manera en què s'introdueixen les dades en els camps Nom i cognom i Adreça. La gent introduint dades pot equivocar-se, de vegades fins i tot pot ser negligent. A les nostres dades de mostra, tenim diferents maneres d'introduir nom i cognom (Joana Llopis i Llopis Joana; Marc i MARC) i moltes més maneres d'introduir la mateixa adreça. Segur que podeu pensar en moltes altres maneres. El problema de dalt mostra que en aquest exemple, quan es cerca el número de telèfon d'una persona l'adreça de la qual és "plaça de Catalunya, 1, Barcelona", no obteniu un resultat complet. Només obtindreu una línia, per comptes de tres. A més, tampoc no trobareu tots els números de telèfon cercant pel valor "Joana Llopis" en el camp Nom i cognom, perquè "Llopis Joana" no encaixarà amb "Joana Llopis". Com podeu solucionar aquests problemes usant una base de dades? Podeu fer-ho canviant el disseny de la taula Persones: Dividint les dades del camp Nom i cognom en dos camps separats: Nom i Cognom. Dividint les dades en el camp Adreça en tres camps separats: Carrer, Número de casa i Ciutat. Garantint la correcció de les dades: assegurant-vos que no queden camps buits, per exemple, d'introduir sempre el número de casa. Una taula modificada té aquest aspecte: Taula persones Nom Cognom Carrer Número de casa Ciutat Joana Llopis plaça de Catalunya 1 Barcelona Marc Valls Joan Fuster 5 València Condicions camp requerit camp requerit camp requerit camp requerit camp requerit Gràcies a la introducció de la condició camp requerit, podem estar segurs que les dades introduïdes són completes. En el cas d'altres taules, podeu, per suposat, permetre l'omissió de certs camps a l'hora d'introduir les dades. Limitar la vista de dades Un full de càlcul mostra totes les línies i columnes de la taula, cosa que és molesta en cas de fulls molt llargs. Podeu, és clar, filtrar i ordenar línies amb un full de dades, però heu de ser molt cuidadós fent-ho. Els usuaris de fulls de càlcul s'exposen a oblidar que la vista de dades s'ha filtrat, el que pot portar a errades. Per exemple, quan es calculen sumes, podeu pensar que teniu 100 files de dades mentre que n'hi ha 20 amagades. Si voleu traballar amb un conjunt petit de dades, &pex; enviar-lo a d'altres per a editar, podeu copiar i enganxar-lo en un altre full de càlcul i, després d'editar-lo, enganxar el resultat al full de càlcul principal. Aquesta edició "manual" pot causar pèrdues de dades o càlculs incorrectes. Per a limitar la vista de dades les aplicacions de bases de dades ofereixen consultes, formularis i informes. Una manera pràctica de limitar és la següent versió extendida de la taula Persones descrita prèviament: Taula persones Nom Cognom Carrer Número de casa Ciutat Entrada Joana Llopis plaça de Catalunya 1 Barcelona 2300 Marc Valls Joan Fuster 5 València 1900 Assumim que la nova columna introduïda Entrada conté dades confidencials. Com podeu compartir, per exemple, detalls de contacte de persones amb els vostres companys de feina però sense revelar la seva entrada? És possible si només compartiu una consulta i no tota la taula. A la consulta es poden seleccionar totes les columnes excepte la d'Entrada. En el món de les bases de dades, a una consulta com aquestes se li diu sovint una visualització. Execució i capacitat Probablement, el vostre ordinador és bastant ràpid, però veureu fàcilment que no ajuda amb fulls de càlculs lents i grans. La seva poca eficàcia és deguda sobretot a la manca d'indexació que accelera en procés de cerca de dades (les bases de dades l'ofereix). A més, si useu coses com el sistema de portapapers, fins i tot copiar dades pot ser problemàtic amb el temps. Els fulls de dades amb grans conjunts de dades poden trigar molt a obrir-se. Un full de dades carrega grans quantitats de dades a la memòria de l'ordinador mentre s'obre. La majoria de dades carregades són probablement innecessàries en el moment d'obrir. Les bases de dades, en canvi, carrega les dades de l'emmagatzement de l'ordinador només quan són necessàries. La majoria de vegades, no us caldrà amoïnar-vos per com emmagatzema les dades la base de dades. Això vol dir que, contràriament als fulls de càlcul, les bases de dades no tenen en compte: La seqüència de línies des que podeu ordenar les línies d'acord amb les vostres necessitats. A més, podeu veure la mateixa dada en diverses vistes amb diferents ordres. El mateix serveix per a les columnes (camps) de la taula. Juntament amb la Limitació de vista de dades descrites en paràgrafs previs, aquestes qualitats constitueixen l'avantatge de les bases de dades. Introducció de dades Les últimes edicions de les aplicacions per a crear fulls de càlcul us permeten de dissenyar formularis d'introducció de dades. Aquest formularis són més útils si les vostres dades no es poden visualitzar en vista tabular, &pex;, si els textos ocupen massa línies o si totes les columnes no hi caben a la pantalla. En aquest cas, la mateixa manera en què treballa el full de dades és problemàtica. Els camps per a l'entrada de dades estan posats imprecisament i molt sovint no són segurs davant de la intervenció (no intencionada o accidental) dels usuaris. Informes Les bases de dades permeten l'agrupament, la limitació i el resum de dades en un formulari d'un informe. Els fulls de càlcul s'imprimeixen en forma de petites taules sense control automàtic complet sobre les divisions de pàgina i el format dels camps. Programació Les aplicacions per a crear bases de dades contenen sovint llenguatges de programació complets. Els nous fulls de càlcul també tenen aquesta capacitat, malgrat que els càlculs poden modificar els camps del full de càlcul i simples còpies de dades, sense tenir en compte la relevància ni les regles d'integritat mencionades en d'altres paràgrafs. El procés de dades en un full de càlcul es fa normalment via interfície gràfica d'usuari que pot alentir-ne la velocitat. Les bases de dades són capaces de treballar en segon pla, fora de les interfícies gràfiques. Multiús És difícil d'imaginar un multiús en un full de càlcul. Fins i tot si és tècnicament possible en el cas de les últimes aplicacions, requereix molta disciplina, atenció i coneixement per part els usuaris, i aquests no es poden garantir. Una manera clàssica de compartir dades desades en un full de càlcul és enviar tot el fitxer (normalment per correu electrònic) o desant un fitxer de full de càlcul en una xarxa informàtica. Aquesta manera de treballar és ineficient per a grans grups de gent -les dades es poden necessitar en un determinat moment i poden estar blocades per una altra persona. D'altra banda, les bases de dades estan dissenyades bàsicament amb l'accés multiusuari en ment. Fins i tot per a la versió més simple, és possible de blocar un nivell particular de fila en una taula, el que permet fàcilment compartir les dades de la taula. Seguretat Assegurar un full de càlcul o les seves seccions particulars amb una contrasenya és només una activitat simbòlica. Després de posar el full de càlcul en una xarxa informàtica, qualsevol persona que pugui copiar el fitxer pot trencar la contrasenya. De vegades no és tan difícil, ja que la contrasenya està emmagatzemada en el mateix fitxer del full de càlcul. Les característiques per a blocar l'edició o la còpia d'un full de càlcul (o una part) són igualment fàcils de trencar. Les bases de dades (excepte aquelles desades en un fitxer per comptes d'un servidor) no necessiten estar disponibles en un únic fitxer. Accediu a elles mitjançant una xarxa informàtica, normalment donant un nom d'usuari i una contrasenya. Només teniu accés a aquelles àrees (taules, formularis o fins i tot files i columnes seleccionades) que estan assignades al vostre perfil de drets d'accés. Els drets d'accés poden afectar la possibilitat d'editar dades o només de llegir-ne. Si alguna dada no us està disponible, no se us enviarà al vostre ordinador, ja que no es poden copiar les dades de manera tan senzilla com en el cas dels fitxers de fulls de dades. Disseny de base de dades El disseny d'una base de dades requereix un estudi cuidadós. Noteu que el redisseny de la taula Contactes proposat en la secció 1.2 pot generar problemes quan la taula s'omple de dades. Per exemple, reanomenar un camp és senzill, però separar el camp Adreça en diferents camps requereix una feina cuidadosa i tediosa. Per a evitar aquestes situacions, repenseu el vostre projecte de base de dades abans de crear-lo en el vostre ordinador, i abans de començar a fer-lo servir. Així, invertint-hi un temps inicial, probablement estalviareu temps en l'ús diari. Qui necessita una base de dades? Quedeu-vos amb els fulls de càlcul si: Les vostres necessitats estan limitades i les vostres dades no assoliran mai grans volums (de fet, podeu preveure-ho ara?) No sou capaços d'adquirir la metodologia de construcció de bases de dades. De tota manera, hauríeu de considerar subcontractar aquesta feina a algú altre o usar eines més simples. Feu servir fulls de càlcul complicats i no teniu temps o diners per a migrar a bases de dades. Penseu o pregunteu algú si això no us portarà a un carreró sense sortida. No compteu amb eines màgiques que canviarien el vostre full de càlcul (sense que importi com de ben feta estigui) en una base de dades. Considereu d'usar bases de dades si: La vostra col·lecció de dades s'expandeix cada setmana. Creeu sovint nous fulls de càlcul, els copieu entre ells i sentiu que aquesta feina és cada cop més tediosa. En aquest cas, l'esforç de migrar a bases de dades paga la pena. Creeu informes i declaracions per als quals la vista de taula d'un full de càlcul no serveix. Podeu considerar la migració a una base de dades amb vistes de formulari. Programari de creació de bases de dades Fins ara, heu après les característiques generals de les bases de dades sense entrar en gaire detall sobre les aplicacions específiques per a dissenyar-les. Les primeres bases de dades es van construir amb ordinadors molt grans, com l'IBM System/360, en els anys 60. Aquests no eren els dies dels PC, i aquestes bases de dades requerien un personal altament especialitzat. Malgrat que el maquinari dels ordinadors antics era poc fiable, eren molt més lents i tenien molta menys capacitat d'emmagatzement, una característica de les bases de dades segueix sent atractiva: l'accés de les dades per part de molts usuaris mitjançant una xarxa. Als anys 70, els científics van formar la teoria de les bases de dades relacionals (termes com: taula, registre, columna (camp) i relacionalitat i molts d'altres). Les bases de dades d'IBM DB2 and Oracle es van crear basant-se en aquesta teoria que s'havia desenvolupat i que encara es fa servir avui. A finals dels anys 70, es va construir el primer PC. Els seus usuaris van poder utilitzar (gradualment) molts tipus d'aplicacions, incloent-hi les de construcció de bases de dades. Quant a les grans bases de dades a les empreses, la situació no ha canviat: encara necessiten potents ordinadors o complexes informàtics anomenats clusters. Això queda, malgrat tot, més enllà del tema d'aquest manual. Pel que fa a les bases de dades "accessibles" amb interfícies d'usuari per a PC, podeu escollir entre les següents: DBase - una eina per a operacions de bases de dades per a DOS popular en els anys 80. Els fitxers en format DBase encara s'usen en alguns casos específics degut a la seva simplicitat. FoxPro - una aplicació similar al DBase (principi dels 90). Des que les va agafar Microsoft, les interfícies gràfiques d'usuari es van introduir i es fan servir per a crear bases de dades en PC. Aquest producte encara s'ofereix, malgrat que sembla una mica obsolet. Microsoft Access - una aplicació per a bases de dades (disseny d'interfícies gràfiques i de dades) amb moltes simplificacions, però convenient per a principiants, dissenyada al final dels anys 80, basada en arquitecturs de 16 bits. Aquest producte s'ofereix i s'usa fins avui àmpliament, especialment per empreses petites, on l'eficiència i els requeriments de multiusuari no són molt forts. FileMaker - popular aplicació similar a MS Access en simplicitat, operant en plataformes Windows i Macintosh, oferit des de 1985. &kexi; - una aplicació multiplataforma (Unix/Linux, Windows, Mac OS X) dissenyada el 2003, desenvolupada d'acord amb els principis del Codi Obert, part del projecte global K Desktop Environment, un entorn per a sistemes Unix/Linux. Un contribuïdor significant al desenvolupament del &kexi; és l'empresa OpenOffice Poland.