Progetto basi di dati
Al fine di sperimentare l'uso di uno schema di terzi, abbiamo deciso di utilizzare lo schema ER del gruppo di Carta - Coronado. Abbiamo utilizzato lo snake case siccome, a meno che non sia delimitato da apici, postgresql è case-insensitive.
Si assume che tutte le misure siano espresse in centimetri
Vincoli sul dominio degli attributi
- In
sede
il campotipo sede
può valerelegale
ooperativa
- In
documento
il camposcadenza
deve essere successivo ad oggi - In
documento
il campodata_nascita
deve essere precedente a 18 anni fa - In
persona
il campocf
deve rispettare la regex (vedi il vincolo) - In
persona
il campoeta
deve essere maggiore o uguale a 18 - In
modello
il campolunghezza
deve essere compreso tra 0 e 500 - In
modello
il campolarghezza
deve essere compreso tra 0 e 250 - In
modello
il campoaltezza
deve essere compreso tra 0 e 250 - In
modello
il campon_porte
deve essere compreso tra 2 e 5 - In
modello
il campovelocita
deve essere compreso tra 30 e 350 - In
vettura
il campotarga
deve rispettare la regex (vedi il vincolo) - In
carta
il camposcadenza
deve essere successivo ad oggi - In
abbonamento
,data_inizio
deve essere minore didata_fine
- In
utente
il campoemail
deve rispettare la regex (vedi il vincolo) - In
fatturazione
,tempo_usufruito + tempo_non_usufruito
deve essere maggiore di 0 - In
prenotazione
,data_ora_inizio
deve essere prima didata_ora_fine
- In
modifica_prenotazione
,nuova_data_ora_inizio
deve essere prima dinuova_data_ora_fine
- In
utilizzo
,data_ora_ritiro
deve essere prima didata_ora_riconsegna
- In
utilizzo
,chilometraggio_ritiro
deve essere prima dichilometraggio_riconsegna
Vincoli di stato
- Una prenotazione puo essere fatta solo entro 15 minuti dal ritiro
- Logging modifiche e chiusura prenotazione
- Coerenza date modifica prenotazione
- Non si può inserire una carta scaduta
To do list
CREATE TABLES
Gestione delle diverse tipologie di utenti, conducenti, bonus e modalità di pagamento.
Per le parti non assegnate coprire solo na porzione minimale
Fare i trigger per rispettare i vincoli:
- Coprire la porzione di basi di dati relativa a vetture, modelli, parcheggi, abbonamenti, prenotazioni e effettivi utilizzi.
- Gestione delle diverse tipologie di utenti, conducenti abilitati, bonus e modalità di pagamento.
Inserire i valori dentro le tabelle base
Inserire valori di test dentro le tabelle
CREARE ALMENO TRE PROCEDURE/FUNZIONI
Vista fatturazione: Per ogni utilizzo concluso mostra le tariffe (se applicabili), senza tenere conto delle penali
Partendo dal punto precedente ottenere il prezzo minore e applicare penali e bonus
SELECT semplici (una con differenza e una con outer join)
- Determinare i parcheggi in una zona, di una categoria categoria, che abbano una vattura disponibile nelle prossime tre ore
- Ottenere coppia utente / veicolo dei noleggi attualmente in corso e l'orario previsto di riconsegna
- Determinare i parcheggi che non abbiano nemmeno una prenotazione nella prossima ora
SELECT complesse (una con GROUP BY, una con sottointerrogazione e una con divisione
- Data una vettura, determinare i suoi utilizzi nell'ultima settimana, calcolando i minuti effettivi d'uso e di prenotazione in cui non era usata
- Determinare il parcheggio con tempo di noleggio medio maggiore
- determinare gli utenti che hanno utilizzato tutte le vetture almeno una volta