Esempio 3.9. I proprietari dei veicoli
Si desidera realizzare il database degli autoveicoli e dei loro proprietari di un certo paese, ricordando che un autoveicolo può essere anche di proprietà di più persone (co-intestazione). In particolare si vuole registrare anche quale tipo di alimentazione abbia ogni veicolo; le possibilità di alimentazione devono essere le seguenti: benzina, diesel, gpl, metano, elettrico, idrogeno, ibrido (per considerare autoveicoli alimentabili con più tipi di propellenti). Aggiungere le eventuali ipotesi necessarie. E' richiesto di realizzare lo schema ER, le regole di lettura, lo schema sintetico delle relazioni e le tabelle di prova (testing).
Si suggerisce di leggere la soluzione solo dopo aver provato a risolvere l'esercizio (anche parzialmente) e di ripetere ogni volta l'esercizio a partire dal punto in cui si sono trovate le eventuali differenze nello svolgimento.
individuo identificato dal codice fiscale;
oggetto con legame di proprietà con cittadino/ni, identificato dalla targa e caratterizzato dalla tipologia di carburante con cui viene alimentato;
l'oggetto carburante (o tipo-di-carburante) rappresenta una «tipologia» di sostanze ed è identificato da un codice numerico.
L'esercizio potrebbe essere risolto utilizzando «carburante» come un semplice attributo dell'entità autoveicolo, che può assumere solo 7 valori (stringhe). Esiste però una soluzione alternativa (più efficiente soprattutto nei grandi database) che consiste nel realizzare un'ulteriore entità denominata (tipo-di-)carburante, in modo che venga assegnato un codice ad ogni tipo di carburante. In questo modo, nelle tabelle, non si dovrà più ripetere tante volte il nome del carburante (ad esempio «benzina»), ma basterà indicare, in sua sostituzione, il codice che lo rappresenta (ad esempio «1»), con notevole risparmio di memoria.
Dalle 3 entità si ottengono 3 relazioni, più un'ultima relazione dovuta alla presenza dell'associazione molti a molti (N:N). Si è evitato di usare lettere accentate sui nomi delle relazioni.
cittadini (cf, cognome, nome)
carburanti (codice, descrizione)
autoveicoli (targa, posti,
codice-carburante
)
proprieta (
cf-cittadino
, targa-auto
)
Tabella 3.10. cittadini
cf | cognome | nome |
---|---|---|
RSSMRA | Rossi | Mario |
VRDGPP | Verdi | Giuseppe |
BNCGPP | Bianchi | Giuseppe |
GLLGNN | Gialli | Gianna |
Tabella 3.11. carburanti
codice | descrizione |
---|---|
1 | Benzina |
2 | Diesel |
3 | Metano |
4 | GPL |
5 | Elettrico |
6 | Idrogeno |
7 | Ibrido |
Tabella 3.12. autoveicoli
targa | posti | codice-carburante |
---|---|---|
AZ12345 | 5 | 1 |
BZ12345 | 5 | 1 |
OIL9876 | 7 | 2 |
EE33333 | 5 | 5 |
Tabella 3.13. proprieta
targa-auto | cf-cittadino |
---|---|
AZ12345 | RSSMRA |
AZ12345 | VRDGPP |
OIL9876 | GLLGNN |
EE33333 | GLLGNN |
Per esercizio, risolvere lo stesso problema registrando anche la data di acquisto dell'autoveicolo.
Esempio 3.10. Dirigenti e dipendenti
Si desidera realizzare il database di un'azienda in cui lavorano due tipi di impiegati: gli impiegati che hanno un ruolo di manodopera e quelli che hanno un ruolo di dirigente. Tutti gli impiegati sono identificati da un numero di matricola, e inoltre hanno un cognome e un nome. Si desidera conoscere anche chi sia il dirigente di ogni impiegato. Aggiungere le ipotesi necessarie. E' richiesto di realizzare lo schema ER, le regole di lettura, lo schema sintetico delle relazioni e le tabelle di prova (testing).
Si suggerisce di leggere la soluzione solo dopo aver provato a risolvere l'esercizio (anche parzialmente) e di ripetere ogni volta l'esercizio a partire dal punto in cui si sono trovate le eventuali differenze nello svolgimento.
Dalle 2 entità si ottengono 2 relazioni, la presenza dell'associazione uno a molti (1:N) non genera una relazione, ma solo una chiave esterna.
Prima soluzione dirigenti (matricola, cognome, nome)
impiegati (matricola, posti,
matricola-dirigente
)
dipendente (matricola, cognome, nome,
matricola-dirigente
)