ESERCITAZIONE DB RELAZIONALI 

Risolvere gli esercizi evidenziando il ruolo delle tabelle (MASTER o SLAVE) nelle singole relazioni. Indicate il tipo di relazione (1-->1 o 1-->N). Infine presentate la struttura di ogni singola tabella in dettaglio come visto per i DB monolitici.

Per le modalità di pubblicazione seguire l'esempio 0 qui riportato.

ESERCIZIO 0

TESTO PROBLEMA: Costruire un database che permetta di gestire i prestiti di una biblioteca.

Note:
Nel Forum la descrizione delle vostre tabelle deve essere più completa di quella qui sotto presentata.

ATTENZIONE: quando pubblico la mia soluzione sul forum devo  disabilitare il check box relativo all'uso del codice HTML (vedi figura qua sotto).

In questo modo i TAG html riportati nell'esempio funzionano.
Il significato di questi TAG è:

<U>Parola</U> sottolineato
<B>Parola</B> grassetto
<HR> linea orizzontale
<H1>Titolo in grande</H1>

SOLUZIONE:

COGNOME NOME (Classe) - COGNOME NOME (Classe) [secondo studente eventuale]
====================================================
ESERCIZIO 0
====================================================
TABELLE:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------------------------------
TBL_LIBRI
----------------------------------------------------
idLibro:
      Tipo: Contatore; 
      Indice:senza duplicati;
Titolo:
      Tipo: TESTO(255); 
      Indice: Con duplicati; 
Sunto:
      Tipo: MEMO; 
      Indice: Nessuno; 
etc. etc.

----------------------------------------------------
TBL_UTENTI
----------------------------------------------------
IdUtente:
      Tipo: Contatore; 
      Indice:senza duplicati;
Nominativo:
      Tipo: TESTO(60); 
      Indice: Con duplicati; 
Indirizzo:
      Tipo: TESTO(100); 
      Indice: Nessuno; 
etc. etc.
----------------------------------------------------
TBL_PRESTITI
----------------------------------------------------
IdPrestito:
      Tipo: Contatore; 
      Indice:senza duplicati;
IdUtente:
      Tipo: Numerico (Intero Lungo); 
      Indice:con duplicati;
CodLibro:
      Tipo:
Numerico (Intero Lungo)
      Indice:con duplicati;
DataPrestito:
      Tipo: Data/ora

      Indice:Nessuno;
DataRestituzione:
      Tipo: Data/ora

      Indice:
con duplicati;
etc. etc.
====================================================
RELAZIONI
:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TBL_UTENTI.IDUTENTE ---> TBL_PRESTITI.IDUTENTE  (relazione 1->N)
TBL_LIBRI.IDLIBRO   ---> TBL_PRESTITI.CODLIBRO  (relazione 1->N)

ESERCIZIO 1 - IV-M1.2A.1

Progettare un database che consenta di memorizzare l’albero genealogico della propria famiglia. Per ogni persona registrata, devo inserire:
- il suo nominativo
- la sua data di nascita
- l’eventuale data di morte
- i riferimenti ai suoi genitori.
- il riferimento all'eventuale coniuge e durata della loro relazione (la struttura deve consentire la registrazione di più coniugi abbinati ad una singola persona: infatti uno/una potrebbe risposarsi più volte nell'arco della propria vita) .
La struttura va progettata evitando qualsiasi ridondanza nell’informazione. Deve essere possibile determinare chi sono i fratelli e i fratellastri di ogni persona contenuta nell'archivio.

ESERCIZIO 2 - IV-M1.2A.2

Costruire un database che gestisca i conti correnti di una banca. L'archivio deve consentire la presenza di più conti correnti intestati ad uno stesso utente. Inoltre devono essere registrati tutti i movimenti contabili specificando: importo, data e tipo operazione (versamenti o prelievi). La banca registra, nello stesso archivio, tutta la corrispondenza inviata ai propri clienti e pertanto necessita anche di una anagrafica completa dei suoi correntisti.

ESERCIZIO 3 - IV-M1.2A.3

