[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 19/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

Banche, anagrafi comunali, librerie, compagnie aeree e alberghiere, negozi, segreterie didattiche di università, guardia di finanza, industrie.
Sono solo alcuni esempi di attività che richiedono l'uso di una base di dati.

I sistemi per la gestione di basi di dati (spesso indicati come DBMS DataBase Management System o SGBD Sistemi per la Gestione delle Basi di Dati) hanno sempre costituito un forte interesse sia all'interno del mondo accademico che all'esterno.
La capacità di cercare, modificare, presentare, mettere in relazione dati nella maniera più veloce e simile agli schemi mentali delle persone che devono usarle è sempre stata ambizione e necessità di molti programmi per computer.

Nell'ambito degli ultimi 20 anni si sono venuti a creare vari modelli teorici di organizzazioni dei dati.
A questi sono seguite le implementazioni e l'uso.
Dai modelli molto semplici che principalmente lavoravano su archivi sequenziali si è arrivati al modello relazionale ad oggetti passando dal gerarchico, dal reticolare e da altri ancora.

Il modello attualmente più utilizzato è detto relazionale.
In questo articolo lo descriveremo secondo la sua teoria e vedremo come si può realizzare una piccola base di dati che possa essere utilizzata per gestire l'affitto di alcuni campetti da calcetto e dei tornei che vi si fanno. In fondo all'articolo è una piccola bibliografia.

Un po' di terminologia

Il modello relazionale si basa su due concetti primarî: entità e relazioni.
Le entità sono descrizioni dei dati così come li intendiamo normalmente e sono memorizzati in tabelle, le relazioni sono i rapporti tra le entità e non sono in genere memorizzabili.
Un semplice esempio è quello di avere le entità squadra e socio, con la relazione essere-portiere-di che lega le due entità.

Ogni entità è descritta da varî attributi che hanno un certo tipo. Nel caso dell'entità squadra gli attributi potrebbero essere nome di tipo sequenza di 50 caratteri, portiere di tipo sequenza di 30 caratteri, e così via per tutti i ruoli.

Le relazioni sono descritte dalle entità, dal verso e dalla cardinalità che può essere uno a uno, uno a molti, molti a uno, molti a molti; inoltre va considerata l'obbligatorietà o meno della relazione. Ad esempio il fatto che per ogni squadra abbia un socio come portiere, mentre non tutti i soci sono portieri di squadre.

Negli attuali sistemi per la gestione di basi di dati, le entità sono memorizzate in tabelle, mentre le relazioni sono descritte per ogni campo delle tabelle. Le tabelle sono concettualmente simili ad una griglia nella quale sistemiamo in ogni riga un elemento memorizzato nella tabella (detto istanza dell'entità o record) e in ogni colonna della riga un solo attributo dell'entità (detto campo.) Così la tabella dei soci potrà essere vista come una griglia che ha le colonne etichettate nome, cognome, numero-tessera e per ogni riga i relativi attributi per ogni singolo socio.Sulle relazioni c'è invece ancora grande discussione nel mondo accademico: alcuni le vedono all'interno della tabelle, altri le modellano esternamente. Per nostra fortuna i prodotti che vedremo sono tutti omogenei e modellano le relazioni internamente alle tabelle. Per questo nella tabella squadra c'è un campo chiamato Portiere che contiene un riferimento alla tabella dei soci.

Dopo aver introdotto i termini di entità, relazione, tabella e campo passiamo a formalizzare il riferimento usato per memorizzare le relazioni. Per ogni entità è necessario definire un campo (o una serie di campi presi insieme) che identifichi univocamente l'istanza. Ad esempio, per il socio si tratta del numero della tessera, per la squadra del nome. Questo campo è detto chiave primaria ed è quindi l'unico mezzo per identificare (e quindi per riferire) una particolare istanza. Per modellare la relazione ha-come-portiere si ricorre al mettere il riferimento al portiere, cioè si inserisce nella tabella squadra un campo (Portiere) dello stesso tipo della chiave primaria dell'entità socio. In questo caso si dice anche che il campo Portiere è chiave esterna, cioè chiave di un'altra entità.

A questo punto siamo in grado di vedere il seguente grafo e di capirlo. Si tratta di un grafo, semplificato, entità-relazioni che presenta lo schema del circolo di calcetto in esempio. (In grassetto vediamo le chiavi primarie mentre le relazioni sono indicate dalle frecce.)

Immagine GIF (Versione PDF)


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