[an error occurred while processing this directive]
diff logo Informatica e sistemi alternativi
su questo sito sul Web
    Home   Chi siamo    Contattaci    Scrivi per diff    Proponi un argomento 29/03/24
    Cos'è diff    Come accedere    F.A.Q.    Promuovi    Dicono di diff    Amici di diff    
AmigaOS
Linux
FreeBSD
BeOS
OpenSource
Java
Database
Informatica
Hardware
E-Commerce
Narrativa

Il modello Entità - Relazioni
di Giuseppe Sacco

Primo approccio alla realizzazione di una base di dati

Nel momento in cui si vuole realizzare una base di dati da gestire al calcolatore si deve innanzitutto analizzare approfonditamente il problema per capire quali sono le entità in gioco e quili le relazioni tra le entità. Questa fase permette di realizzare il modello (o schema) della base di dati, cioè un disegno simile a quello proposto qui sopra per il problema del calcetto.

La scelta delle entità e delle relazioni deve essere determinata sostanzialmente dal tipo di operazioni che ci si vogliono fare. Non ci si dovrebbe a questo livello fare influenzare dalle caratteristiche del programma che si vuole utilizzare, casomai si dovrebbe scegliere il programma da utilizzare solo successivamente al disegno del modello. (Queste considerazioni in realtà andrebbero fatte solo in presenza di attività critiche e non delle normali basi di dati che normalmente una singola persona può avere bisogno di realizzare.)

Definire i dati

Una volta definito lo schema si passa alla realizzazione dello stesso tramite un DBMS. In genere questi programmi mettono a disposizione un linguaggio per la realizzazione degli schemi che si chiama SQL Structured Query Language. Tramite questo linguaggio è possibile creare la tabella socio tramite questo comando:

CREATE TABLE Socio (
   tessera    NUMBER       CONSTRAINT pk_tessera PRIMARY KEY,
   nome       VARCHAR2(20) CONSTRAINT nn_nome NOT NULL,
   cognome    VARCHAR2(40),
   dataiscr   DATE         DEFAULT SYSDATE,
   datainizio DATE,
   datafine   DATE);

Questo comando crea una tabella che ha cinque campi. Sul primo campo è stato messo un vincolo (CONSTRAINT)  che lo fa divenire chiave primaria, sul secondo il vincolo che non sia mai un campo nullo. Sul quarto campo è stato definito un valore di default. Ad ogni campo è ovviamente associato un tipo.

Vediamo ora la definizione della tabella squadra che presenta anche delle chiavi esterne:

CREATE TABLE Squadra (
   nome     VARCHAR2(20) CONSTRAINT pk_nome PRIMARY KEY,
   portiere NUMBER     CONSTRAINT fk_portiere REFERENCES Socio(tessera),
   difdx    NUMBER     CONSTRAINT fk_difdx    REFERENCES Socio(tessera),
   difsx    NUMBER     CONSTRAINT fk_difsx    REFERENCES Socio(tessera),
   attdx    NUMBER     CONSTRAINT fk_attdx    REFERENCES Socio(tessera),
   attsx    NUMBER     CONSTRAINT fk_attsx    REFERENCES Socio(tessera));

Si vede che di nuovo c'è solo il vincolo di chiave esterna (REFERENCES.)

Definire gli operatori

Una volta definito lo schema in maniera completa si passa a definire gli operatori, vale a dire delle funzioni che permettano di ricercare, aggiungere o modificare i dati memorizzati nelle tabelle. Ad esempio, vediamo come scrivere una funzione che permetta di avere l'elenco di tutte le squadre impegnate in un certo torneo.

CREATE PROCEDURE SquadreInTorneo (nometorneo IN VARCHAR2(20))
AS BEGIN
   SELECT DISTINCT squadra.nome
   FROM squadra, incontro
   WHERE incontro.torneo = nometorneo AND 
      (incontro.squadra = squadra.nome OR 
       incontro.squadraavversaria = squadra.nome)
   END;

Ottimizzare

Una volta che avete terminato la definizione dello schema e avrete "nascosto" la vostra applicazione tramite una interfaccia grafica accattivante si arriverà all'utilizzo Dopo parecchio tempo noterete che il sistema non è più sufficientemente veloce per i vostri gusti. Niente paura! Non è il caso di uscire di casa per comperare una macchina più veloce, ma semplicemente si deve passare alla fase di ottimizzazione dello schema della base di dati o del programma che la gestisce.

Conclusioni

Adesso sappiamo come definire un semplice schema di basi di dati e conosciamo alcuni comandi  SQL per implementarlo. In articoli successivi passeremo in rassegna i principali comandi SQL e vedremo quali sono i programmi disponibili nell'ambito gratuito e in quello commerciale. Alla fine si vedrà anche come occuparsi dell'ottimizzazione.


continua...
con l'implementazione per PostgreSQL
DATABASE


Giuseppe Sacco è laureato in Scienze dell'Informazione presso l'Ateneo di Pisa. In passato si è occupato di Amiga (è uno dei fondatori di IPISA) e di Interfacce Utente Grafiche. Attualmente lavora nell'ambito dei prodotti ERP e si sta specializzando in amministrazione di sistema con Oracle, Informix, Unix e Windows NT. Da sempre ha tenuto sott'occhio il movimento attorno a Linux con un particolare riguardo alla distribuzione Debian della quale è coordinatore della traduzione del sito web in italiano.

Puoi contattare l'autore scrivendo a:
gsacco@diff.org


Articoli dello stesso autore:
Introduzione ad Oracle8i
Il modello entità - relazioni
Pagine web dinamiche


 


Indice dell'articolo:

Introduzione
Primo approccio alla realizzazione di una base di dati
Riletto in PostgreSQL

© 1999,2000,2001,2002 NonSoLoSoft di Ferruccio Zamuner (Italia)- tutti i diritti sono riservati