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
26 KiB
783 lines
26 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
|
||
|
>Introduzione alle banche dati</title>
|
||
|
|
||
|
<sect1 id="what-is-a-database">
|
||
|
<title
|
||
|
>Che cos'è una banca dati?</title>
|
||
|
<para
|
||
|
>Una banca dati può essere definita come una collezione di dati su un argomento. È organizzata in modo tale da rendere semplice scorrere le informazioni, apportare delle modifiche oppure aggiungere nuovi elementi. </para>
|
||
|
<para
|
||
|
>Guarda il diagramma per uno degli esempi di sopra: una semplice rubrica telefonica. </para>
|
||
|
<screenshot>
|
||
|
<screeninfo
|
||
|
>Diagramma di una banca dati di numeri telefonici</screeninfo>
|
||
|
<mediaobject>
|
||
|
<imageobject>
|
||
|
<imagedata fileref="contact-example.png" format="PNG"/>
|
||
|
</imageobject>
|
||
|
<textobject>
|
||
|
<phrase
|
||
|
>Diagramma di una banca dati di numeri telefonici</phrase>
|
||
|
</textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
<para
|
||
|
>L'immagine di sopra mostra un insieme di contatti presentati su schede diverse. Sembra che tale scheda possa costituire una singola riga in una tabella: </para>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Tabella <guilabel
|
||
|
>Contatti</guilabel
|
||
|
></emphasis
|
||
|
></para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="2">
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry
|
||
|
><guilabel
|
||
|
>Nome</guilabel
|
||
|
></entry>
|
||
|
<entry
|
||
|
><guilabel
|
||
|
>N. tel.</guilabel
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joan</entry>
|
||
|
<entry
|
||
|
>699 23 43 12</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Adam</entry>
|
||
|
<entry
|
||
|
>711 19 77 21</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Termini e definizioni</emphasis
|
||
|
>: un dato singolo che costituisce parte di una collezione più grande può essere chiamato <firstterm
|
||
|
>riga</firstterm
|
||
|
> o in maniera più professionale <firstterm
|
||
|
>record</firstterm
|
||
|
>. La collezione viene generalmente chiamata <firstterm
|
||
|
>tabella</firstterm
|
||
|
>. Inoltre, il nome più naturale per la tabella è quello che descrive i dati che offre/contiene, cioè <guilabel
|
||
|
>Contatti</guilabel
|
||
|
>. Ogni riga nella tabella è formata da <firstterm
|
||
|
>colonne</firstterm
|
||
|
>, spesso chiamate <firstterm
|
||
|
>campi</firstterm
|
||
|
>. Nella tabella <guilabel
|
||
|
>Contatti</guilabel
|
||
|
> ci sono due colonne (campi): <guilabel
|
||
|
>Nome</guilabel
|
||
|
> e <guilabel
|
||
|
>N. tel</guilabel
|
||
|
>. </para>
|
||
|
<para
|
||
|
>Per utilizzi più semplici una <firstterm
|
||
|
>banca dati</firstterm
|
||
|
> può essere costituita da una singola tabella. Molti le considerano equivalenti. Come vedrai, tipicamente avremo bisogno di più di una tabella nel caso di banche di dati reali. </para>
|
||
|
<para
|
||
|
>Per riassumere, hai appena visto una semplice banca dati con una tabella <guilabel
|
||
|
>Contatti</guilabel
|
||
|
>. </para>
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="database-and-spreadsheet">
|
||
|
<title
|
||
|
>Banca dati e foglio di calcolo</title>
|
||
|
<para
|
||
|
>È molto probabile che tu abbia già usato applicazioni per fogli di calcolo come KSpread, OpenOffice.org Calc o Microsoft Excel. In tal caso, probabilmente ti starai chiedendo: visto che sia un foglio di calcolo che una banca dati hanno delle tabelle, perché dovrei usare l'ultimo? </para>
|
||
|
<para
|
||
|
>Confrontando i fogli di calcolo con le banche dati puoi incontrare i seguenti problemi, che verranno affrontati in maggior dettaglio in seguito: </para>
|
||
|
<itemizedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="referential-data-integrity"
|
||
|
>Integrità referenziale sui dati</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="data-redundyncy"
|
||
|
>Ridondanza di dati</link>
|
||
|
</para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="data-integrity-and-validity"
|
||
|
>Integrità e validità dei dati</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="data-limiting"
|
||
|
>Limitare la visualizzazione dei dati</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="performance-and-capacity"
|
||
|
>Prestazioni e capacità</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="convenient-data-entry"
|
||
|
>Voci di dati convenienti</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="reports"
|
||
|
>Rapporti</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="programming"
|
||
|
>Programmazione</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="multiuse"
|
||
|
>Utilizzo multiplo</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><link linkend="security"
|
||
|
>Sicurezza</link
|
||
|
></para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<sect2 id="difference-database-and-spreadsheet">
|
||
|
<title
|
||
|
>In cosa una banca dati differisce da un foglio di calcolo?</title>
|
||
|
|
||
|
<para
|
||
|
>xxx, amplia la tua tabella <guilabel
|
||
|
>Contatti</guilabel
|
||
|
> aggiungendo una colonna (campo) <guilabel
|
||
|
>Indirizzo</guilabel
|
||
|
>. Aggiungi più numeri di telefono (ufficio, casa) per ogni persona ed aggiungi dei cognomi ai nomi. Per rendere il tutto più facile facciamo le seguenti assunzioni: </para>
|
||
|
<itemizedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
>la tabella è limitata a due persone (ovviamente ce ne potrebbero essere centinaia e migliaia in una vera banca dati)</para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>non esistono due persone con lo stesso nome e cognome</para>
|
||
|
</listitem>
|
||
|
</itemizedlist>
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Tabella dei contatti</emphasis
|
||
|
></para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="3">
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Nome e cognome</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Tel</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Indirizzo</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joan Smith</entry>
|
||
|
<entry
|
||
|
>699 23 43 12</entry>
|
||
|
<entry
|
||
|
>Western Gate 1, Warsaw</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Adam Willson</entry>
|
||
|
<entry
|
||
|
>711 19 77 21</entry>
|
||
|
<entry
|
||
|
>London, Frogs Drive 5</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joan Smith</entry>
|
||
|
<entry
|
||
|
>110 98 98 00</entry>
|
||
|
<entry
|
||
|
>Western Gate 1</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Smith Joan</entry>
|
||
|
<entry
|
||
|
>312 43 42 22</entry>
|
||
|
<entry
|
||
|
>Warsaw, Western Gate 1</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>ADAM Willson</entry>
|
||
|
<entry
|
||
|
>231 83 02 04</entry>
|
||
|
<entry
|
||
|
>Frogs Drive 5, London</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
>Una tabella di questo tipo può essere realizzata sia un foglio di calcolo che in una banca dati. Utilizzare un foglio di calcolo è sicuramente molto semplice. Quali problemi emergono a questo punto? </para>
|
||
|
|
||
|
<sect3 id="referential-data-integrity">
|
||
|
<title
|
||
|
>Integrità referenziale sui dati</title>
|
||
|
<para
|
||
|
>Supponi di utilizzare un foglio di calcolo e di avere la necessità di modificare l'indirizzo di almeno una persona. Nasce un piccolo problema: devi cambiare spesso l'indirizzo su diverse righe. Ad esempio, Joan appare su tre righe. Sorgerebbe un problema serio se dimenticassi di modificarne una - l'indirizzo associato a questa persona risulterebbe <emphasis
|
||
|
>ambiguo</emphasis
|
||
|
>, quindi <emphasis
|
||
|
>i tuoi dati perderebbero l'integrità</emphasis
|
||
|
>. </para>
|
||
|
<para
|
||
|
>Inoltre non c'è un modo semplice per cancellare una determinata persona dalla tabella dato che devi ricordarti di cancellare tutte le righe che la riguardano. </para>
|
||
|
</sect3>
|
||
|
|
||
|
|
||
|
<sect3 id="data-redundyncy">
|
||
|
<title
|
||
|
>Ridondanza dei dati</title>
|
||
|
<para
|
||
|
>È direttamente connesso al problema precedente. Nei campi <guilabel
|
||
|
>Nome e cognome</guilabel
|
||
|
> e <guilabel
|
||
|
>Indirizzo</guilabel
|
||
|
> vengono inseriti più volte gli stessi dati. È tipico del modo inefficiente con il quale un foglio di calcolo memorizza i dati, poiché la banca dati cresce inutilmente, il che richiede più risorse (dimensione più grande dei dati ed accesso più lento). </para>
|
||
|
<para
|
||
|
>Come puoi risolvere questi problemi con una banca dati? Puoi separare le informazioni in porzioni più piccole creando tabelle aggiuntive, come <emphasis
|
||
|
>Persone</emphasis
|
||
|
> con sole due colonne: <guilabel
|
||
|
>Nome e cognome</guilabel
|
||
|
> e <guilabel
|
||
|
>Indirizzo</guilabel
|
||
|
>: </para>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Tabella <guilabel
|
||
|
>Persone</guilabel
|
||
|
></emphasis
|
||
|
></para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="2">
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Nome e cognome</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Indirizzo</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joan Smith</entry>
|
||
|
<entry
|
||
|
>Western Gate 1, Warsaw</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Adam Willson</entry>
|
||
|
<entry
|
||
|
>Frogs Drive 5, London</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
>Ogni riga della tabella <guilabel
|
||
|
>Persone</guilabel
|
||
|
> corrisponde ad una <emphasis
|
||
|
>singola persona</emphasis
|
||
|
>. La tabella <guilabel
|
||
|
>Contatti</guilabel
|
||
|
> è d'ora in poi in relazione con la tabella <guilabel
|
||
|
>Persone</guilabel
|
||
|
>. </para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="data-integrity-and-validity">
|
||
|
<title
|
||
|
>Integrità e validità dei dati</title>
|
||
|
<para
|
||
|
>Fai attenzione al modo con il quale vengono inseriti i dati nei campi <guilabel
|
||
|
>Nome e cognome</guilabel
|
||
|
> e <guilabel
|
||
|
>Indirizzo</guilabel
|
||
|
>. Chi inserisce i dati potrebbe commettere degli errori, alcune volte potrebbe essere addirittura negligente. Tra i nostri dati campione abbiamo sia sequenze diverse di nome e cognome (Joan Smith e Smith Joan; Adam e ADAM) che molti altri modi di inserire lo stesso indirizzo. Puoi certamente immaginarne altri. </para>
|
||
|
<para
|
||
|
>Il problema suddetto mostra come, ⪚, quando si cerca un numero di telefono di una persona il cui indirizzo è "Western Gate 1, Warsaw" non si ottiene un risultato completo. Otterrai solo una riga invece di tre. Inoltre, non troverai neanche tutti i numeri di telefono cercando il valore "Joan Smith" nel campo <guilabel
|
||
|
>Nome e cognome</guilabel
|
||
|
>, poiché "Smith Joan" non coinciderà con "Joan Smith". </para>
|
||
|
<para
|
||
|
>Come puoi risolvere questi problemi usando una banca dati? Lo puoi fare modificando il progetto della tabella <guilabel
|
||
|
>Persone</guilabel
|
||
|
> attraverso: </para>
|
||
|
<orderedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
><emphasis
|
||
|
>Divisione dei dati</emphasis
|
||
|
> nei campi <guilabel
|
||
|
>Nome e cognome</guilabel
|
||
|
> in due campi separati: <guilabel
|
||
|
>Nome</guilabel
|
||
|
> e <guilabel
|
||
|
>Cognome</guilabel
|
||
|
>. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><emphasis
|
||
|
>Divisione dei dati</emphasis
|
||
|
> nel campo <guilabel
|
||
|
>Indirizzo</guilabel
|
||
|
> in tre campi diversi: <guilabel
|
||
|
>Via</guilabel
|
||
|
>, <guilabel
|
||
|
>Numero di casa</guilabel
|
||
|
> e <guilabel
|
||
|
>Città</guilabel
|
||
|
>. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><emphasis
|
||
|
>Garantendo la correttezza dei dati:</emphasis
|
||
|
> assicurando che nessun campo sia vuoto; ⪚, dovrai sempre inserire il numero di casa. </para
|
||
|
></listitem>
|
||
|
</orderedlist>
|
||
|
|
||
|
<para
|
||
|
>Una tabella modificata ha il seguente aspetto: </para>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Tabella Persone</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
|
||
|
>Nome</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Cognome</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Via</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Numero di casa</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Città</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joan</entry>
|
||
|
<entry
|
||
|
>Smith</entry>
|
||
|
<entry
|
||
|
>Western Gate</entry>
|
||
|
<entry
|
||
|
>1</entry>
|
||
|
<entry
|
||
|
>Warsaw</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Adam</entry>
|
||
|
<entry
|
||
|
>Willson</entry>
|
||
|
<entry
|
||
|
>Frogs Drive</entry>
|
||
|
<entry
|
||
|
>5</entry>
|
||
|
<entry
|
||
|
>London</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry namest="c1" nameend="c5"
|
||
|
><emphasis
|
||
|
>Vincoli</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>campo obbligatorio</entry>
|
||
|
<entry
|
||
|
>campo obbligatorio</entry>
|
||
|
<entry
|
||
|
>campo obbligatorio</entry>
|
||
|
<entry
|
||
|
>campo obbligatorio</entry>
|
||
|
<entry
|
||
|
>campo obbligatorio</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
>Grazie all'introduzione del vincolo di <guilabel
|
||
|
>campo obbligatorio</guilabel
|
||
|
> possiamo essere certi che il dato inserito sarà completo. In altri casi potresti ovviamente permettere l'omissione di alcuni campi quando si inseriscono i dati. </para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="data-limiting">
|
||
|
<title
|
||
|
>Limitare la visualizzazione dei dati</title>
|
||
|
<para
|
||
|
>Un foglio di calcolo mostra tutte le righe e le colonne della tabella, il che risulta fastidioso con fogli di dati molto grandi. Puoi ovviamente filtrare ed ordinare le righe nei fogli di calcolo, tuttavia devi essere molto attento quando lo fai. Gli utenti dei fogli di calcolo rischiano di dimenticare che la visualizzazione dei dati è stata filtrata, situazione che può portare a commettere degli errori. Ad esempio, mentre si calcolano delle somme puoi pensare di avere 100 righe di dati mentre in realtà ce ne sono altre 20 nascoste. </para>
|
||
|
<para
|
||
|
>Se vuoi lavorare su un piccolo sottoinsieme dei dati, ⪚ per inviarlo ad altri affinché lo modifichino, puoi copiarlo ed incollarlo su un altro foglio di calcolo e, dopo aver apportato le modifiche, ricopiare i dati modificati su quello principale. Una modifica "manuale" di questo tipo potrebbe causare la perdita di dati o calcoli scorretti. </para>
|
||
|
<para
|
||
|
>Per limitare la <emphasis
|
||
|
>visualizzazione dei dati</emphasis
|
||
|
>, le applicazioni per banche dati offrono <emphasis
|
||
|
>interrogazioni</emphasis
|
||
|
>, <emphasis
|
||
|
>moduli</emphasis
|
||
|
> e <emphasis
|
||
|
>rapporti</emphasis
|
||
|
>. </para>
|
||
|
<para
|
||
|
>Un modo molto pratico per limitare la visualizzazione dei dati è la seguente versione estesa della tabella <guilabel
|
||
|
>Persone</guilabel
|
||
|
> descritta in precedenza: </para>
|
||
|
|
||
|
<para
|
||
|
><emphasis
|
||
|
>Tabella Persone</emphasis
|
||
|
></para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="6">
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Nome</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Cognome</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Via</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Numero di casa</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Città</emphasis
|
||
|
></entry>
|
||
|
<entry
|
||
|
><emphasis
|
||
|
>Entrata</emphasis
|
||
|
></entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Joan</entry>
|
||
|
<entry
|
||
|
>Smith</entry>
|
||
|
<entry
|
||
|
>Western Gate</entry>
|
||
|
<entry
|
||
|
>1</entry>
|
||
|
<entry
|
||
|
>Warsaw</entry>
|
||
|
<entry
|
||
|
>2300</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry
|
||
|
>Adam</entry>
|
||
|
<entry
|
||
|
>Willson</entry>
|
||
|
<entry
|
||
|
>Frogs Drive</entry>
|
||
|
<entry
|
||
|
>5</entry>
|
||
|
<entry
|
||
|
>London</entry>
|
||
|
<entry
|
||
|
>1900</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para
|
||
|
>Supponiamo che la colonna appena introdotta <guilabel
|
||
|
>Entrata</guilabel
|
||
|
> contenga dati confidenziali. Come puoi condividere, ⪚, i dettagli di un contatto con i tuoi colleghi senza <emphasis
|
||
|
>rivelare le loro entrare</emphasis
|
||
|
>? È possibile solo se <emphasis
|
||
|
>condividi un'interrogazione e non la tabella intera</emphasis
|
||
|
>. L'interrogazione potrebbe selezionare tutte le colonne eccetto quella <guilabel
|
||
|
>Entrata</guilabel
|
||
|
>. Nel gergo delle banche dati questo tipo di interrogazione viene spesso chiamata <guilabel
|
||
|
>vista</guilabel
|
||
|
>. </para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="performance-and-capacity">
|
||
|
<title
|
||
|
>Prestazioni e capacità</title>
|
||
|
<para
|
||
|
>Probabilmente il tuo computer è abbastanza veloce, tuttavia potrai notare come questo non sia di aiuto con fogli di calcolo lenti e di grosse dimensioni. La loro bassa efficienza è per prima cosa dovuta alla mancanza di indici che accelerano il processo di ricerca dei dati (le banche dati spesso li offrono). Inoltre, se usi cose come gli appunti di sistema, addirittura la copia dei dati potrebbe diventare problematica con il passare del tempo. </para>
|
||
|
<para
|
||
|
>I fogli di calcolo che contengono grossi insiemi di dati potrebbero richiedere molto tempo per aprirsi. Un foglio di calcolo carica una grande quantità di dati sulla memoria del computer durante l'apertura. La maggior parte di essi sono probabilmente inutili/non necessari per il momento. Le banche dati, al contrario dei fogli di calcolo, caricano i dati dagli archivi solo quando necessario. </para>
|
||
|
<para
|
||
|
>Nella maggior parte dei casi non dovrai preoccuparti di come la banca dati memorizza i suoi dati. Ciò significa che, a differenza dei fogli di calcolo, le banche dati non si curano circa: </para>
|
||
|
<itemizedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
>La sequenza delle righe, visto che puoi ordinarle in base alle tue esigenze. Inoltre, puoi visualizzare gli stessi dati in maniere diverse con ordinamenti diversi. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>Lo stesso vale per le colonne (campi) della tabella. </para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para
|
||
|
>Insieme alla possibilità di <link linkend="data-limiting"
|
||
|
>limitare la visualizzazione dei dati</link
|
||
|
>, descritta nel paragrafo precedente, queste qualità costituiscono i vantaggi di una banca dati. </para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="convenient-data-entry">
|
||
|
<title
|
||
|
>Voce di dato</title>
|
||
|
<para
|
||
|
>Le ultime edizione delle applicazioni per la creazione di fogli di calcolo ti permette di progettare moduli per voci di dato. Questi tipi di modulo sono per lo più utili se i tuoi dati non possono essere mostrati in maniera conveniente con una visualizzazione tabulare, ⪚ se il testo occupa troppe righe oppure se tutte le colonne non entrano nello schermo. </para>
|
||
|
<para
|
||
|
>In questo caso il modo con il quale lavorano i fogli di calcolo è problematico. I campi per le voci di dato vengono collocati liberamente all'interno del foglio di calcolo e molto spesso non sono sicuri rispetto all'intervento (intenzionale od accidentale) dell'utente. </para>
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="reports">
|
||
|
<title
|
||
|
>Rapporti</title>
|
||
|
<para
|
||
|
>Le banche dati permettono il raggruppamento, la limitazione e l'aggregazione di dati in un modulo o in un <emphasis
|
||
|
>rapporto</emphasis
|
||
|
>. I fogli di calcolo sono generalmente stampanti sotto forma di piccole tabelle senza un pieno controllo automatico sulla divisione delle pagine e sul layout dei campi. </para>
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="programming">
|
||
|
<title
|
||
|
>Programmazione</title>
|
||
|
<para
|
||
|
>Le applicazioni per la creazione di banche dati contengono spesso linguaggi di programmazione completi. I fogli di calcolo più recenti hanno la stessa capacità, tuttavia i calcoli si limitano alla modifica dei campi del foglio di calcolo e alla mera copia dei dati, senza tener conto della rilevanza e dei vincoli di integrità, citati nei paragrafi precedenti. </para>
|
||
|
<para
|
||
|
>Il processamento dei dati all'interno di un foglio di calcolo è tipicamente eseguito attraverso una interfaccia utente di tipo grafico, cosa che potrebbe rallentarne la velocità. Le banche dati sono in grado di lavorare in background, al di fuori di interfacce grafiche. </para>
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="multiuse">
|
||
|
<title
|
||
|
>Utilizzo multiplo</title>
|
||
|
<para
|
||
|
>È difficile immaginare un utilizzo multiplo di un singolo foglio di calcolo. Anche se tecnicamente possibile nell'ambito delle applicazioni più recenti, richiede molta disciplina, attenzione e conoscenza da parte degli utenti, e ciò non può essere garantito. </para>
|
||
|
<para
|
||
|
>Un modo classico per condividere i dati salvati in un foglio di calcolo con altre persone è di inviarlo come nella sua interezza come file (tipicamente utilizzando la posta elettronica) oppure rendendolo disponibile come file in una rete di computer. Questo modo di lavorare è porta vantaggi in un grosso gruppo di persone - i dati necessari in un particolare momento potrebbero essere bloccati da un'altra persona. </para>
|
||
|
<para
|
||
|
>D'altro canto, le banche dati sono state progettate principalmente con gli accessi multiutente in mente. È permesso il blocco a livello di una riga di una determinata tabella persino nelle versioni più semplici, rendendo semplice la condivisione dei dati. </para>
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="security">
|
||
|
<title
|
||
|
>Sicurezza</title>
|
||
|
<para
|
||
|
>Rende sicuro un foglio di calcolo oppure le sue specifiche sezioni con una password è solamente un'azione simbolica. Dopo aver fornito un foglio di calcolo in una rete di computer, ogni persona in grado di copiarlo potrà provare ad eludere la protezione. A volte non è così difficile dato che la password è memorizzata all'interno del file stesso. </para>
|
||
|
<para
|
||
|
>È altrettanto facile eludere il blocco alle modifiche ed il blocco alla copia per un foglio di calcolo (o per una sua parte). </para>
|
||
|
<para
|
||
|
>Le banche dati (ad eccezione di quelle salvate in un file invece che su un server) non hanno bisogno di essere disponibili su un singolo file. Potrai accedere ad esse tramite una rete di calcolatori, tipicamente fornendo un nome utente ed una password. Otterrai l'accesso solamente a quelle aree (tabelle, moduli o addirittura specifiche righe e colonne) che ti sono state assegnate impostando appropriati diritti di accesso. </para>
|
||
|
<para
|
||
|
>I diritti di accesso possono influenzare la possibilità di modificare o di leggere i dati. Se non ti è reso disponibile alcun dato, non verrà neanche inviato al tuo computer in modo tale che non ci sia modo di crearne una copia così facilmente, come accade per i fogli di calcolo. </para>
|
||
|
|
||
|
</sect3>
|
||
|
</sect2>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="database-design">
|
||
|
<title
|
||
|
>Progettazione di una banca dati</title>
|
||
|
<para
|
||
|
>La progettazione di una banca dati richiede una pianificazione attenta. Nota che la riprogettazione della tabella <guilabel
|
||
|
>Contatti</guilabel
|
||
|
> proposta nella sezione 1.2 può generare dei problemi quando la tabella viene riempita di dati. Ad esempio, rinominare un campo è un compito semplice, ma separare il campo <guilabel
|
||
|
>Indirizzo</guilabel
|
||
|
> in campi separati richiede attenzione e uno lavoro tedioso. </para>
|
||
|
<para
|
||
|
>Per evitare queste situazioni, <emphasis
|
||
|
>pensa di nuovo al progetto della tua banca dati</emphasis
|
||
|
> prima di crearla sul tuo computer, e prima che tu e gli altri comincino ad utilizzarla. In questo modo, investendo del tempo all'inizio, probabilmente risparmierai del tempo durante l'uso quotidiano. </para>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="who-needs-a-database">
|
||
|
<title
|
||
|
>Chi ha bisogno di una banca dati?</title>
|
||
|
<itemizedlist>
|
||
|
<title
|
||
|
>Rimani ai fogli di calcolo se:</title>
|
||
|
<listitem
|
||
|
><para
|
||
|
>Le tue esigenze sono limitate ed i tuoi dati non cresceranno mai così tanto (puoi realmente prevederlo?) </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>Non riesci ad acquisire la metodologia necessaria alla costruzione di una banca dati. Tuttavia puoi considerare sia di delegare questa operazione a qualcun altro oppure di utilizzare strumenti più semplici. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>Utilizzi fogli di calcolo complicati e ti manca il tempo o il denaro per spostarti su una banca dati. Pensa, oppure chiedi a qualcuno, se questo non ti porti in un vicolo cieco. Non fare affidamento in strumenti "magici" (per quanto ben fatti) che convertono i tuoi fogli di calcolo in banche dati. </para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<title
|
||
|
>Considera l'utilizzo di banche dati se:</title>
|
||
|
<listitem
|
||
|
><para
|
||
|
>La tua collezione di dati si espande ogni settimana.</para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>Crei spesso nuovi fogli di calcolo, effettui delle operazioni di copia all'interno di essi e ti sembra che questo lavoro stia diventando sempre più noioso. In tal caso lo sforzo impiegato nella trasformazione in una banca dati ripaga facilmente. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
>Crei dei rapporti per i quali la vista a tabelle di un foglio di calcolo non è sufficiente. Potresti allora pensare di utilizzare una banca dati con viste a modello. </para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="database-software">
|
||
|
<title
|
||
|
>Software per la creazione di banche dati</title>
|
||
|
<para
|
||
|
>Finora hai imparato le caratteristiche generali delle banche dati senza aver visto in dettaglio le applicazioni specifiche per la loro progettazione. </para>
|
||
|
<para
|
||
|
>Le prime banche dati furono costruite all'interno di grandi computer mainframe negli anni 60, come gli IBM S⪚ystem/360. Non era ancora l'era dei PC e quindi queste banche dati avevano bisogno di personale altamente specializzato. Sebbene l'hardware dei vecchi computer fosse inaffidabile, fossero incredibilmente più lenti ed offrissero una capacità di memorizzazione minore, una caratteristica delle banche dati rimane ancora la più affascinante: l'accesso ai dati da parte di diversi utenti all'interno di una rete. </para>
|
||
|
<para
|
||
|
>Negli anni 70 alcuni scienziati crearono la teoria della banche dati relazionali (termini come <firstterm
|
||
|
>tabella</firstterm
|
||
|
>, <firstterm
|
||
|
>record</firstterm
|
||
|
>, <firstterm
|
||
|
>colonna (campo)</firstterm
|
||
|
> e <firstterm
|
||
|
>relazionalità</firstterm
|
||
|
> e molti altri). Sulla base di questa teoria vennero create le banche dati IBM DB2 ed Oracle, che sono state sviluppate ed utilizzate fino ai nostri giorni. Negli ultimi anni 70 vennero costruiti i primi PC. I loro utenti poterono (gradualmente) utilizzare differenti tipi di applicazioni, incluse quelle per la costruzione delle banche dati. </para>
|
||
|
<para
|
||
|
>Quando si tratta di grandi banche dati nelle aziende, la situazione cambia: richiedono ancora computer potenti o complessi chiamati <firstterm
|
||
|
>cluster</firstterm
|
||
|
>. Tutto questo va, però, oltre gli scopi del manuale. </para>
|
||
|
<para
|
||
|
>Nell'ambito delle banche dati "accessibili" con interfacce utenti grafiche per PC puoi scegliere tra i seguenti: </para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://www.dbase.com/"
|
||
|
>DBase</ulink
|
||
|
> - uno strumento per operazioni su banche dati per DOS, diffuso negli anni 80. I file nel formato DBase vengono ancora utilizzati in alcuni casi specifici a causa della loro semplicità. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://msdn.microsoft.com/vfoxpro/productinfo/overview/"
|
||
|
>FoxPro</ulink
|
||
|
> - un'applicazione simile a DBase (primi anni 90). Dopo essere stato acquisito da Microsoft vennero introdotte le interfacce utente grafiche e venne utilizzato quindi per creare banche dati sui PC. Questo prodotto viene ancora distribuito, anche se è ormai un po' obsoleto. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://office.microsoft.com/access/"
|
||
|
>Microsoft Access</ulink
|
||
|
> - un'applicazione per banche dati (progettazione sui dati e attraverso l'interfaccia grafica) con molte semplificazioni, per questo adatta ai principianti, progettata nei tardi anni 80, basato su un'architettura a 16 bit. Questo prodotto viene offerto ed è ampiamente utilizzato ancora ora, specialmente nelle piccole aziende, dove l'efficienza ed i requisiti di utenza multipla non sono fortemente richiesti. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://www.filemaker.com/"
|
||
|
>FileMaker</ulink
|
||
|
> - applicazione diffusa simile a MS Access per la semplicità, operativa sulle piattaforme Windows e Macintosh, distribuito sin dal 1985. </para
|
||
|
></listitem>
|
||
|
<listitem
|
||
|
><para
|
||
|
><ulink url="http://www.kexi.pl/"
|
||
|
>&kexi;</ulink
|
||
|
> - un'applicazione multipiattaforma (Unix/Linux, Windows, Mac OS X) progettata nel 2003, sviluppata nel rispetto dei principi OpenSource, parte del progetto globale <ulink url="http://www.kde.org/"
|
||
|
>KDE</ulink
|
||
|
>, &ie; un ambiente grafico per sistemi Unix/Linux. Un contributo significativo allo sviluppo di &kexi; è stato apportato dalla compagnia OpenOffice Poland. </para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</appendix>
|