mercoledì 9 gennaio 2008

Creazione delle tabelle

Per mostrare la creazione delle tabelle in Access userò MSAccess versione 2003.

Dopo aver creato un nuovo database, selezionare Tabelle (o Tables).
image

E premere Create table (Crea tabella). Comparirà la finestra mostrata in basso:

image 

Supponiamo di creare la tabella corrispondente alla entità Calciatore:
In alto scriveremo i vari attributi ed in basso caratterizzeremo ognuno di essi:

image

Le informazioni principali per da specificare sono il tipo di dato, la dimensione (se necessaria) ed il testo (Caption) che sarà visualizzato come descrizione della colonna quando la tabella sarà visualizzata in modalità Elenco.
I tipi di dato principali sono:
AutoNumber --> Indica un campo che incrementa di uno ad ogni inserimento
Testo --> è necessario specificare una dimensione massima (cioè il numero massimo di caratteri memorizzabili)
Number --> è necessario indicare il tipo numerico. A seconda del tipo si potranno memorizzare numeri con la virgola in singola o doppia precisione, numeri Interi senza virgola con range variabili. Per avere il dettaglio della dimensione posizionarsi su Field Size e premere F1
Boolean (Yes/No) --> corrisponde ad un flag che indica se il valore del campo è Vero o Falso
Data/Ora --> consente di memorizzare una data e o un orario
Oggetto OLE --> consente di inserire in un campo un oggetto di qualunque tipo (per esempio un documento, una foto, un brano musicale etc.)

Definizione della chiave primaria

Ogni tabella deve contenere una chiave che identifichi UNIVOCAMENTE l'entità (nel nostro caso il calciatore). Nel nostro esempio consideriamo come chiave il campo IDCalciatore. Per indicare che la chiave è questa è sufficiente selezionare il campo (o i campi) e premere la chiave gialla che compare nella toolbar:
image

Definizione di campi di Lookup

Seguendo i criteri della Normalizzazione, risulta preferibile usare un codice per identificare il ruolo e la squadra di appartenenza del calciatore. Il codice sarà la chiave primaria per della tabella corrispondente alla entità relativa (Ruoli o Squadre). Definiamo quindi due tabelle di anagrafica:

image 

Inseriamo qualche dato dopo aver salvato le due tabelle:

image
A questo punto posizionamoci sul campo IDRuolo della tabella dei calciatori e nella parte inferiore selezioniamo il tab Lookup e specifichiamo i dati indicati sotto:

image

In pratica indichiamo che il valore del campo IDRuolo, sarà recuperato dalla tabella tblRuoli. Non sono consentiti valori al di fuori di quelli indicati in tabella (Limit to List = Yes). Il valore memorizzato sarà il primo della (Bound Column = 1) cioè il campo IDRuolo. Il valore mostrato sarà però il NomeRuolo. Questo si ottiene indicando 0 nella larghezza della prima colonna.

Ripetere la  stessa attività per il campo IDSquadra.

Salvando la tabella come tblCalciatori il risultato sarà il seguente:

image

image

martedì 8 gennaio 2008

Progettare un database: le tabelle

Ms Access è prima di tutto un DBMS: Database Management System.
La fase più importante nella progettazione di un'applicazione Ms Access è l'individuazione della struttura delle tabelle in cui memorizzare i dati.
Si devono tenere presenti alcuni passi:
1. Individuazione delle Entità coinvolte. La parola entità deriva dalla teoria da cui sono derivati gli attuali DBMS. Il modello teorico prende infatti il nome di ER-Model: Entity Relationship Model. Le entità corrispondono alle tabelle del database. Si deve creare una tabella per ogni entità individuata nella realtà che si desidera informatizzare. Per esempio se si desidera realizzare un programma per la gestione di un campionato di calcio, le entità da considerare potrebbero essere: Calciatori, Calendario, Squadre, Classifiche. Il numero delle Entità da considerare dipende da quanto complesso e parametrizzabile si vuole rendere il sistema che stiamo progettando. Esiste un meccanismo, chiamato Normalizzazione, che tenendo fermi alcuni concetti fondamentali (come l'evitare la ridondanza dei dati) consente di razionalizzare la struttura del DBMS. Ad ogni entità corrisponderà una Tabella. Ogni elemento appartenente ad una entità corrisponde ad un Record della tabella.

2. Individuazione delle proprietà di ogni entità. Per proprietà si deve intendere una caratteristica dell'entità. Per esempio, nel caso del campionato di calcio il Nome, il Ruolo, Il Cognome potrebbero essere proprietà della entità chiamata calciatori. Ogni proprietà corrisponderà ad un Campo all'interno della tabella relativa all'entità considerata. Ogni campo è caratterizzato da un Tipo (per esempio numerico o testo).

3. Definire per ogni tabella un Indice primario. Un indice primario è un insieme di campi della tabella che identificano UNIVOCAMENTE quel dato elemento. Per esempio nel caso della entità Squadre, il nome della squadra potrebbe essere l'indice primario.

4. Definire le Relazioni tra le tabelle. Le relazioni consentono di garantire la congruità e la consistenza del database oltre ad evidenziare i "legami" tra le entità.

Perchè Access

Microsoft Access è uno strumento formidabile per lo sviluppo di applicazioni (anche di livello enterprise). Grazie alle sue potenzialità è usato da molte società sia come strumento per memorizzare dati sia come strumento per realizzare reports ed elaborare dati.

Cosa offre Access:
1. Un DBMS basato su file
2. Un linguaggio di programmazione potente (VBA)
3. Un motore di accesso ai dati (DAO) che consente tra l'altro di connettersi a sorgenti dati di diversa origine
4. Un sistema visuale per realizzare query
5. Un sistema di reporting veramente insuperabile

Nel caso di sistemi di una certa dimensione, è consigliabile sfruttare Access come Front End e memorizzare i dati su un Database Server (come MSSQL).

Non sempre è possibile stimare il numero di utilizzatori che potrà avere una certa applicazione. Molte volte si comincia con un piccolo archivio locale usato da un solo utente. Con il passare del tempo questo archivio si amplia includendo magari molte altre funzioni aprendosi ad altri utenti. A questo punto diventa inevitabile adottare una strategia di sviluppo migliore e più facilmente manutenibile. Questo si ottiene mediante i seguenti passaggi:

1. Organizzazione del codice in moduli / classi
2. Separazione tra dati (tabelle = Back End) e resto (Forms, reports, queries = Front End)
3. Mantenimento di una copia del Front End per le modifiche

Tramite questi accorgimenti sarà possibile modificare il Front End (cioè il vero e proprio programma) senza intaccare l'operatività degli utenti.

In effetti una delle peculiarità di un database Access (almeno dalla versione 97) è il blocco delle modifiche nel caso che il database sia aperto da qualche utente. In altre parole nessuna modifica può essere fatta se un utente ha aperto il database.

Tramite la copia di manutenzione noi possiamo effettuare le modifiche necessarie per metterle in linea alla prima occasione.-