Costruire un database che gestisca gli abbonamenti di un autoparcheggio. Il gestore deve avere a disposizione l'anagrafica delle automobili che usufruiscono della struttura. Ogni abbonamento è numerato e quindi identificabile. Non è comunque richiesta la registrazione nel DB degli abbonamenti emessi. L'abbonamento è una tessera a punti nominativa (ovvero riporta il nome dell'utente). Ad ogni accesso al parcheggio l'abbonamento viene scalato di 1 punto e su di esso viene registrata la data del transito. I punti di ogni abbonamento sono 10. Quando un utente consuma la propria tessera ne acquista un'altra riconsegnando la vecchia. Quest'ultima viene riletta dal sistema e i dati relativi vengono inseriti nella tabella AbbonamentiEsauriti. Sull'abbonamento sono registrate le date  di tutti i 10 transiti. Al passeggio degli automezzi il database non acquisisce alcuna informazione relativamente al transito.

ESERCIZIO 4 - IV-M1.2A.4

Identico all'esercizio 3 ma con queste differenze:
- il gestore registra immediatamente nel database tutti i transiti in entrata
- la tessera non ha un numero fisso di punti ma viene stabilito all'atto dell'acquisto. Una volta acquistata, il numero di punti disponibili non può variare. Quando è esaurita sarà necessario acquistarne un'altra. - - La vecchia tessera non viene riletta poichè la tabella AbbonamentiEsauriti non viene gestita.
- La tessera non riporta il nome dell'utente ma la targa della vettura.
- Il gestore deve sapere chi è il proprietario di ogni autovettura per  una corretta fatturazione.

ESERCIZIO 5 - IV-M1.2A.5

Costruire un database che consenta ad una casa automobilistica la registrazione delle consegne delle proprie autovetture alle sue concessionarie. Ogni consegna deve riportare: modello auto, numero di automezzi per modello e data di consegna. La casa automobilistica tiene, per ogni modello di auto, una scheda descrittiva dettagliata contenente anche i riferimenti ai disegni registrati in formato DWG. Lo stesso archivio contiene le informazioni per tenere i contatti con le concessionarie. Per ogni auto consegnata vengono inoltre registrati: gli allestimenti, gli optional (ovvero tutto ciò che non rientra nella dotazione di serie), il modello di motore, il colore etc.

ESERCIZIO 6 - IV-M1.2A.6

Costruire un database che consenta la gestione della propria collezione di CD musicali. -  - Obbiettivo è memorizzare tutte le date di ascolto di ogni singolo brano (indipendentemente dal CD di appartenenza). Per ogni brano vogliamo avere: il testo della canzone, la durata e le notizie inerenti alla biografia degli autori.  Per ogni CD vogliamo registrare: il prezzo, la copertina e il suo contenuto (in brani).
Attenzione! Uno stesso brano può essere presente su CD diversi. Un brano può avere più autori.
-
Se l'obbiettivo del nostro archivio fosse quello di registrare tutte le date di ascolto di ogni brano contenuto in un particolare CD che modifiche devo apportare ?
 

ESERCIZIO 7 - IV-M1.2A.7

Progettare un database che tenga l'anagrafica dei programmi installati sui PC di tutti gli istituti scolastici bresciani. Obbiettivo è tenere sotto controllo le licenze e pertanto va gestita anche la registrazione degli acquisti dei pacchetti software. Gli acquisti vengono fatti da ogni singolo istituto ma l'archivio è unico.

ESERCIZIO 8 - IV-M1.2A.8

Progettare un database che consenta di registrare tutte le gare individuali inerenti alle olimpiadi. Per ogni disciplina olimpica devo conoscere il calendario, i luoghi e le date dove vengono disputate le singole gare. L'archivio deve permettere la registrazione delle classifiche con i tempi o i punteggi realizzati da ogni singolo atleta. Si tenga presente che alcuni atleti partecipano a più discipline. Ogni disciplina deve essere corredata da una breve descrizione che consenta di conoscerne gli aspetti e le regole.

ESERCIZIO 10 - IV-M1.2A.10

Progettare un database che gestisca il curriculum scolastico completo degli studenti del Liceo Leonardo.