You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
783 lines
25 KiB
783 lines
25 KiB
12 years ago
|
<!--
|
||
|
<!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd">
|
||
|
-->
|
||
|
|
||
|
<appendix id="database">
|
||
|
<title
|
||
|
>Introducció a les bases de dades</title>
|
||
|
|
||
|
<sect1 id="what-is-a-database">
|
||
|
<title
|
||
|
>Què és una base de dades?</title>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>Mireu aquest diagrama per a un dels exemples de dalt: una simple agenda telefònica. </para>
|
||
|
<screenshot>
|
||
|
<screeninfo
|
||
|
>Un diagrama d'una base de dades de números de telèfon</screeninfo>
|
||
|
<mediaobject>
|
||
|
<imageobject>
|
||
|
<imagedata fileref="contact-example.png" format="PNG"/>
|
||
|
</imageobject>
|
||
|
<textobject>
|
||
|
<phrase
|
||
|
>Un diagrama d'una base de dades de números de telèfon</phrase>
|
||
|
</textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
<para
|
||
|
>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: </para>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Taula <guilabel
|
||
|
>Contactes</guilabel
|
||
|
></emphasis
|
||
|
></para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="2">
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry
|
||
|
><guilabel
|
||
|
>Nom</guilabel
|
||
|
></entry>
|
||
|
<entry
|
||
|
><guilabel
|
||
|
>Núm. de telèfon</guilabel
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joana</entry>
|
||
|
<entry
|
||
|
>799 23 43 12</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Marc</entry>
|
||
|
<entry
|
||
|
>711 19 77 21</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Termes i definicions</emphasis
|
||
|
>: d'una dada que constitueix una part d'una gran col·lecció se'n pot dir <firstterm
|
||
|
>línia</firstterm
|
||
|
> o, més professionalment, un <firstterm
|
||
|
>registre</firstterm
|
||
|
>. A la col·lecció se li diu normalment <firstterm
|
||
|
>taula</firstterm
|
||
|
>. Per altra part, la nom més natural per a la taula és un que descrigui les dades que ofereix/emmagatzema que és <guilabel
|
||
|
>Contactes</guilabel
|
||
|
>. A més, cada línia de la taula està composada per <firstterm
|
||
|
>columnes</firstterm
|
||
|
> sovint dites també <firstterm
|
||
|
>camps</firstterm
|
||
|
>. A la taula <guilabel
|
||
|
>Contactes</guilabel
|
||
|
> hi ha dues columnes (camps): <guilabel
|
||
|
>Nom</guilabel
|
||
|
> i <guilabel
|
||
|
>Núm. de telèfon</guilabel
|
||
|
>. </para>
|
||
|
<para
|
||
|
>Per a usos simples, una única taula pot fer una <firstterm
|
||
|
>base de dades</firstterm
|
||
|
>. Molta gent considera aquestes dues equivalents. Com veureu, per a les bases de dades de debò, ens caldrà normalment més d'una taula. </para>
|
||
|
<para
|
||
|
>Resumint, ja teniu una base de dades simple amb una taula <guilabel
|
||
|
>Contactes</guilabel
|
||
|
>. </para>
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="database-and-spreadsheet">
|
||
|
<title
|
||
|
>Base de dades i full de càlcul</title>
|
||
|
<para
|
||
|
>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? </para>
|
||
|
<para
|
||
|
>Si compareu els fulls de càlcul amb les bases de dades, trobareu els següents assumptes que veurem més endavant en detall: </para>
|
||
|
<itemizedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="referential-data-integrity"
|
||
|
>Integritat de dades referencial</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="data-redundyncy"
|
||
|
>Redundància de dades</link>
|
||
|
</para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="data-integrity-and-validity"
|
||
|
>Integritat i validació de dades</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="data-limiting"
|
||
|
>Limitant la vista de dades</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="performance-and-capacity"
|
||
|
>Execució i capacitat</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="convenient-data-entry"
|
||
|
>Entrada convenient de dades</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="reports"
|
||
|
>Informes</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="programming"
|
||
|
>Programació</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="multiuse"
|
||
|
>Multiús</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="security"
|
||
|
>Seguretat</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<sect2 id="difference-database-and-spreadsheet">
|
||
|
<title
|
||
|
>En què es diferencien una base de dades d'un full de càlcul?</title>
|
||
|
|
||
|
<para
|
||
|
>Excedint gradualment la capacitat d'un telèfon mòbil, expandiu la vostra taula <guilabel
|
||
|
>Contactes</guilabel
|
||
|
> afegint-hi una columna (camp) <guilabel
|
||
|
>Adreça</guilabel
|
||
|
>. 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: </para>
|
||
|
<itemizedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
>la taula està limitada a dues persones (òbviament, hi podria haver centenars i milers d'elles en una base de dades real)</para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>no hi ha dues persones amb el mateix nom i cognom</para>
|
||
|
</listitem>
|
||
|
</itemizedlist>
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Taula de contactes</emphasis
|
||
|
></para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="3">
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Nom i cognom</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Tel</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Adreça</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joana Llopis</entry>
|
||
|
<entry
|
||
|
>799 23 43 12</entry>
|
||
|
<entry
|
||
|
>plaça de Catalunya, 1, Barcelona</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Marc Vila</entry>
|
||
|
<entry
|
||
|
>711 19 77 21</entry>
|
||
|
<entry
|
||
|
>València, Joan Fuster, 5</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joana Llopis</entry>
|
||
|
<entry
|
||
|
>110 98 98 00</entry>
|
||
|
<entry
|
||
|
>plaça de Catalunya, 1</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Llopis Joana</entry>
|
||
|
<entry
|
||
|
>312 43 42 22</entry>
|
||
|
<entry
|
||
|
>Barcelona, plaça de Catalunya, 1</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>MARC Vila</entry>
|
||
|
<entry
|
||
|
>231 83 02 04</entry>
|
||
|
<entry
|
||
|
>Joan Fuster, 5, València</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
>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? </para>
|
||
|
|
||
|
<sect3 id="referential-data-integrity">
|
||
|
<title
|
||
|
>Integritat de dades referencial</title>
|
||
|
<para
|
||
|
>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à <emphasis
|
||
|
>ambígua</emphasis
|
||
|
>, per tant <emphasis
|
||
|
>les vostres dades perden integritat</emphasis
|
||
|
>. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
</sect3>
|
||
|
|
||
|
|
||
|
<sect3 id="data-redundyncy">
|
||
|
<title
|
||
|
>Redundància de dades</title>
|
||
|
<para
|
||
|
>Això està connectat directament amb el problema anterior. En els camps <guilabel
|
||
|
>Nom i cognom</guilabel
|
||
|
> i <guilabel
|
||
|
>Adreça</guilabel
|
||
|
> 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). </para>
|
||
|
<para
|
||
|
>Com podeu solucionar aquests problemes amb una base de dades? Podeu dicvidir la informació en troços més petits creant una taula addicional <emphasis
|
||
|
>Persones</emphasis
|
||
|
> amb només dues columnes: <guilabel
|
||
|
>Nom i cognom</guilabel
|
||
|
> i <guilabel
|
||
|
>Adreça</guilabel
|
||
|
>: </para>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Taula <guilabel
|
||
|
>Persones</guilabel
|
||
|
></emphasis
|
||
|
></para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="2">
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Nom i cognom</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Adreça</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joana Llopis</entry>
|
||
|
<entry
|
||
|
>plaça de Catalunya, 1, Barcelona</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Marc Vila</entry>
|
||
|
<entry
|
||
|
>Joan Fuster, 5, València</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
>Cada línia de la taula <guilabel
|
||
|
>Persones</guilabel
|
||
|
> correspon a una <emphasis
|
||
|
>única persona</emphasis
|
||
|
>. La taula <guilabel
|
||
|
>Contactes</guilabel
|
||
|
> està des d'ara relacionada amb la taula <guilabel
|
||
|
>Persones</guilabel
|
||
|
>. </para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="data-integrity-and-validity">
|
||
|
<title
|
||
|
>Integritat de dades i validació</title>
|
||
|
<para
|
||
|
>Adoneu-vos de la manera en què s'introdueixen les dades en els camps <guilabel
|
||
|
>Nom i cognom</guilabel
|
||
|
> i <guilabel
|
||
|
>Adreça</guilabel
|
||
|
>. 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. </para>
|
||
|
<para
|
||
|
>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 <guilabel
|
||
|
>Nom i cognom</guilabel
|
||
|
>, perquè "Llopis Joana" no encaixarà amb "Joana Llopis". </para>
|
||
|
<para
|
||
|
>Com podeu solucionar aquests problemes usant una base de dades? Podeu fer-ho canviant el disseny de la taula <guilabel
|
||
|
>Persones</guilabel
|
||
|
>: </para>
|
||
|
<orderedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
><emphasis
|
||
|
>Dividint les dades</emphasis
|
||
|
> del camp <guilabel
|
||
|
>Nom i cognom</guilabel
|
||
|
> en dos camps separats: <guilabel
|
||
|
>Nom</guilabel
|
||
|
> i <guilabel
|
||
|
>Cognom</guilabel
|
||
|
>. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><emphasis
|
||
|
>Dividint les dades</emphasis
|
||
|
> en el camp <guilabel
|
||
|
>Adreça</guilabel
|
||
|
> en tres camps separats: <guilabel
|
||
|
>Carrer</guilabel
|
||
|
>, <guilabel
|
||
|
>Número de casa</guilabel
|
||
|
> i <guilabel
|
||
|
>Ciutat</guilabel
|
||
|
>. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><emphasis
|
||
|
>Garantint la correcció de les dades:</emphasis
|
||
|
> assegurant-vos que no queden camps buits, per exemple, d'introduir sempre el número de casa. </para
|
||
|
></listitem>
|
||
|
</orderedlist>
|
||
|
|
||
|
<para
|
||
|
>Una taula modificada té aquest aspecte: </para>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Taula persones</emphasis
|
||
|
></para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="5">
|
||
|
<colspec colnum="1" colname="c1"
|
||
|
></colspec>
|
||
|
<colspec colnum="2" colname="c2"
|
||
|
></colspec>
|
||
|
<colspec colnum="3" colname="c3"
|
||
|
></colspec>
|
||
|
<colspec colnum="4" colname="c4"
|
||
|
></colspec>
|
||
|
<colspec colnum="5" colname="c5"
|
||
|
></colspec>
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Nom</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Cognom</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Carrer</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Número de casa</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Ciutat</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joana</entry>
|
||
|
<entry
|
||
|
>Llopis</entry>
|
||
|
<entry
|
||
|
>plaça de Catalunya</entry>
|
||
|
<entry
|
||
|
>1</entry>
|
||
|
<entry
|
||
|
>Barcelona</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Marc</entry>
|
||
|
<entry
|
||
|
>Valls</entry>
|
||
|
<entry
|
||
|
>Joan Fuster</entry>
|
||
|
<entry
|
||
|
>5</entry>
|
||
|
<entry
|
||
|
>València</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry namest="c1" nameend="c5"
|
||
|
><emphasis
|
||
|
>Condicions</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>camp requerit</entry>
|
||
|
<entry
|
||
|
>camp requerit</entry>
|
||
|
<entry
|
||
|
>camp requerit</entry>
|
||
|
<entry
|
||
|
>camp requerit</entry>
|
||
|
<entry
|
||
|
>camp requerit</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
>Gràcies a la introducció de la condició <guilabel
|
||
|
>camp requerit</guilabel
|
||
|
>, 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. </para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="data-limiting">
|
||
|
<title
|
||
|
>Limitar la vista de dades</title>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>Per a limitar la <emphasis
|
||
|
>vista de dades</emphasis
|
||
|
> les aplicacions de bases de dades ofereixen <emphasis
|
||
|
>consultes</emphasis
|
||
|
>, <emphasis
|
||
|
>formularis</emphasis
|
||
|
> i <emphasis
|
||
|
>informes</emphasis
|
||
|
>. </para>
|
||
|
<para
|
||
|
>Una manera pràctica de limitar és la següent versió extendida de la taula <guilabel
|
||
|
>Persones</guilabel
|
||
|
> descrita prèviament: </para>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Taula persones</emphasis
|
||
|
></para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="6">
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Nom</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Cognom</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Carrer</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Número de casa</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Ciutat</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Entrada</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joana</entry>
|
||
|
<entry
|
||
|
>Llopis</entry>
|
||
|
<entry
|
||
|
>plaça de Catalunya</entry>
|
||
|
<entry
|
||
|
>1</entry>
|
||
|
<entry
|
||
|
>Barcelona</entry>
|
||
|
<entry
|
||
|
>2300</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Marc</entry>
|
||
|
<entry
|
||
|
>Valls</entry>
|
||
|
<entry
|
||
|
>Joan Fuster</entry>
|
||
|
<entry
|
||
|
>5</entry>
|
||
|
<entry
|
||
|
>València</entry>
|
||
|
<entry
|
||
|
>1900</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
>Assumim que la nova columna introduïda <guilabel
|
||
|
>Entrada</guilabel
|
||
|
> conté dades confidencials. Com podeu compartir, per exemple, detalls de contacte de persones amb els vostres companys de feina però sense <emphasis
|
||
|
>revelar la seva entrada</emphasis
|
||
|
>? És possible si <emphasis
|
||
|
>només compartiu una consulta i no tota la taula</emphasis
|
||
|
>. A la consulta es poden seleccionar totes les columnes excepte la d'<guilabel
|
||
|
>Entrada</guilabel
|
||
|
>. En el món de les bases de dades, a una consulta com aquestes se li diu sovint una <guilabel
|
||
|
>visualització</guilabel
|
||
|
>. </para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="performance-and-capacity">
|
||
|
<title
|
||
|
>Execució i capacitat</title>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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: </para>
|
||
|
<itemizedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
>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. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>El mateix serveix per a les columnes (camps) de la taula. </para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para
|
||
|
>Juntament amb la <link linkend="data-limiting"
|
||
|
>Limitació de vista de dades</link
|
||
|
> descrites en paràgrafs previs, aquestes qualitats constitueixen l'avantatge de les bases de dades. </para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="convenient-data-entry">
|
||
|
<title
|
||
|
>Introducció de dades</title>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="reports">
|
||
|
<title
|
||
|
>Informes</title>
|
||
|
<para
|
||
|
>Les bases de dades permeten l'agrupament, la limitació i el resum de dades en un formulari d'un <emphasis
|
||
|
>informe</emphasis
|
||
|
>. 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. </para>
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="programming">
|
||
|
<title
|
||
|
>Programació</title>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="multiuse">
|
||
|
<title
|
||
|
>Multiús</title>
|
||
|
<para
|
||
|
>É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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="security">
|
||
|
<title
|
||
|
>Seguretat</title>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
|
||
|
</sect3>
|
||
|
</sect2>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="database-design">
|
||
|
<title
|
||
|
>Disseny de base de dades</title>
|
||
|
<para
|
||
|
>El disseny d'una base de dades requereix un estudi cuidadós. Noteu que el redisseny de la taula <guilabel
|
||
|
>Contactes</guilabel
|
||
|
> 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 <guilabel
|
||
|
>Adreça</guilabel
|
||
|
> en diferents camps requereix una feina cuidadosa i tediosa. </para>
|
||
|
<para
|
||
|
>Per a evitar aquestes situacions, <emphasis
|
||
|
>repenseu el vostre projecte de base de dades</emphasis
|
||
|
> 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. </para>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="who-needs-a-database">
|
||
|
<title
|
||
|
>Qui necessita una base de dades?</title>
|
||
|
<itemizedlist>
|
||
|
<title
|
||
|
>Quedeu-vos amb els fulls de càlcul si:</title>
|
||
|
<listitem
|
||
|
><para
|
||
|
>Les vostres necessitats estan limitades i les vostres dades no assoliran mai grans volums (de fet, podeu preveure-ho ara?) </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>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. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>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. </para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<title
|
||
|
>Considereu d'usar bases de dades si:</title>
|
||
|
<listitem
|
||
|
><para
|
||
|
>La vostra col·lecció de dades s'expandeix cada setmana.</para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>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. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>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. </para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="database-software">
|
||
|
<title
|
||
|
>Programari de creació de bases de dades</title>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>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. </para>
|
||
|
<para
|
||
|
>Als anys 70, els científics van formar la teoria de les bases de dades relacionals (termes com: <firstterm
|
||
|
>taula</firstterm
|
||
|
>, <firstterm
|
||
|
>registre</firstterm
|
||
|
>, <firstterm
|
||
|
>columna (camp)</firstterm
|
||
|
> i <firstterm
|
||
|
>relacionalitat</firstterm
|
||
|
> 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. </para>
|
||
|
<para
|
||
|
>Quant a les grans bases de dades a les empreses, la situació no ha canviat: encara necessiten potents ordinadors o complexes informàtics anomenats <firstterm
|
||
|
>clusters</firstterm
|
||
|
>. Això queda, malgrat tot, més enllà del tema d'aquest manual. </para>
|
||
|
<para
|
||
|
>Pel que fa a les bases de dades "accessibles" amb interfícies d'usuari per a PC, podeu escollir entre les següents: </para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://www.dbase.com/"
|
||
|
>DBase</ulink
|
||
|
> - 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. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://msdn.microsoft.com/vfoxpro/productinfo/overview/"
|
||
|
>FoxPro</ulink
|
||
|
> - 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. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://office.microsoft.com/access/"
|
||
|
>Microsoft Access</ulink
|
||
|
> - 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. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://www.filemaker.com/"
|
||
|
>FileMaker</ulink
|
||
|
> - popular aplicació similar a MS Access en simplicitat, operant en plataformes Windows i Macintosh, oferit des de 1985. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://www.kexi.pl/"
|
||
|
>&kexi;</ulink
|
||
|
> - 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 <ulink url="http://www.kde.org/"
|
||
|
>K Desktop Environment</ulink
|
||
|
>, un entorn per a sistemes Unix/Linux. Un contribuïdor significant al desenvolupament del &kexi; és l'empresa OpenOffice Poland. </para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</appendix>
|