Documentazione sinv

520 views
369 views

Published on

documento contenente le specifiche del progetto fatto alla laurea triennale all'università Insubria di Como riguardante la creazione di un sito web che gestisca la prenotazione online di auto a livello internazionale.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
520
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Documentazione sinv

  1. 1. 1 PROGETTO DATABASE 2009/2010Realizzato da:Polidoro Alessio, Mazzotta Simone, Lucca Alessandro
  2. 2. 2INDICE1. Tema del progetto 1.1 Descrizione del dominio applicativo........................................... 3 1.2 Volume dei dati ................................................................ 6 1.3 Operazioni e carico di lavoro previsti ........................................ 6 1.3.1 Interfaccia amministrativa ................................................ 6 1.3.2 Interfaccia personale ........................................................ 7 1.3.3 Interfaccia cliente ........................................................ 72. Analisi dei requisiti ........................................................................ 8 2.1 Individuazione entità, attributi ............................................... 8 2.2 Ristrutturazione specifiche ............................................... 103. Progettazione concettuale ............................................................... 13 3.1 Schema scheletro ............................................................... 13 3.2 Sotto schema utente ............................................................. 14 3.3 Sotto schema filiale ............................................................... 14 3.4 Integrazione utente con filiale ............................................... 15 3.5 Sotto schema veicolo ....................................................... 15 3.6 Integrazione veicolo con filiale con utente ............................... 16 3.7 Sotto schema storico prenotazione ....................................... 17 3.8 Integrazione finale (modello E-R) ....................................... 18 3.9 Database fittizio (Banca) ....................................................... 18 3.10 Vincoli ............................................................................... 19 3.11 Gerarchie di generalizzazione ............................................... 19 3.12 Dizionario delle entità ....................................................... 19 3.13 Dizionario delle associazioni ............................................... 22 3.14 Dominio di ogni singolo attributo ....................................... 234. Progettazione logica ....................................................................... 26 4.1 Sotto schema utente ....................................................... 26 4.2 Sotto schema filiale ....................................................... 26 4.3 Sotto schema veicolo ....................................................... 26 4.4 Schema E-R ristrutturato ....................................................... 27 4.5 Schema logico ............................................................... 28 4.6 Normalizzazione schema relazionale ........................................ 29 4.7 Scelte progettuali ............................................................... 295. Traduzione SQL ....................................................................... 30 5.1 Creazione tabelle ............................................................... 30
  3. 3. 31 Tema progetto1.1 Descrizione del dominio applicativoSi vuole realizzare un’applicazione web per la gestione/prenotazione online diuna società internazionale di noleggio veicoli (d’ora in poi indicata con la siglaSINV). Per far ciò l’applicazione deve prevedere tre diverse interfacce: una perle gestione dei dati delle filiali e del personale da parte degli amministratori delsistema,una per la gestione delle prenotazioni da parte del personale dellefiliali, effettuare prenotazioni online da parte dei clienti. Interfacciamento essere progettato tenendo presente che un membro delpersonale della SINV può essere anche cliente e quindi fare prenotazionionline. In questo caso si deve applicare uno sconto del 10% sul costo delnoleggio. I dati dei membri del personale sono inseriti direttamente dagliamministratori del sistema, mentre per effettuare una prenotazione i clientidevono registrarsi. I dati registrati per i membri del personale sono nome,cognome, data di assunzione, username e password da utilizzare per il loginnell’applicazione, più lo storico delle filiali in cui hanno lavorato. Oltre a nome,cognome, username e password,a un cliente è richiesto,in fase diregistrazione,anche lindirizzo completo, un numero di telefono,l’indirizzo e-mail, e le eventuali preferenze relative al tipo di veicolo. Durante laregistrazione un cliente può decidere se richiedere la carta della SINV. Unacarta può essere associata a un solo cliente, ed è caratterizzata da un numerounivoco e una data di attivazione. La carta permette di accumulare dei punti,che potranno essere utilizzati per ottenere sconti sul prezzo dei noleggi. Ilnumero di punti varia a seconda del tipo di veicolo e alla durata del noleggio. Ipunti accumulati possono essere spesi per ottenere uno sconto sul costo di unnoleggio, ipotizzando un cambio di 10 punti per euro. I punti da associare altipo di veicolo e alla durata del noleggio, nonché il cambio punti/euro,potrannoessere modificati dall’amministratore della SINV. Per ogni filiale sono disponibili (almeno) le seguenti informazioni: un codice univoco, il nome e l’indirizzo; il sito web; il recapito e-mail; l’elenco dei membri personale che hanno lavorato e lavorano nella filiale; veicoli disponibili e relativo prezzo (che può variare in base al tipo di veicolo, alla durata del noleggio, alla nazione e alla città in cui si trova la filiale); numero di veicoli per ogni tipo di veicolo; la data in cui la filiale è stata istituita. categoria, marca, modello, anno di produzione, ti podi motore(benzina, diesel, etc.); anno di acquisizione da parte della SINV; storico delle filiali a cui è appartenuto il veicolo;
  4. 4. 4 storico delle prenotazioni del veicolo; storico degli eventuali incidenti a cui il veicolo è stato soggetto; storico delle riparazioni, tagliandi, revisioni effettuati; orari e giorni di apertura. Inoltre, per ogni veicolo, il sistema deve registrare: In fase di prenotazione, i clienti possono effettuare una ricerca sui veicolidisponibili indicando la città e il periodo previsto per il noleggio. Il sistema devefornire al cliente, per ogni filiale, tutti i dati sopra indicati, a eccezione delleinformazioni sui membri del personale. Per effettuare una prenotazione,è necessario che lutente si registri. Quindi,una volta scelti filiale, veicolo, periodo e tipo di assicurazione e confermata laprenotazione, il cliente dovrà fornire i dati relativi alla sua carta di credito.Terminata la procedura, all’utente verrà visualizzata una pagina web che, unavolta stampata, avrà valore di ricevuta per la prenotazione effettuata. Talepagina dovrà contenere, oltre ad alcuni dati personali del cliente, codice e datadi prenotazione, più tutte le informazioni relative alla prenotazione effettuata(filiale, periodo, tipo veicolo, costo del noleggio, etc.). Il cliente potrà annullare la sua prenotazione gratuitamente entro i duegiorni precedenti la data prevista per il ritiro del veicolo, altrimenti dovràpagare una penale per ognuno dei veicoli prenotati. L’importo della penale èdeciso dagli amministratori e può variare secondo gli stessi parametri chedeterminano il costo dei veicoli. Allo stesso modo, un cliente potrà effettuaremodiche alla prenotazione iniziale senza incorrere in una penale, a patto chetali variazioni siano effettuate entro il termine dei due giorni. Le modiche diuna prenotazione potranno riguardare sia il tipo di veicolo che il periodo e, inbase a ciò, il costo del noleggio potrà subire un incremento/decremento. Un cliente può prenotare più di un veicolo per lo stesso periodo. Tuttavia ilsistema dovrà rifiutare prenotazioni di veicoli di filiali diverse, effettuate dallostesso cliente per le stesse date. Il principio è che il cliente che effettua laprenotazione per i veicoli di una filiale deve essere uno dei clienti cheeffettivamente utilizzeranno uno di tali veicoli per le date prenotate. Ne segueche,per la stessa data, un dato cliente non può prenotare veicoli in due filialidiverse. Per quanto riguarda la carta di credito, non è ovviamente previstalimplementazione di un sistema funzionante di pagamento online. Tuttavia ènecessario implementare controlli relativi alla validità della carta di credito(ades.,la carta di credito deve essere attiva e in grado di coprire il costo delleprenotazioni,la data di scadenza non deve essere precedente il giorno,o igiorni,per cui si è prenotato il veicolo, nome e cognome dell’intestatariodevono essere gli stessi della persona che effettua la prenotazione). A talscopo si consiglia di creare un database fittizio, distinto da quello della SINV, incui memorizzare i dati delle carte di credito di almeno alcuni dei clienti.L’applicativo dovrà quindi interrogare tale database per verificare se accettareo meno una prenotazione. Il cliente dovrà ritirare il veicolo presso la filiale indicata nella prenotazione,
  5. 5. 5ma potrà consegnarla in un’altra filiale. Questa informazione può esserespecificata dal cliente già in fase di prenotazione. Inoltre,il veicolo verràconsegnato al cliente con il serbatoio pieno, e il cliente a sua volta dovràprovvedere a consegnare il veicolo nello stesso stato. Il personale deve poter visualizzare tutte le prenotazioni in corso, effettuareeventualmente modiche su richiesta dei clienti e gestire il check-in e il check-out degli stessi(cioè il ritiro e la consegna dei veicoli noleggiati). Inoltre ilpersonale deve registrare, per ogni prenotazione, il chilometraggio iniziale efinale, eventuali ritardi nel ritiro o nella consegna,se il veicolo consegnatopresenta dei danni e se ha il serbatoio pieno(in tal caso,il cliente dovrà pagareil costo del carburante necessario a riempire il serbatoio). Tutti i dati relativi alle filiali e ai relativi veicoli possono essere modificatidagli amministratori del sistema. Modiche relative a filiali e veicoli possonoessere effettuate solo se non esistono al momento prenotazioni per talifiliali/veicoli. Inoltre la SINV adotta una politica di promozioni secondo la quale,a partire dalle due settimane precedenti la prenotazione,il costo dei veicoli èscontato del 20% nei giorni in cui esistono prenotazioni per un numero diveicoli inferiore al 50%(vedi Esempio1).Esempio 1 Supponiamo che, in data 13 febbraio, solo 8 veicoli su 20 di unadata filiale F siano stati prenotati per il 28 febbraio. Supponiamo ora che,sempre in data 13 febbraio, il cliente C1 prenoti un veicolo per il 28 febbraio.In tal caso C1 pagherà la tariffa piena, dato che 28 − 13 > 14. Supponiamoora chela successivaprenotazioneperil28febbraio sia effettuata dal cliente C2 indata 15 febbraio. In tal caso C2 otterrà lo sconto, dato che 28 − 15 < 14.Supponiamo infine che subito dopo il cliente C3 prenoti un veicolo per il 28febbraio. C3 pagherà la tariffa piena, dato che il 50% dei veicoli è prenotato(infatti, conC1 e C2 , esistono prenotazioni per 10 veicoli su 20). I valori dei parametri che determinano lattivazione degli sconti(cioè il rap-porto tra veicoli liberi e veicoli prenotati, e il numero di giorni precedenti ladata di prenotazione), nonché la stessa percentuale di sconto, possono esseremodificati dagli amministratori. Inoltre, a discrezione degli amministratori, talisconti possono essere applicati a tutti i clienti o solo ai possessori della carta.Lo sconto del 10% del personale non può essere accumulato a un eventualesconto sul prezzo del noleggio.
  6. 6. 6 1.2 Volume datiLa SINV consta di (almeno) 50 filiali, con un minimo di 20 veicoli ciascuno,distribuiti su (almeno) 10 nazioni. In alcune delle città maggiori è necessarioprevedere almeno 2 filiali. Ogni filiale è gestita da un responsabile,più(almeno)4 membri del personale della SINV. Per quanto riguarda i clienti, come data set di partenza il database deveregistrare prenotazioni in tutte le filiali per almeno i sei mesi precedenti la datadi discussione del progetto. A tal scopo si consiglia di preparare uno script ingrado popolare dinamicamente la base di dati,in base a determinati parametri(tra cui i mesi in cui sono state effettuate le prenotazioni).1.3 Operazioni e carico di lavoro previstiLe operazioni da prevedere sulla base di dati sono le seguenti(il carico di lavoroprevisto è indicato tra parentesi):1.3.1 Interfaccia amministrativa(Alessio Polidoro):(a) gestione personale: inserimento/modica/cancellazione dati delpersonale(frequenza: 100dipendenti/mese);(b) gestione filiali:i. inserimento/modica/cancellazione filiali (frequenza: 10 filiali/ mese);ii. inserimento/modica/cancellazione veicoli(frequenza: 50 veicoli/mese); iii. report che evidenzi, per ognuna delle filiali e a partire dal momento in cui ha iniziato la sua attività all’interno della SINV, dati statistici relativi al rapporto mensile tra veicoli prenotati e veicoli disponibili; questi dati devono fornire un’indicazione delle filiali che ricevono più/ meno prenotazioni,utile per decidere la cessione di una filiale,o la modifica delle sue tariffe(ad es., diminuendole, nel caso di un numero basso di prenotazioni, aumentandole, nel caso di un alto numero di prenotazioni), ma anche per decidere su quali filiali o città investire(ad es.,aumentando il numero di veicoli in una filiale,o creando/ acquisendo filiali in città di grande affluenza);(c) gestione promozioni: i. report che evidenzi, per ogni filiale, quali sono le promozioni eventualmente assegnate nel corso del tempo; ii. report che evidenzi i periodi in cui vi sono stati più filiali con promozioni; iii. report che evidenzi le filiali in cui si sono verificati gli sconti maggiori, con relativo periodo;
  7. 7. 71.3.2 Interfaccia personale(Alessandro Lucca):(a) gestione prenotazioni online: il personale dovrà poter visualizzare l’elencocompleto delle prenotazioni effettuate per ogni filiale e, per prenotazionipassate,quali e quanti dei clienti si sono effettivamente presentati;(b) gestione check-in: il personale deve registrare il ritiro del veicolo da partedei clienti, e eventuali modiche sulla prenotazione (come il tipo di veicolo/assicurazione,periodo di noleggio, etc.);inoltre il personale deve registrare ilchilometraggio iniziale e la data e ora effettive di ritiro del veicolo;il sistemadeve quindi restituire una pagina contenente tutti i dati relativi alnoleggio(compreso il chilometraggio iniziale del veicolo); tale pagina dovràessere stampata in duplice copia e firmata dal cliente e dal membro delpersonale incaricato del check-in;(c) gestione check-out: il personale deve registrare la consegna del veicolo daparte dei clienti e il pagamento effettivo(che può essere maggiore di quelloprevisto a causa della richiesta di servizi aggiuntivi ad es., il tipo diassicurazione scelta); inoltre il personale deve registrare il chilometraggiofinale, data e ora di consegna del veicolo, se il veicolo consegnato presenta deidanni e se ha il serbatoio pieno(in tal caso, il cliente dovrà pagare il costo delcarburante necessario a riempire il serbatoio);il sistema deve quindi restituireuna pagina che, stampata, avrà per il cliente valore di ricevuta fiscale.1.3.3 Interfaccia cliente(Simone Mazzotta):(a) gestione profilo cliente:i. registrazione cliente(frequenza: 100 clienti/giorno);ii. visualizzazione/modifica dati personali, e visualizzazione saldo punti;(b) ricerca e prenotazione filiali(frequenza:1.000prenotazioni/giorno): i. i parametri di ricerca devono prevedere la possibilità di scegliere la città, la filiale, e il periodo di noleggio; ii. una volta inseriti i parametri, il sistema deve restituire le filiali per cui vi sono ancora veicoli disponibili, ordinati in base al costo dei veicoli(dal più economico al più costoso), e fornire al cliente la possibilità di selezionare il tipo e il numero di veicoli; inoltre per ogni filiale elencate deve essere previsto un link a una pagina web, che ne riepiloga tutti i dettagli, e ne mostra una foto; iii. una volta scelta la filiale e confermato tipo e numero di veicoli e periodo, prima della conferma il cliente deve poter visualizzare un sommario in cui sono riepilogati i dati della prenotazione, compreso il prezzo e le informazioni relative alla possibilità di cancellare/ modificare una prenotazione,più i criteri di applicazioni di eventuali penali; iv. una volta confermata la prenotazione, il cliente dovrà fornire i dati della propria carta di credito;prima di confermare la prenotazione, il cliente potrà eventualmente scegliere di usare i punti accumulati per ottenere uno sconto; v. confermata la prenotazione,il sistema dovrà restituire una pagina web
  8. 8. 8 che fornisca tutti i dati relativi alla prenotazione,più un codice che identifichi univocamente la stessa; anche qui devono essere incluse le informazioni relative alla possibilità di cancellare/ modificare una prenotazione,più i criteri di applicazioni di eventuali penali; tale pagina, una volta stampata, avrà valore di ricevuta per la prenotazione effettuata.2-Analisi dei requisiti2.1 Individuazione entità e attributiEntitàAttributiSi vuole realizzare un’applicazione web per la gestione/prenotazione online diuna società internazionale di noleggio veicoli (d’ora in poi indicata con la siglaSINV). Per far ciò l’applicazione deve prevedere tre diverse interfacce: una perle gestione dei dati delle filiali e del personale da parte degli amministratori delsistema,una per la gestione delle prenotazioni da parte del personale dellefiliali, effettuare prenotazioni online da parte dei clienti.L’Interfacciamento deve essere progettato tenendo presente che un membrodel personale della SINV può essere anche cliente e quindi fare prenotazionionline. In questo caso si deve applicare uno sconto del 10% sul costo delnoleggio. I dati dei membri del personale sono inseriti direttamente dagliamministratori del sistema, mentre per effettuare una prenotazione i clientidevono registrarsi. I dati registrati per i membri del personale sono nome,cognome, data di assunzione, username e password da utilizzare per il loginnell’applicazione, più lo storico delle filiali in cui hanno lavorato. Oltre a nome,cognome, username e password,a un cliente è richiesto,in fase diregistrazione,anche lindirizzo completo, un numero di telefono,l’indirizzo e-mail, e le eventuali preferenze relative al tipo di veicolo. Durante laregistrazione un cliente può decidere se richiedere la carta della SINV. Unacarta può essere associata a un solo cliente, ed è caratterizzata da un numerounivoco e una data di attivazione. La carta permette di accumulare dei punti,che potranno essere utilizzati per ottenere sconti sul prezzo dei noleggi. Ilnumero di punti varia a seconda del tipo di veicolo e alla durata del noleggio. Ipunti accumulati possono essere spesi per ottenere uno sconto sul costo di unnoleggio, ipotizzando un cambio di 10 punti per euro. I punti da associare altipo di veicolo e alla durata del noleggio, nonché il cambio punti/euro,potrannoessere modificati dall’amministratore della SINV.Per ogni filiale sono disponibili (almeno) le seguenti informazioni: un codice univoco, il nome e l’indirizzo; il sito web; il recapito e-mail; l’elenco dei membri personale che hanno lavorato e lavorano nella filiale;
  9. 9. 9 veicoli disponibili e relativo prezzo (che può variare in base al tipo di veicolo, alla durata del noleggio, alla nazione e alla città in cui si trova la filiale); numero di veicoli per ogni tipo di veicolo; la data in cui la filiale è stata istituita. categoria, marca, modello, anno di produzione, ti podi motore(benzina, diesel, etc.); anno di acquisizione da parte della SINV; storico delle filiali a cui è appartenuto il veicolo; storico delle prenotazioni del veicolo; storico degli eventuali incidenti a cui il veicolo è stato soggetto; storico delle riparazioni, tagliandi, revisioni effettuati; orari e giorni di apertura.Inoltre, per ogni veicolo, il sistema deve registrare:In fase di prenotazione, i clienti possono effettuare una ricerca sui veicolidisponibili indicando la città e il periodo previsto per il noleggio. Il sistema devefornire al cliente, per ogni filiale, tutti i dati sopra indicati, a eccezione delleinformazioni sui membri del personale.Per effettuare una prenotazione,è necessario che lutente si registri. Quindi,una volta scelti filiale, veicolo, periodo e tipo di assicurazione e confermata laprenotazione, il cliente dovrà fornire i dati relativi alla sua carta di credito.Terminata la procedura, all’utente verrà visualizzata una pagina web che, unavolta stampata, avrà valore di ricevuta per la prenotazione effettuata. Talepagina dovrà contenere, oltre ad alcuni dati personali del cliente, codice e datadi prenotazione, più tutte le informazioni relative alla prenotazione effettuata(filiale, periodo, tipo veicolo, costo del noleggio, etc.).Il cliente potrà annullare la sua prenotazione gratuitamente entro i due giorniprecedenti la data prevista per il ritiro del veicolo, altrimenti dovrà pagare unapenale per ognuno dei veicoli prenotati. L’importo della penale è deciso dagliamministratori e può variare secondo gli stessi parametri che determinano ilcosto dei veicoli. Allo stesso modo, un cliente potrà effettuare modiche allaprenotazione iniziale senza incorrere in una penale, a patto che tali variazionisiano effettuate entro il termine dei due giorni. Le modiche di una prenotazionepotranno riguardare sia il tipo di veicolo che il periodo e, in base a ciò, il costodel noleggio potrà subire un incremento/decremento.Un cliente può prenotare più di un veicolo per lo stesso periodo. Tuttavia ilsistema dovrà rifiutare prenotazioni di veicoli di filiali diverse, effettuate dallostesso cliente per le stesse date. Il principio è che il cliente che effettua laprenotazione per i veicoli di una filiale deve essere uno dei clienti cheeffettivamente utilizzeranno uno di tali veicoli per le date prenotate. Ne segueche,per la stessa data, un dato cliente non può prenotare veicoli in due filialidiverse.
  10. 10. 10Per quanto riguarda la carta di credito, non è ovviamente previstalimplementazione di un sistema funzionante di pagamento online. Tuttavia ènecessario implementare controlli relativi alla validità della carta di credito(ades.,la carta di credito deve essere attiva e in grado di coprire il costo delleprenotazioni,la data di scadenza non deve essere precedente il giorno,o igiorni,per cui si è prenotato il veicolo, nome e cognome dell’intestatariodevono essere gli stessi della persona che effettua la prenotazione). A talscopo si consiglia di creare un database fittizio, distinto da quello della SINV, incui memorizzare i dati delle carte di credito di almeno alcuni dei clienti.L’applicativo dovrà quindi interrogare tale database per verificare se accettareo meno una prenotazione.Il cliente dovrà ritirare il veicolo presso la filiale indicata nella prenotazione, mapotrà consegnarla in un’altra filiale. Questa informazione può essere specificatadal cliente già in fase di prenotazione. Inoltre,il veicolo verrà consegnato alcliente con il serbatoio pieno, e il cliente a sua volta dovrà provvedere aconsegnare il veicolo nello stesso stato.Il personale deve poter visualizzare tutte le prenotazioni in corso, effettuareeventualmente modiche su richiesta dei clienti e gestire il check-in e il check-out degli stessi(cioè il ritiro e la consegna dei veicoli noleggiati). Inoltre ilpersonale deve registrare, per ogni prenotazione, il chilometraggio iniziale efinale, eventuali ritardi nel ritiro o nella consegna,se il veicolo consegnatopresenta dei danni e se ha il serbatoio pieno(in tal caso,il cliente dovrà pagareil costo del carburante necessario a riempire il serbatoio). Tutti i dati relativi alle filiali e ai relativi veicoli possono essere modificatidagli amministratori del sistema. Modiche relative a filiali e veicoli possonoessere effettuate solo se non esistono al momento prenotazioni per talifiliali/veicoli. Inoltre la SINV adotta una politica di promozioni secondo la quale,a partire dalle due settimane precedenti la prenotazione,il costo dei veicoli èscontato del 20% nei giorni in cui esistono prenotazioni per un numero diveicoli inferiore al 50%(vedi Esempio1).2.2 Ristrutturazione delle specificheSi vuole realizzare un’applicazione web per la gestione/prenotazione online diuna società internazionale di noleggio veicoli (d’ora in poi indicata con la siglaSINV). Per far ciò l’applicazione deve prevedere tre diverse interfacce: una perla gestione dei dati delle filiali e del personale da parte degli amministratori delsistema, una per la gestione delle prenotazioni da parte del personale dellefiliali, e una per effettuare prenotazioni online da parte dei clienti.Le interfacce devono essere progettate tenendo presente che un personaledella SINV può essere anche cliente e quindi fare prenotazioni online (quindiiscriversi e autenticarsi sul sito come cliente). In questo caso si deve applicareuno sconto del 10% sul costo del noleggio. I dati del personale sono inseritidirettamente dagli amministratori che dovranno loggarsi per poter inserire emodificare il personale , mentre per effettuare una prenotazione i clientidevono registrarsi sul sito. I dati registrati per il personale sono nome,cognome, data di assunzione, username e password da utilizzare per il loginnell’applicazione, mentre lo storico delle filiali in cui hanno lavorato verràsalvato in una tabella differente con data di inizio e di fine per ogni filiale .
  11. 11. 11Oltre a nome, cognome, user e password, a un cliente è richiesto, in fase diregistrazione, anche l’indirizzo con via, nazione, provincia, città, numero civico,un numero di telefono,l’indirizzo email, e le eventuali preferenze relative al tipodi veicolo. Durante la registrazione un cliente può decidere se richiedere lacarta della SINV. Una carta può essere associata a un solo cliente, ed è carat-terizzata da un codice, una data di attivazione. La carta permette diaccumulare dei punti, che potranno essere utilizzati per ottenere sconti sulprezzo dei noleggi. Il numero di punti varia a seconda del tipo di veicolo e alladurata del noleggio. I punti accumulati possono essere spesi per ottenere unosconto sul costo di un noleggio, ipotizzando un cambio di 10 punti per euro. Ipunti da associare al tipo di veicolo e alla durata del noleggio, nonché il cambiopunti/euro,potranno essere modificati dall’amministratore della SINV.Per ogni filiale sono disponibili le seguenti informazioni:• un codice univoco, il nome e l’indirizzo,composto da via,provincia,nazione numero civico e città;• il sito web;• il recapito email;• la data in cui la filiale è stata istituita.Per ogni veicolo sono disponibili:tipo, marca, modello, anno di produzione, motore, targa,disponibilità, puntigiornalieri, litri del serbatoio, targa, prezzo giornaliero• anno di acquisizione da parte della SINV;• orari e giorni di apertura;Lo storico delle filiali a cui è appartenuto il veicolo sarà salvato in una tabellacon data inizio e data fine per ogni filiale;Lo storico delle prenotazioni e degli eventuali incidenti, riparazioni, tagliandi,revisioni a cui il veicolo è stato soggetto saranno salvati in tabelle differenti;In fase di prenotazione, i clienti possono effettuare una ricerca sui veicolidisponibili indicando la città , la data di ritiro e consegna del noleggio. Ilsistema deve fornire al cliente, per ogni filiale, tutti i dati sopra indicati, aeccezione delle informazioni sul personale.Per effettuare una prenotazione, è necessario che il cliente si registri. Quindi,una volta scelti filiale, veicolo, periodo e tipo di assicurazione,il cliente dovràfornire i dati relativi alla sua carta di credito: codice,nome, cognome,scadenza, saldo. Terminata la procedura, al cliente verrà visualizzata unapagina web che, una volta stampata, avrà valore di ricevuta per laprenotazione effettuata. Tale pagina dovrà contenere, oltre ad alcuni datipersonali del cliente, codice e data di prenotazione, più tutte le informazionirelative alla prenotazione effettuata (filiale, periodo, tipo veicolo, costo delnoleggio, etc.).Il cliente potrà annullare la sua prenotazione gratuitamente entro i due giorniprecedenti la data prevista per il ritiro del veicolo, altrimenti dovrà pagare unapenale per ognuno dei veicoli prenotati. L’importo della penale è deciso dagliamministratori e può variare secondo gli stessi parametri che determinano il
  12. 12. 12costo dei veicoli. Allo stesso modo, un cliente potrà effettuare modifiche allaprenotazione iniziale senza incorrere in una penale, a patto che tali variazionisiano effettuate entro il termine dei due giorni. Le modifiche di unaprenotazione potranno riguardare sia il tipo di veicolo che il periodo e, in basea ciò, il costo del noleggio potrà subire un incremento/ decremento.Un cliente può prenotare solo un veicolo per lo stesso periodo(Per la stessadata iniziale e finale,specificate con giorno,mese,anno). Tuttavia il sistemadovrà rifiutare prenotazioni di veicoli effettuate dallo stesso cliente per lestesse date(Per le stesse date iniziali e date finali,specificate congiorno,mese,anno). Il principio è che il cliente che effettua la prenotazione per iveicoli di una filiale deve essere uno dei clienti che effettivamente utilizzerannouno di tali veicoli per le date prenotate(Date iniziali e finali, giorno, mese,anno). Ne segue che,perla stessa data(giorno,mese,anno), un dato cliente nonpuò prenotare veicoli in due filiali diverse.Per quanto riguarda la carta di credito, non è ovviamente prevista l’imple-mentazione di un sistema funzionante di pagamento online. Tuttavia ènecessario implementare controlli relativi alla validità della carta dicredito(Attributi codice,nome,cognome,scadenza,saldo)(ad es.,la carta dicredito deve essere attiva(Attributo scadenza) e in grado di coprire il costodelle prenotazioni(Attributo saldo),la data di scadenza(giorno,mese,anno) nondeve essere precedente il giorno,o i giorni,per cui si è prenotato il veicolo,nome e cognome dell’intestatario devono essere gli stessi del Cliente cheeffettua la prenotazione). A tal scopo si consiglia di creare un database fittizio,distinto da quello della SINV, in cui memorizzare i dati delle carte di credito dialmeno alcuni dei clienti. L’applicativo dovrà quindi interrogare tale databaseper verificare se accettare o meno una prenotazione.Il cliente dovrà ritirare il veicolo presso la filiale indicata nella prenotazione, mapotrà consegnarla in un’altra filiale(L’attributo filialecons inSTORICOPRENOTAZIONI indica il codice filiale). Questa informazione puòessere specificata dal cliente già in fase di prenotazione. Inoltre,il veicolo verràconsegnato al cliente con il serbatoio pieno, e il cliente a sua volta dovràprovvedere a consegnare il veicolo nello stesso stato(Attributi su EntitàCHECKOUT).Il personale deve poter visualizzare tutte le prenotazioni in corso per la filialein cui lavora, effettuare eventualmente modifiche su richiesta dei clienti egestire il check-in e il check-out degli stessi(cioè il ritiro e la consegna deiveicoli noleggiati). Inoltre il personale deve registrare, per ogni prenotazione, ilchilometraggio iniziale e finale, eventuali ritardi nel ritiro o nella consegna,se ilveicolo consegnato presenta dei danni e se ha il serbatoio pieno(Gestitotramite l’attributo Ltcarb in checkout che indica i litri rabboccati dal personale,se tale attributo non è 0, verrà moltiplicato per ltcarburante e si somma alcosto del noleggio a carico del cliente).Tutti i dati relativi alle filiali e ai relativi veicoli possono essere modificati dagliamministratori del sistema. Modifiche relative a filiali e veicoli possono essereeffettuate solo se non esistono al momento prenotazioni per tali filiali/veicoli.Inoltre la SINV adotta una politica di promozioni secondo la quale, a partiredalle due settimane precedenti la prenotazione,il costo dei veicoli è scontatodel 20% nei giorni in cui esistono prenotazioni per un numero di veicoli
  13. 13. 13inferiore al 50%(Gestito tramite dataattsconto, rapporto%veicoli inAMMINISTRAZIONE).“Esempio 1 Supponiamo che, in data 13 febbraio, solo 8 veicoli su 20 di unadata filiale F siano stati prenotati per il 28 febbraio. Supponiamo ora che,sempre in data 13 febbraio, il cliente C1 prenoti un veicolo per il 28 febbraio.In tal caso C1 pagherà la tariffa piena, dato che 28 − 13 > 14. Supponiamoora chela successiva prenotazione per il 28 febbraio sia effettuata dal clienteC2 in data 15 febbraio. In tal caso C2 otterrà lo sconto, dato che 28 − 15 <14. Supponiamo infine che subito dopo il cliente C3 prenoti un veicolo per il 28febbraio. C3 pagherà la tariffa piena, dato che il 50% dei veicoli è prenotato(infatti, con C1 e C2 , esistono prenotazioni per 10 veicoli su 20)”.I valori dei parametri che determinano l’attivazione degli sconti(cioè il rapportotra veicoli liberi e veicoli prenotati, e il numero di giorni precedenti la data diprenotazione), nonché la stessa percentuale di sconto, possono esseremodificati dagli amministratori(scontocli,dataattsconto,rapporto%veicoli inAMMINISTRAZIONE). Inoltre, a discrezione degli amministratori, tali scontipossono essere applicati a tutti i clienti .Lo sconto del 10% del personale nonpuò essere accumulato a un eventuale sconto sul prezzo del noleggio.3 Progettazione concettuale3.1 Schema scheletroInizialmente,leggendo le specifiche, abbiamo prodotto il seguente schemascheletro, indicante l’architettura di base della nostra base di dati.Di seguito descriviamo singolarmente i vari blocchi fino ad ottenere il modelloE-R definitivo.
  14. 14. 143.2 Sotto schema UTENTEAbbiamo optato per una gerarchia di generalizzazione totale-condivisa, poichéun membro del personale può essere presente anche nell’entità cliente nelmomento in cui vuole effettuare una prenotazione per se stesso. A sua volta,un cliente, può richiedere la carta SINV per l’accumulo punti per un eventualesconto futuro. Nel dettaglio, Pref è una stringa indicante le preferenze che uncliente specifica in fase di registrazione.3.3 Sotto schema FILIALE Abbiamo deciso di creare l’entità AMMINISTRAZIONE con la quale gestiamo i vari sconti, penali e altre informazioni che ogni filiale adotterà come politica in determinati periodi ed indipendentemente dalla politica generale della SINV. Nel dettaglio vediamo: -PenaleGG: attributo inserito nel caso in cui la prenotazione venga modificata entro due giorni dal ritiro del veicolo,indicante il valore che moltiplicato alcosto totale del noleggio determina l’aumento di prezzo;-CambioPnt: indica il rapporto punti/euro riguardo all’acquisizione e all’utilizzodei punti contenuti nella carta SINV;-DataAttSconto: indica il periodo nel quale la promozione(riguardante lo scontosul costo del noleggio) è attiva;-Rapporto%Veicoli: rapporto tra i veicoli disponibili e prenotati relativoall’attributo sopra descritto.
  15. 15. 15-LtCarburante: valore del singolo litro di carburante che la filiale utilizzerà percalcolare l’eventuale costo aggiuntivo nel caso in cui la vettura restituita nonabbia il serbatoio pieno.3.4 Integrazione UTENTE con FILIALEPer gestire l’elenco dei membri del personale che hanno lavorato e lavorano inuna filiale, creiamo l’associazione STORICO LAVORO che conterrà la datadell’assunzione (data-ini),la data di fine contratto( data-fin) che sarà NULL se ilsoggetto lavora attualmente nella filiale e inoltre se è responsabile di unadeterminata filiale(Responsabile). L’attributo Admin in PERSONALE indicainvece chi del personale è amministratore di una filiale.3.5 Sotto schema VEICOLO Ogni VEICOLO subisce, nel corso del tempo, più interventi di manutenzione, che si divideranno in INCIDENTE, TAGLIANDO, REVISIONE e RIPARAZIONE; la gerarchia di generalizzazione è totale/esclusiva. Nel dettaglio vediamo: -Disp: indica la disponibilità di un veicolo nel caso lo si voglia prenotare, conterrà un valore negativo solo nel caso in cui il noleggio sia in corso o il mezzo sia incidentato. -PrezzoGG: prezzo giornaliero di un determinato veicolo che verrà moltiplicato per la durata del noleggio. -PuntiGG: numero di punti giornalieri
  16. 16. 16che incrementeranno i punti della carta SINV.-Costo: costo del danno prodotto che andrà a gravare sull’attributo DiffCostodell’entità CHECK-OUT solo se il tipo dell’assicurazione scelta non copre i dannial veicolo.3.6 Integrazione VEICOLO con FILIALE con UTENTEIntegrando il sotto schema VEICOLO con FILIALE l’associazione che ne derivasarà STORICO VEICOLI che gestirà il possesso dei veicoli in un dato periodo trale varie filiali, avrà Data-ini e Data-fin come attributi che indicheranno l’inizio ela fine del periodo in cui il veicolo è stato in possesso di una filiale.
  17. 17. 173.7 Sotto schema STORICO PRENOTAZIONIL’associazione prenota presente nello schema scheletro viene gestita come unentità per mantenere informazioni sulle varie prenotazioni nel corso del tempo.Nel dettaglio vediamo:-Costo: conterrà il costo complessivo da versare/versato appena effettuata laprenotazione.-FilialeCons: indica il codice della filiale nella quale il veicolo verrà consegnato.-IDCC: conterrà il codice della carta di credito relativo al cliente che effettua laprenotazione e verrà utilizzato per controllare la validità, proprietà e il saldodella carta di credito.Il cliente deve scegliere una poliza assicurativa per ogni noleggio,caratterizzata da una descrizione, un prezzo, un tipo, un codice ed unmassimale.-Cod: sarà un codice numerico che si riferirà alla classe di appartenenzadell’assicurazione scelta.-Massimale: sarà la massima cifra che verrà coperta dall’assicurazione in casodi danni a terzi.Abbiamo gestito il ritiro e la consegna del veicolo con le entità CHECKIN eCHECKOUT .Vediamo nel dettaglio:-OraEffRit/OraEffCons/DataEffRit/DataEffCons: indicheranno ora e data effettividi ritiro e consegna poiché ora e data possono non coincidere con quelleindicate nella prenotazione e, nel caso, dovrà essere applicata una penale.-LtCarb: indicherà i litri di carburante rabboccati dal personale una voltaconsegnato il veicolo, verrà utilizzato per moltiplicarlo con Ltcarburante(presente nell’entità AMMINISTRAZIONE) per determinare il prezzo che il
  18. 18. 18cliente dovrà pagare per mancato pieno alla consegna; la somma verràmemorizzata in diffcosto.-Danni: Stringa che indentifica lo stato del veicolo al momento della consegna(incidentato o meno).3.8 Integrazione finale (modello E-R)Creiamo l’associazione fra CLIENTE e STORICO PRENOTAZIONI chiamataEFFETTUA contenente Data-Pren, che indica la data di prenotazione, el’associazione PRE VE tra le entità STORICO PRENOTAZIONI e VEICOLO.3.9 Database fittizio Banca Abbiamo deciso di creare un database differente per gestire la carta di credito. Oltre agli attributi che associano la carta di credito al suo proprietario abbiamo IDCC che identificherà il proprietario in STORICO PRENOTAZIONI.-Pin indica il codice segreto di 3 cifre (opportunamente codificato in md5) verràrichiesto al momento del pagamento.
  19. 19. 193.10 VINCOLIV1:Lo stesso cliente nelle stesse date non può prenotare veicoli di filialidiverse.V2:Non si possono fare modifiche relative a filiali e veicoli se esistono delleprenotazioni su queste filiali/veicoli.3.11 GERARCHIE DI GENERALIZZAZIONE: ENTITA’ ENTITA’ FIGLIE TIPOLOGIA PADRE UTENTE PERSONALE,CLIENTE TOTALE/CONDIVI SAMANUTENZIO INCIDENTE,TAGLIANDO,REVISIONE,RIPAR TOTALE/ESCLUSI NE AZIONE VA3.12 DIZIONARIO DELLE ENTITA’ NOME DESCRIZIO ATTRIBUTI IDENTIFICAT NE ORIUTENTE Utenti della USER USER SINV PW NOME COGNOME INDIRIZZOCLIENTE Cliente che si E-MAIL Stessi di registra nel TEL UTENTE sistema della PREF SINVPERSONALE Personale DATAASS Stessi di della SINV ADMIN UTENTECARTA Carta CODC CODC punti(se DATAATT richiesto dal PUNTI cliente)STORICO Storico CODP CODPPRENOTAZIONI Prenotazioni IDCC in corso e DATARIT concluse DATACONS
  20. 20. 20 nella SINV FILIALECONS COSTO ORARIT ORACONS FILIALERIT DATAPREN COSTOPARZASSICURAZIONE Assicurazion TIPO COD e scelta dal DESCRIZIONE cliente al PREZZO momento COD della MASSIMALE prenotazioneCHECK-IN Controllo al ORAEFFRIT Stessi di PRE momento del KM-INI NOL ritiro del DATAEFFRIT veicoloCHECK-OUT Controllo al DIFFCOSTO Stessi di PRE momento DATAEFFCONS NOL della ORAEFFCONS consegna LTCARB KMFIN DANNIAMMINISTRAZI Gestione DATA-FIN CODF, DATA-ONE amministrati DATA-INI INI, DATA-FIN va della PENALEGG SINV SCONTODIP SCONTOCLI CAMBIOPNT DATAATTSCONTO RAPPORTO%VEICO LI LTCARBURANTE PENALECONS PENALERITFILIALE Filiali della CODF CODF SINV NOME DATAIST GGCHIUSURA ORARIOAPE ORARIOCHIU E-MAIL SITO INDIRIZZOVEICOLO Veicoli della TARGA TARGA SINV DISP LTSERBATOIO ANNOPROD
  21. 21. 21 ANNOACQUISTO MODELLO MOTORE TIPO MARCA PUNTIGG PREZZOGG IMMAGINI CILINDRATA KMINI INFOVEICOLOMANUTENZIONE Manutenzion IDM IDM e effettuata DATA-INI sui veicoli DATA-FIN della SINV DESCRIZIONE TIPOINCIDENTE Manutenzion COSTO Stessi di e per COPERTURAASS manutenzione incidenteTAGLIANDO Manutenzion Stessi di e per manutenzione tagliandoREVISIONE Manutenzion Stessi di e per manutenzione revisioneRIPARAZIONE Manutenzion Stessi di e per manutenzione riparazioneCARTA Dati NOME IDCCCREDITO riguardanti il COGNOME proprietario TEL SALDO SCADENZA IDCC PIN
  22. 22. 223.13 DIZIONARIO DELLE ASSOCIAZIONI NOME DESCRIZIONE ATTRIBUTI ENTITA’ COLLEGATEPOSSIEDE Possibile CARTA possesso di CLIENTE una carta da parte di un clienteEFFETTUA Prenotazione DATA-PREN CLIENTE effettuate PRENOLHA Possibili ASSICURAZIONE assicurazioni su PRE NOL prenotazioniSUBISCE1 Controllo PRE NOL (check-in) sul CHECK-IN ritiro di un veicoloSUBISCE2 Controllo PRE NOL (check-out) CHECK-OUT sulla consegna di un veicoloSTORICO Storico DATA-INI PERSONALELAVORO personale delle DATA-FIN FILIALI filiali RESPONSABIL EPRE VE prenotazione PRE NOL su un veicolo VEICOLOGESTISCE Gestione AMMINISTRAZIONE amministrazion FILIALE e filialeSTORICO Storico veicoli DATA-INI FILIALEVEICOLI delle filiali DATA-FIN VEICOLOSUBISCE3 Possibile VEICOLO manutenzione MANUTENZIONE su un veicolo
  23. 23. 233.14 Domini AttributiEntità Carta:CODC : IntDATAATT: DatePUNTI : IntEntità Cliente:E-MAIL : StringTEL : StringPREF : StringEntità Utente:USER : StringPW : StringINDIRIZZO : String x String x String x String x IntNOME : StringCOGNOME : StringEntità Personale:DATASS : DateADMIN:BooleanAssociazione Effettua:DATA-PREN : DateEntità Assicurazione:PREZZO : RealTIPO : StringDESCRIZIONE : StringCOD : IntMASSIMALE: RealEntità Storico Prenotazioni:CODP : IntIDCC : StringDATARIT : DateDATACONS : DateFILIALECONS : StringCOSTO : RealORARIT : TimeORACONS : TimeFILIALERIT:StringCOSTOPARZ:RealDATAPREN:Date
  24. 24. 24Entità Check In:ORAEFFRIT : TimeKM-INI : IntDATAEFFRIT : DateEntità Check out:DIFFCOSTO : RealDATAEFFCONS : DateORAEFFCONS : TimeLTCARB : RealKMFIN : IntDANNI : BooleanAssociazione STORICO LAVORO:DATA-INI : DateDATA-FIN : DateRESPONSABILE:BooleanEntità AMMINISTRAZIONE:DATA-FIN : DateDATA-INI : DatePENALEGG : RealSCONTODIP : RealSCONTOCLI : RealCAMBIOPNT : IntDATAATTSCONTO : DateRAPPORTO%VEICOLI : RealLTCARBURANTE : RealPENALECONS : RealPENALERIT : RealEntità FILIALE:CODF : IntNOME : StringDATAIST : DateGGCHIUSURA : StringORARIOAPE : TimeORARIOCHIU :TimeE-MAIL : StringSITO : StringINDIRIZZO : String x String x String x String x IntAssociazione STORICO VEICOLI:DATA-INI : DateDATA-FIN : Date
  25. 25. 25Entità VEICOLO:TARGA : StringDISP : BooleanLTSERBATOIO : RealANNOPROD : DateANNOACQUISTO : DateMODELLO : StringMOTORE : StringTIPO : StringMARCA : StringPUNTIGG : IntPREZZOGG : RealIMMAGINI:StringINFOVEICOLO:StringCILINDRATA:RealKMINI:IntEntità MANUTENZIONE:IDM : IntDATA-INI : DateDATA-FIN : DateDESCRIZIONE : StringTIPO:StringEntità INCIDENTE:COSTO : RealCOPERTURAASS:IntEntità CARTACREDITO:NOME:StringCOGNOME:StringIDCC:IntSALDO:RealSCADENZA:DatePIN:String
  26. 26. 264-PROGETTAZIONE LOGICAFASE DI RISTRUTTURAZIONE4.1 SOTTO SCHEMA UTENTE L’attributo composto indirizzo lo abbiamo ristrutturato inserendo gli attributi di INDIRIZZO ad UTENTE; la gerarchia di generalizzazione l’abbiamo gestita creando le associazioni DATI CLIENTE e DATI PERSONALE rispettivamente tra entità padre UTENTE ed entità figlie CLIENTE e PERSONALE.4.2 SOTTO SCHEMA FILIALE Anche in queso caso l’attributo composto indirizzo è stato ristrutturato inserendo gli attributi nell’entità FILIALE, questo per rendere più semplice la modifica di questi campi in maniera semplificata.4.3 SOTTO SCHEMA VEICOLO In questo caso la ristrutturazione della gerarchia di generalizzazione è stata implementata mantenendo le entità INCIDENTE in quanto rispetto alle altre entità figlie è caratterizzata da un costo e coperturaass (copertura assicurativa), poiché se un cliente danneggia la vettura e possiede una copertura assicurativa di livello minore rispetto alla kasko dovrà versare l’intero costo del danno causato. Per quanto riguarda le altre entità figlie è stato aggiunto l’attributo tipo in manutenzione che descrive la causa dell’assenza di un veicolo in un dato periodo (indicato con data-ini e data-fin).
  27. 27. 274.4 SCHEMA E-R RISTRUTTURATO
  28. 28. 284.5 SCHEMA LOGICO SINVCliente ( userutente , email, tel, preferenze )Utente(user , pw, nome, cognome, citta, via, nciv, naz, prov)Carta( codc, punti, dataatt,usercliente )Personale(userutente , dataass, admin )Storicolavoro(userpersonale, codffiliale, dataini, datafin, responsabile )Filiale( codf, nome, dataist, ggchiusura, orarioape, email, sito, citta, via, nciv,prov, naz, orariochiu )Amministrazione( codffiliale, dataini, datafin, penalegg, penalerit, penalecons,scontodip, scontocli, cambiopunti, dataattsconto, rapportopercveicoli,ltcarburante )Storicoveicoli( codffiliale, targaveicolo, dataini, datafin )Veicolo( targa, prezzogg, puntigg, marca, tipo, motore, modello,AnnoAcquisto, annoProd, ltserbatoio,disp,cilindrata,immagini,infoveicolo,kmini)Manutenzione( idm, targaveicolo, dataini, datafin, descrizione, tipo )Incidente( idmmanutenzio ne, costo,coperturaass)Storico Prenotazioni( codp, orarit, oracons, idcc, datarit, datacons,filialecons, filialerit, costo, costoparz, datapren, usercliente, codassicurazione,targaveicolo)Assicurazione( cod, tipo, descrizione, prezzo,massimale)Checkin( codpstoricoprenotazione, oraeffrit, kmini, dataeffrit )Checkout(codpstoricoprenotazione, danni, kmfin, ltcarb, oraeffcons, diffcosto,dataeffcons )
  29. 29. 294.6 NORMALIZZAZIONE SCHEMA RELAZIONALEObiettivo: verificare che lo schema logico ottenuto sia normalizzato in formanormale di Boyce-Codd, oppure in alternativa, in terza forma Normale.- Definizione Boyce-Codd: Una relazione R è in forma normale di Boyce e Codd(BCNF) se e solo se per ogni dipendenza funzionale X->Y,X è una superchiaveper R.- Definizione Terza Forma Normale: Una relazione è in 3FN se per ognidipendenza funzionale X->Y è vera una delle seguenti condizioni: - X è una superchiave della relazione - Y è membro di una chiave della relazioneRisultato Finale:Lo schema relazionale ottenuto è normalizzato in 3NF(Terza Forma Normale)poiché in alcune relazioni abbiamo una chiave primaria ottenuta utilizzandodue attributi della stessa.Abbiamo preferito effettuare questa scelta di normalizzazione, invece diutilizzare identificativi numerici per ogni tupla delle relazioni, per facilitareoperazioni future sulle stesse.4.7 SCELTE PROGETTUALI-Per CC ( Carta Credito) creiamo un altro DB chiamato “banca fittizia” doveregistriamo per ogni utene la propria carta di credito;-Per la disponibilità dei veicoli in fase prenotazione usiamo una query sia suSTORICO PRENOTAZIONI che su MANUTENZIONE (controllo che il veicolo nonsia impegnato in un altro noleggio o in manutenzione);-Nella tabella MANUTENZIONE il “tipo” indica se si tratta di revisione, tagliandoo riparazione;-Il veicolo dopo ogni check-out se risulta incidentato va in manutenzione e nonè più disponibile fino alla data fine (campo da compilare durante la gestione diun incidente);-La sensibilità oraria è gestita a giorni;-La gestione dell’assicurazione è unica per tutta la SINV;-Il prezzo del singolo veicolo è uguale per tutte le SINV;
  30. 30. 30-Se un membro del personale si registra come cliente mantiene lo stessoUsername e Password;-La data di inizio della manutenzione in caso di incidente dovrà essere ugualealla data di consegna del veicolo noleggiato;-La gestione dei vincoli V1 e V2 specificati sopra è stata implementatamediante l’applicativo (controlli a livello php);-Lo sconto del 10% viene applicato al cliente solo in fase di prenotazione e nondurante modifiche su richiesta;-I punti vengono dati al cliente in solo in fase di pagamento durante laprenotazione e non durante le modifiche successive;-Nella realizzazione del dominio degli attributi, utilizziamo domini genericiconsoni con il modello ER, ma in fase di create table i domini saranno consonial linguaggio sql;-Se l’utente sceglie una filiale consegna diversa dalla filiale ritiro selezionata, ilveicolo sarà poi riportato alla filiale intestataria;-Nella parte del personale le seguenti query vengono visualizzate per la filialedi appartenenza del membro del personale:Il personale dovrà poter visualizzare l’elenco completo delle prenotazionieffettuate per ogni filiale e, per prenotazioni passate,quali e quanti dei clienti sisono effettivamente presentati.5 TRADUZIONE IN SQL5.1 Creazioni tabelle (create-table)CREATE TABLE Utente(user VARCHAR(40) PRIMARY KEY,pw VARCHAR(40) NOT NULL,nome VARCHAR(10) NOT NULL,cognome VARCHAR(15) NOT NULL,via VARCHAR(20),n-civ VARCHAR(5),città VARCHAR(20) NOT NULL,prov VARCHAR(20) NOT NULL,naz VARCHAR(20),UNIQUE(nome,cognome,tel));
  31. 31. 31CREATE TABLE Cliente(user VARCHAR(40) REFERENCES UtenteON UPDATE CASCADEON DELETE NO ACTION,tel VARCHAR(17) NOT NULL,e-mail VARCHAR(33),preferenze VARCHAR(100),PRIMARY KEY(USER));CREATE TABLE Carta(codc DECIMAL(8) PRIMARY KEY,punti DECIMAL(5) NOT NULL,dataatt DATE NOT NULL,user VARCHAR(40) REFERENCES Cliente ON UPDATE CASCADE ON DELETE CASCADE);CREATE TABLE Personale(user VARCHAR(40) REFERENCES UtenteON UPDATE CASCADEON DELETE NO ACTION,dataass DATE NOT NULL,admin BOOLEAN,PRIMARY KEY(user));CREATE TABLE Storicolavoro(user VARCHAR(40) REFERENCES PersonaleON UPDATE CASCADEON DELETE CASCADE,codf DECIMAL(8) REFERENCES FilialeON UPDATE CASCADEON DELETE CASCADE,data-ini DATE NOT NULL,data-fin DATE,responsabile BOOLEAN,PRIMARY KEY(user,codf));CREATE TABLE Filiale(codf DECIMAL(8) PRIMARY KEY,nome VARCHAR(15) NOT NULL,dataist DATE,ggchiusura VARCHAR(30) NOT NULL,orarioape TIME(4) NOT NULL,
  32. 32. 32orariochiu TIME(4) NOT NULL,e-mail VARCHAR(30),sito VARCHAR(30),città VARCHAR(20) NOT NULL,via VARCHAR(20) NOT NULL,n-civ VARCHAR(5) NOT NULL,prov VARCHAR(20) NOT NULL,naz VARCHAR(25) NOT NULL);CREATE TABLE Amministrazione(codf DECIMAL(8) PRIMARY KEY,data-ini DATE PRIMARY KEY,data-fin DATE,penalegg DECIMAL(8,2) NOT NULL,penalerit DECIMAL(8,2) NOT NULL,penalecons DECIMAL(8,2) NOT NULL,scontodip DECIMAL(3,2) NOT NULL,scontocli DECIMAL(3,2) NOT NULL,cambiopunti DECIMAL(3,2) NOT NULL,dataattsconto DECIMAL(2) NOT NULL,rapportoPercVeicoli DECIMAL(4,2) NOT NULL,ltcarburante DECIMAL(4,3) NOT NULL,FOREIGN KEY (codf) REFERENCES filialeON DELETE NO ACTIONON UPDATE CASCADE);CREATE TABLE Storicoveicoli(Codf DECIMAL(8) REFERENCES filialeON UPDATE CASCADEON DELETE CASCADE,targa VARCHAR(10) REFERENCES veicoloON UPDATE CASCADEON DELETE CASCADE,data-ini DATE NOT NULL,data-fin DATE,PRIMARY KEY (codf,targa));CREATE TABLE Veicolo(targa VARCHAR(10) PRIMARY KEY,prezzogg DECIMAL(6,2) NOT NULL,puntigg DECIMAL(5) NOT NULL,marca VARCHAR(20) NOT NULL,tipo VARCHAR(15) NOT NULL,
  33. 33. 33motore VARCHAR(10),modello VARCHAR(20),annoAcquisto DATE,annoProd DATE,ltserbatoio DECIMAL(6) NOT NULL,disp BOOLEAN NOT NULL,cilindrata DECIMAL(5) NOT NULL,immagini VARCHAR (150),infoveicolo VARCHAR(300),kmini DECIMAL(7,1));CREATE TABLE Manutenzione(idm DECIMAL(8) PRIMARY KEY,data-ini DATE NOT NULL,data-fin DATE NOT NULL,descrizione VARCHAR(100),tipo VARCHAR(15) NOT NULLtarga VARCHAR(10) REFERENCES veicoloON DELETE NO ACTIONON UPDATE CASCADE);CREATE TABLE Incidente(idm DECIMAL(8) REFERENCES ManutenzioneON UPDATE CASCADEON DELETE CASCADE,costo DECIMAL(8,2) NOT NULL,coperturaass DECIMAL(1) NOT NULL,PRIMARY KEY(idm));CREATE TABLE StoricoPrenotazioni(codp DECIMAL(6)PRIMARY KEY,orarit TIME NOT NULL ,oracons TIME NOT NULL,idcc DECIMAL(20) NOT NULL,datarit DATE NOT NULL,datacons DATE NOT NULL,filialecons DECIMAL(8) NOT NULL,filialerit DECIMAL(8) NOT NULL ,costo DECIMAL (8,2) NOT NULL,user VARCHAR(40) REFERENCES ClienteON UPDATE CASCADEON DELETE NO ACTION,cod VARCHAR(6) REFERENCES AssicurazioneON UPDATE CASCADEON DELETE NO ACTION,
  34. 34. 34Targa VARCHAR(10) REFERENCES VeicoloON UPDATE NO ACTIONON DELETE NO ACTION,datapren DATE NOT NULL,costoparz DACIMAL(8,2));CREATE TABLE Assicurazione( cod VARCHAR(6) PRIMARY KEY, tipo VARCHAR(50) NOT NULL,descrizione VARCHAR(500),prezzo DECIMAL (8,2) NOT NULL,massimale DECIMAL(10,2) NOT NULL );CREATE TABLE Checkin(codp DECIMAL(6) REFERENCES StoricoPrenotazioniON UPDATE CASCADEON DELETE NO ACTION,oraeffrit TIME NOT NULL,kmini DECIMAL(7,1) NOT NULL,dataeffrit DATE NOT NULL,PRIMARY KEY(codp) );CREATE TABLE Checkout(codp DECIMAL(6) REFERENCES StoricoPrenotazioniON UPDATE CASCADEON DELETE NO ACTION,danni BOOLEAN,kmfin DECIMAL(7,1) NOT NULL,ltcarb DECIMAL(3) NOT NULL,oraeffcons TIME NOT NULL,diffcosto DECIMAL (8,2) NOT NULL,dataeffcons DATE NOT NULL,PRIMARY KEY(codp) );

×