Si vuole realizzare un'applicazione base di dati per la gestione di una
palestra.
Alla palestra hanno accesso due tipi diversi di persone: gli abbonati e
gli utenti occasionali. Gli abbonati sono titolari di un abbonamento
alla palestra, mentre gli utenti occasionali accedono alla palestra
tramite il pagamento di un'entrata a prezzo fisso (ad esempio Lit. 15.000)
e non sono titolari di nessun tipo di abbonamento.
Per ogni persona che ha accesso alla palestra si
vogliono memorizzare le seguenti informazioni: nome, cognome, codice fiscale,
indirizzo, numero di telefono, data di nascita, luogo
di nascita ed eventuali note relative al cliente considerato.
Gli abbonati alla palestra hanno una tessera identificata
univocamente da un codice di tessera.
Gli abbonati si suddividono in due categorie: studenti e lavoratori.
Gli studenti hanno uno sconto del 20% sul costo di tutti i tipi di
abbonamento, mentre i lavoratori di enti convenzionati
con la palestra hanno uno sconto variabile a seconda dell'ente di
appartenenza. Si noti che tutti i lavoratori appartenenti
allo stesso ente hanno lo stesso sconto su tutti i tipi di abbonamento.
Per gli studenti si vuole sapere se sono studenti di scuola superiore
o universitari, il tipo di scuola o il corso di laurea (liceo scientifico
piuttosto che corso di laurea in informatica) e l'istituto o
l'università cui sono iscritti (liceo scientifico Galileo Galilei
piuttosto che università di Milano Bicocca).
Ogni abbonato è titolare di un certo tipo
di abbonamento. Ogni tipo di abbonamento è
identificato da un codice e dà diritto
a frequentare solo i corsi o solo la sala pesi o entrambi.
Inoltre, per ogni tipo di abbonamento si vuole memorizzare
la durata (che può essere un anno,
sei mesi, tre mesi o un mese), il costo,
eventuali note relative all'abbonamento ed eventuali bonus a cui
l'abbonamento dà diritto
(lampade solari gratuite, buoni sconto presso negozi di articoli
sportivi, ecc.).
Quando una persona si abbona alla palestra si vogliono memorizzare informazioni relative alla data di inizio e di scadenza dell'abbonamento. Queste informazioni devono essere coerenti con quelle relative al tipo di abbonamento scelto. L'accesso di un abbonato alla palestra è concesso solo ed unicamente entro tali date. Un abbonato può iscriversi alla palestra senza portare il certificato medico. Ha tempo un mese a decorrere dalla data di iscrizione per portare il certificato medico. Dopo un mese non viene più ammesso alla palestra se ancora senza certificato medico.
Quando una persona rinnova l'abbonamento le informazioni relative
al precedente abbonamento sono cancellate dalla base di dati.
Non si è quindi interessati ad informazioni relative alla storia
degli abbonamenti di un abbonato.
Nella palestra si tengono dei corsi. Ogni corso è caratterizzato
da un codice, che lo identifica univocamente, un tipo
(aerobica, step, kick boxing, ecc.), il giorno della settimana
in cui si tiene il corso, un orario
(esempio: 9 AM-10 AM)1,
nome del preparatore atletico che tiene il corso, grado di difficoltà
del corso (da 1 a 5 dove 1 indica i corsi per principianti
e 5 i corsi avanzati). Si noti che esiste una sola zona della palestra
dove si fanno i corsi, quindi non è possibile effettuare due corsi diversi
contemporaneamente. Ogni preparatore atletico non può
dedicare più di tre ore al giorno ai corsi.
Il sabato pomeriggio (13 PM in poi) non si fanno corsi.
Gli orari della palestra sono (9 AM-10 PM) tutti i giorni
esclusa la domenica in cui la palestra è chiusa.
Per quello che riguarda il body building, esistono un insieme
di schede predefinite da assegnare agli abbonati che
hanno accesso alla sala pesi. Tali schede sono caratterizzate da
un codice di scheda che le identifica, un grado di difficoltà
(analogo a quello dei corsi), il nome del preparatore atletico
che ha creato la scheda, se la scheda è adatta solo
agli uomini, solo alle donne o ad entrambi,
il tipo della scheda (circuito aerobico, potenziamento, tonificazione,
ecc.), il tempo medio
stimato per effettuare la scheda (un'ora, due ore, ecc.),
per quanto tempo deve essere fatta la scheda (una settimana,
un mese, due settimane, ecc.), quante volte alla settimana
deve essere fatta la scheda.
Ad ogni scheda è associato un certo numero di esercizi.
Ogni esercizio è caratterizzato dal nome della
macchina su cui fare l'esercizio e dalla descrizione dell'esercizio stesso.
Si vuole inoltre tenere traccia del numero di ripetizioni per ogni serie
e del numero di serie che devono essere effettuate per un dato esercizio
relativamente ad una scheda.
Quando una persona si iscrive alla palestra con accesso
alla sala pesi le viene assegnata obbligatoriamente una scheda.
Si osservi che le schede hanno dei vincoli sul sesso
della persona che svolge la scheda.
Si vogliono tenere informazioni relative alla data in cui tale scheda
è stata assegnata, la data in cui si presume di cambiare
scheda2 e il preparatore atletico che la assegna,
che può essere diverso da quello che ha creato la scheda.
Una volta raggiunta la data in cui si presume di cambiare scheda
il preparatore atletico convoca l'abbonato per effettuare un eventuale
cambio di scheda o confermare quella attualmente
assegnata. È possibile cambiare la scheda attualmente
assegnata solo con una di 1 grado di difficoltà più alto
di quella in corso, con una minore o con una di pari grado.
Si può eventualmente confermare quella attualmente in uso.
Va conservata nella base di dati la storia delle schede
assegnate ad una persona fino a quando tale persona è iscritta
alla palestra.
Si vogliono gestire, in modo consistente, attraverso la base di dati le entrate delle persone nella palestra. Per ogni entrata si memorizza la data3, l'ora di entrata e di uscita4. Nel caso in cui una persona entri per frequentare una o più ore di corsi si vuole memorizzare quali corsi la persona ha seguito. Gli utenti occasionali dopo cinque entrate hanno diritto ad un'entrata gratis. Per gli abbonati le entrate sono vincolate al tipo di abbonamento che una persona possiede. Alla data di scadenza di un abbonamento si vogliono cancellare le entrate relative a quell'abbonamento. Di seguito si enunciano, a titolo di esempio, alcuni (ma non tutti) dei vincoli che devono essere verificati.
Le operazioni previste sulla base di dati sono le seguenti:
È possibile inserire procedure di gestione addizionali che si ritengono utili.