Crow’s Foot Notation
Una serie di tecniche di modellazione dei dati sono utilizzate oggi. Una delle più comuni è il diagramma entità-relazione (ERD). Sono disponibili diverse notazioni ERD. Per gli scopi di CS270 useremo la Crow’s Foot Notation.
Componenti utilizzati nella creazione di un ERD:
Entità – Una persona, luogo o cosa su cui vogliamo raccogliere e memorizzare più istanze di dati. Ha un nome, che è un sostantivo, e degli attributi che descrivono i dati che ci interessa memorizzare. Ha anche un identificatore, che identifica univocamente un’istanza di un’entità. L’attributo che funge da identificatore è contrassegnato da un asterisco.
Relazione – Illustra un’associazione tra due entità. Ha un nome che è un verbo. Ha anche cardinalità e modalità.
Cardinalità e modalità sono gli indicatori delle regole di business intorno ad una relazione. La cardinalità si riferisce al numero massimo di volte che un’istanza in un’entità può essere associata alle istanze nell’entità correlata. Modality si riferisce al numero minimo di volte che un’istanza in un’entità può essere associata ad un’istanza nell’entità correlata.
Cardinality può essere 1 o Many e il simbolo è posto alle estremità esterne della linea di relazione, più vicino all’entità, Modality può essere 1 o 0 e il simbolo è posto all’interno, accanto al simbolo della cardinalità. Per una cardinalità di 1 si traccia una linea retta. Per una cardinalità di Molti si disegna un piede con tre dita. Per una modalità di 1 si disegna una linea retta. Per una modalità di 0 si disegna un cerchio.
zero o più
1 o più
1 e solo 1 (esattamente1)
zero o 1
Cardinalità e modalità sono indicate alle due estremità della linea di relazione. Una volta fatto questo, le relazioni sono lette come 1 a 1 (1:1), 1 a molti (1:M), o molti a molti (M:M).
1:1
1:M
M:M
1:M
Tipicamente, ERD sono molto più complessi di questo, coinvolgendo un certo numero di entità e relazioni. Se uniamo tutte le relazioni di cui sopra e aggiungiamo alcuni attributi, una piccola collezione di dati potrebbe essere rappresentata nel modo seguente usando la Crow’sFoot Notation:
Considera le seguenti regole di business per un sistema di appuntamenti per pazienti:
Un medico può essere programmato per molti appuntamenti, ma potrebbe non averne nessuno in programma. Ogni appuntamento è programmato esattamente con 1 medico. Un paziente può programmare 1 o più appuntamenti.Un appuntamento è programmato esattamente con 1 paziente. Un appuntamento deve generare esattamente 1 fattura, una fattura è generata da 1 solo appuntamento. Un pagamento è applicato esattamente a 1 fattura, e 1 fattura può essere pagata nel tempo da diversi pagamenti. Una fattura può essere in sospeso, non avendo ancora pagato nulla su di essa. Un paziente può fare molti pagamenti, ma un singolo pagamento è fatto solo da 1 paziente. Se sono assicurati, possono essere assicurati solo con una compagnia. Una compagnia assicurativa può avere molti pazienti che portano le loro polizze. Per i pazienti che sono assicurati, la compagnia assicurativa farà dei pagamenti, ogni singolo pagamento è fatto esattamente da 1 compagnia assicurativa.
Viste le informazioni di cui sopra, si può disegnare il seguente ERD:
Intersezione Entità
Le entità di intersezione sono utilizzate nella risoluzione di una relazione molti a molti. Questa risoluzione è fatta per memorizzare informazioni aggiuntive che non rientrano nella lista degli attributi di entrambe le entità nella relazione M:M. Per esempio, nell’esempio istruttore-corso dato prima, c’è una relazione M:M tra Corso e Sezione; un corso può avere molte sezioni, e una sezione può avere molti corsi. Se vogliamo sapere quanti studenti sono registrati in una particolare classe, non possiamo memorizzare l’informazione su nessuna delle due entità. Potremmo memorizzare il numero totale di studenti registrati in tutte le sezioni di un particolare corso, nell’entità corso, cioè: 300 studenti sono registrati in CS270, tutte le sezioni incluse. Potremmo memorizzare il numero totale di studenti registrati in tutti i corsi con un particolare numero di sezione, nell’entità sezione, cioè: 25.000 studenti sono registrati in una sezione numerata 002. Se vogliamo informazioni più pratiche, come ad esempio quanti studenti sono registrati nella sezione 002 di CS270, abbiamo bisogno di un’altra entità in cui memorizzare le informazioni. Così, creiamo un’entità di intersezione e la collochiamo tra le sue entità correlate con gli attributi aggiuntivi. La relazione M:M diventa due relazioni 1:M. Vedi la risoluzione qui sotto.
Entità indipendenti
Le entità indipendenti sono quelle che possono esistere senza un’altra entità. Studente, posto, istruttore ecc. sono esempi di entità indipendenti.