< Home
Stampa

Esercizi database

Sommario

Per ogni progetto:

  1. Definire diagramma E/R
  2. Diagramma logico
  3. Regole di normalizzazione
  4. Scrivere le Query DDL di generazione
  5. Popolamento (usare un generatore Dati, come un LLM).
  6. Svolgere infine le query indicate dall’esercizio.

Gestione biblioteca scolastica

Una Biblioteca ha un catalogo di Libri, ciascuno caratterizzato da un ISBN, un titolo e un anno di pubblicazione. Ogni libro appartiene a un genere e può essere scritto da uno o più Autori, di cui si memorizzano codice autore, nome e nazionalità. I Lettori registrati (identificati da codice fiscale, nome, cognome ed email) possono effettuare dei Prestiti. Un prestito riguarda un singolo libro, viene effettuato in una data di inizio e prevede una data di restituzione prevista e una data di restituzione effettiva.

Entità attese: LibroAutoreLettorePrestito.

Popolamento: Inserire 500 libri, con almeno 100 autori. Inserire 100 utenti, e uno storico di almeno 200 prestiti.

Query:

  1. Autore con più libri
  2. Lettore con più prestiti
  3. Libri in prestito attualmente
  4. Libro più prestato.

Piattaforma E-Commerce

Un Cliente (identificato da id cliente, nome, cognome, email) può registrare uno o più Indirizzi di spedizione (id indirizzo, via, cap, città). Il cliente effettua Ordini d’acquisto (id ordine, data, stato), indicando l’indirizzo di spedizione prescelto. Un ordine è composto da più VociOrdine; ogni voce d’ordine fa riferimento a un singolo Prodotto e specifica la quantità acquistata e il prezzo unitario applicato al momento della vendita. I prodotti (id prodotto, nome, prezzo di listino) sono suddivisi in Categorie (id categoria, nome categoria). Ciascun prodotto appartiene a una sola categoria.

Entità attese: ClienteIndirizzoOrdineVoceOrdineProdottoCategoria.

Popolamento: 100 prodotti, 10 categorie, 30 clienti, 40 indirizzi, 60 ordini, con mediamente da 2 a 5 voci per ordine.

Query:

  1. Indicare totale medio per ordine
  2. Numero ordini per cliente
  3. Cliente con più ordini
  4. Prodotto più venduto
  5. Categoria con più prodotti venduti

Centro medico

Un Paziente (codice fiscale, nome, cognome, data di nascita) può prenotare diverse Visite mediche. Ogni visita si svolge in una determinata data e ora, presso un Ambulatorio (numero stanza, piano) ed è condotta da un Medico (matricola, nome, cognome). Un medico afferisce a una o più Specializzazioni (codice, nome specializzazione). Al termine della visita viene redatto un singolo Referto (id referto, diagnosi, data redazione). Durante la visita, il medico può eseguire la Prescrizione di uno o più Farmaci (codice AIC, nome commerciale) .

Entità attese: PazienteVisitaAmbulatorioMedicoSpecializzazioneRefertoPrescrizione, Farmaco

Popolamento: 100 pazienti, 10 medici, 5 specializzazioni, 2 ambulatori, 200 referti, 100 prescrizioni, 20 farmaci

Query:

  1. Numero visite per ambulatorio
  2. Numero visite per specializzazione
  3. Paziente con più visite
  4. Medico con più visite
  5. Farmaco maggiormente prescritto
  6. Paziente con più prescrizioni

Gestione progetti aziendali

Un Dipendente (matricola, codice fiscale, nome, cognome) lavora all’interno di un Dipartimento (codice dipartimento, nome), il quale è diretto da un solo dipendente responsabile. I dipendenti vengono assegnati a diversi Progetti (codice progetto, nome, budget) con un dipendente che ne è responsabile; l’assegnazione prevede una data inizio, una data fine e un Ruolo coperto (codice ruolo, descrizione). Ogni progetto è commissionato da un Cliente (partita IVA, ragione sociale). Nel tempo, un dipendente subisce variazioni di stipendio: si vuole tracciare lo StoricoStipendio (id storico, data decorrenza, importo mensile).

Entità attese: DipendenteDipartimentoProgettoRuoloClienteStoricoStipendio 

Popolamento: 30 dipendenti, 5 dipartimenti, 12 progetti, 5 ruoli, 6 clienti, 50 storici stipendio

Query:

  1. Dipendente più pagato e meno pagato
  2. Elenco di dipendenti attualmente su più progetti, con relativo ruolo
  3. Dipartimento con più persone attualmente coinvolte in progetti
  4. Cliente che ha speso più budget
  5. Dipendente che ha ricevuto più cambi di stipendio

Assistenza IT

L’azienda gestisce Utenti (id utente, email, password) che si dividono nelle specializzazioni ClienteFinale (codice cliente, azienda) e Tecnico (matricola). Un ClienteFinale apre dei Ticket di assistenza (codice ticket, oggetto, data apertura, priorità, data ultimo intervento, note tecniche). Ciascun ticket è associato a una Categoria (id categoria, nome) e riguarda uno specifico Asset (codice inventario, tipo apparato, modello). Ogni ticket può subire diversi cambi di Stato, memorizzati in uno StoricoStato (data cambio, stato raggiunto, tecnico).

Entità attese: UtenteClienteFinaleTecnicoTicketCategoriaAsset,Stato, StoricoStato.

Popolamento: 30 utenti, 25 clienti finali, 5 tecnici, 100 ticket, 15 asset, 5 categorie, 3 stati (creato, preso in carico, chiuso), 250 storicistato.

Query:

  1. ClienteFinale che ha aperto più ticket
  2. Tecnico che ha gestito più ticket
  3. Numero di ticket presi in carico per tecnico
  4. Numero di ticket chiusi per tecnico
  5. Asset con più ticket
  6. Categoria con più ticket aperti
  7. Tecnico con più operazioni su una certa categoria