Esercizi di comprensione

Esempio 3.9. I proprietari dei veicoli

Testo del problema

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).

Soluzione del problema

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.

  1. Livello concettuale
    1. Vocabolario dei termini

      cittadino/proprietario

      individuo identificato dal codice fiscale;

      autoveicolo

      oggetto con legame di proprietà con cittadino/ni, identificato dalla targa e caratterizzato dalla tipologia di carburante con cui viene alimentato;

      carburante

      l'oggetto carburante (o tipo-di-carburante) rappresenta una «tipologia» di sostanze ed è identificato da un codice numerico.

    2. Schema E-R

      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.

      Figura 3.5. schema ER dell'autoveicolo e dei proprietari

      schema ER dell'autoveicolo e dei proprietari

    3. Le regole di lettura:
      • Ogni autoveicolo deve essere di proprietà di una o più persone;

      • Ogni persona può essere proprietaria di uno o più autoveicoli;

      • Ogni autoveicolo deve essere alimentato con un (tipo di) carburante;

      • Ogni (tipo di) carburante può alimentare uno o più autoveicoli.

  2. Livello logico

    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)

  3. Esempio di testing:
    è importante verificare che le tabelle possano contenere più cittadini proprietari di piu' autoveicoli (o di nessuno).

    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

Testo del problema

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).

Soluzione del problema

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.

  1. Livello concettuale
    1. Vocabolario dei termini

      impiegato

      persona fisica identificata dalla matricola, appartenente all'azienda;

      dirigente

      persona fisica identificata dalla matricola, può far parte degli impiegati stessi dell'azienda (soluzione 2), oppure può essere considerata una categoria a parte perchè è un superiore;

    2. Schema E-R

      La soluzione con due entità è suggerita se nel database verranno eseguite ricerche esclusivamente sui dipendenti o sui dirigenti.

      Figura 3.6. schema ER della prima soluzione

      schema ER della prima soluzione

      Figura 3.7. schema ER della seconda soluzione

      schema ER della seconda soluzione

    3. Le regole di lettura:
      Poichè le regole di lettura sono abbastanza simili nelle due soluzioni, si riporta solo quella della prima:
      • Ogni dipendente deve dipendere da un dirigente;

      • Ogni dirigente deve avere alle sue dipendenze uno o più impiegati.

  2. Livello logico

    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)

    Seconda soluzione

    dipendente (matricola, cognome, nome, matricola-dirigente)

    Nel caso di associazioni ricorsive le regole di derivazione rimangono le stesse, facendo finta che esistano due entità distinte. Si riveda l'esempio I vicini di banco. In questo caso gli impiegati dirigenti avranno la chiave esterna vuota perchè non hanno un dirigente.
  3. Esempio di testing:
    è lasciato come esercizio.