SlideShare uma empresa Scribd logo
1 de 34
1




       PROGETTO DATABASE 2009/2010




Realizzato da:Polidoro Alessio, Mazzotta Simone, Lucca Alessandro
2


INDICE

1. 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       ........................................................ 7

2. Analisi dei requisiti ........................................................................ 8
   2.1 Individuazione entità, attributi ............................................... 8
   2.2 Ristrutturazione specifiche               ............................................... 10

3. 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                .......................................   23

4. 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 ...............................................................          29

5. Traduzione SQL     ....................................................................... 30
    5.1 Creazione tabelle     ............................................................... 30
3


1 Tema progetto
1.1 Descrizione del dominio applicativo
Si vuole realizzare un’applicazione web per la gestione/prenotazione online di
una società internazionale di noleggio veicoli (d’ora in poi indicata con la sigla
SINV). Per far ciò l’applicazione deve prevedere tre diverse interfacce: una per
le gestione dei dati delle filiali e del personale da parte degli amministratori del
sistema,una per la gestione delle prenotazioni da parte del personale delle
filiali, effettuare prenotazioni online da parte dei clienti.
   Interfacciamento essere progettato tenendo presente che un membro del
personale della SINV può essere anche cliente e quindi fare prenotazioni
online. In questo caso si deve applicare uno sconto del 10% sul costo del
noleggio. I dati dei membri del personale sono inseriti direttamente dagli
amministratori del sistema, mentre per effettuare una prenotazione i clienti
devono registrarsi. I dati registrati per i membri del personale sono nome,
cognome, data di assunzione, username e password da utilizzare per il login
nell’applicazione, più lo storico delle filiali in cui hanno lavorato. Oltre a nome,
cognome, username e password,a un cliente è richiesto,in fase di
registrazione,anche l'indirizzo completo, un numero di telefono,l’indirizzo e-
mail, e le eventuali preferenze relative al tipo di veicolo. Durante la
registrazione un cliente può decidere se richiedere la carta della SINV. Una
carta può essere associata a un solo cliente, ed è caratterizzata da un numero
univoco e una data di attivazione. La carta permette di accumulare dei punti,
che potranno essere utilizzati per ottenere sconti sul prezzo dei noleggi. Il
numero di punti varia a seconda del tipo di veicolo e alla durata del noleggio. I
punti accumulati possono essere spesi per ottenere uno sconto sul costo di un
noleggio, ipotizzando un cambio di 10 punti per euro. I punti da associare al
tipo di veicolo e alla durata del noleggio, nonché il cambio punti/euro,potranno
essere 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


      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 veicoli
disponibili indicando la città e il periodo previsto per il noleggio. Il sistema deve
fornire al cliente, per ogni filiale, tutti i dati sopra indicati, a eccezione delle
informazioni sui membri del personale.
   Per effettuare una prenotazione,è necessario che l'utente si registri. Quindi,
una volta scelti filiale, veicolo, periodo e tipo di assicurazione e confermata la
prenotazione, il cliente dovrà fornire i dati relativi alla sua carta di credito.
Terminata la procedura, all’utente verrà visualizzata una pagina web che, una
volta stampata, avrà valore di ricevuta per la prenotazione effettuata. Tale
pagina dovrà contenere, oltre ad alcuni dati personali del cliente, codice e data
di 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
giorni 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 che
determinano il costo dei veicoli. Allo stesso modo, un cliente potrà effettuare
modiche alla prenotazione iniziale senza incorrere in una penale, a patto che
tali variazioni siano effettuate entro il termine dei due giorni. Le modiche di
una prenotazione potranno riguardare sia il tipo di veicolo che il periodo e, in
base a ciò, il costo del noleggio potrà subire un incremento/decremento.
   Un cliente può prenotare più di un veicolo per lo stesso periodo. Tuttavia il
sistema dovrà rifiutare prenotazioni di veicoli di filiali diverse, effettuate dallo
stesso cliente per le stesse date. Il principio è che il cliente che effettua la
prenotazione per i veicoli di una filiale deve essere uno dei clienti che
effettivamente utilizzeranno uno di tali veicoli per le date prenotate. Ne segue
che,per la stessa data, un dato cliente non può prenotare veicoli in due filiali
diverse.
   Per quanto riguarda la carta di credito, non è ovviamente prevista
l'implementazione di un sistema funzionante di pagamento online. Tuttavia è
necessario implementare controlli relativi alla validità della carta di credito(ad
es.,la carta di credito deve essere attiva e in grado di coprire il costo delle
prenotazioni,la data di scadenza non deve essere precedente il giorno,o i
giorni,per cui si è prenotato il veicolo, nome e cognome dell’intestatario
devono essere gli stessi della persona che effettua 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 di almeno alcuni dei clienti.
L’applicativo dovrà quindi interrogare tale database per verificare se accettare
o meno una prenotazione.
   Il cliente dovrà ritirare il veicolo presso la filiale indicata nella prenotazione,
5


ma potrà consegnarla in un’altra 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.
    Il personale deve poter visualizzare tutte le prenotazioni in corso, effettuare
eventualmente 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 il
personale deve registrare, per ogni prenotazione, il chilometraggio iniziale e
finale, eventuali ritardi nel ritiro o nella consegna,se il veicolo consegnato
presenta dei danni e se ha il serbatoio pieno(in tal caso,il cliente dovrà pagare
il costo del carburante necessario a riempire il serbatoio).
    Tutti i dati relativi alle filiali e ai relativi veicoli possono essere modificati
dagli amministratori del sistema. Modiche relative a filiali e veicoli possono
essere effettuate solo se non esistono al momento prenotazioni per tali
filiali/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 di
veicoli inferiore al 50%(vedi Esempio1).
Esempio 1 Supponiamo che, in data 13 febbraio, solo 8 veicoli su 20 di una
data 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. Supponiamo
ora chela successivaprenotazioneperil28febbraio sia effettuata dal cliente C2 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 28
febbraio. 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 l'attivazione degli sconti(cioè il rap-
porto tra veicoli liberi e veicoli prenotati, e il numero di giorni precedenti la
data di prenotazione), nonché la stessa percentuale di sconto, possono essere
modificati dagli amministratori. Inoltre, a discrezione degli amministratori, tali
sconti 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 eventuale
sconto sul prezzo del noleggio.
6


  1.2 Volume dati

La SINV consta di (almeno) 50 filiali, con un minimo di 20 veicoli ciascuno,
distribuiti su (almeno) 10 nazioni. In alcune delle città maggiori è necessario
prevedere 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 deve
registrare prenotazioni in tutte le filiali per almeno i sei mesi precedenti la data
di discussione del progetto. A tal scopo si consiglia di preparare uno script in
grado 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 previsti
Le operazioni da prevedere sulla base di dati sono le seguenti(il carico di lavoro
previsto è indicato tra parentesi):
1.3.1 Interfaccia amministrativa(Alessio Polidoro):
(a)   gestione   personale:   inserimento/modica/cancellazione             dati    del
personale(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


1.3.2 Interfaccia personale(Alessandro Lucca):
(a) gestione prenotazioni online: il personale dovrà poter visualizzare l’elenco
completo delle prenotazioni effettuate per ogni filiale e, per prenotazioni
passate,quali e quanti dei clienti si sono effettivamente presentati;
(b) gestione check-in: il personale deve registrare il ritiro del veicolo da parte
dei clienti, e eventuali modiche sulla prenotazione (come il tipo di veicolo/
assicurazione,periodo di noleggio, etc.);inoltre il personale deve registrare il
chilometraggio iniziale e la data e ora effettive di ritiro del veicolo;il sistema
deve quindi restituire una pagina contenente tutti i dati relativi al
noleggio(compreso il chilometraggio iniziale del veicolo); tale pagina dovrà
essere stampata in duplice copia e firmata dal cliente e dal membro del
personale incaricato del check-in;
(c) gestione check-out: il personale deve registrare la consegna del veicolo da
parte dei clienti e il pagamento effettivo(che può essere maggiore di quello
previsto a causa della richiesta di servizi aggiuntivi ad es., il tipo di
assicurazione scelta); inoltre il personale deve registrare il chilometraggio
finale, data e ora di consegna del veicolo, se il veicolo consegnato presenta dei
danni e se ha il serbatoio pieno(in tal caso, il cliente dovrà pagare il costo del
carburante necessario a riempire il serbatoio);il sistema deve quindi restituire
una 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


               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 requisiti

2.1 Individuazione entità e attributi
Entità
Attributi

Si vuole realizzare un’applicazione web per la gestione/prenotazione online di
una società internazionale di noleggio veicoli (d’ora in poi indicata con la sigla
SINV). Per far ciò l’applicazione deve prevedere tre diverse interfacce: una per
le gestione dei dati delle filiali e del personale da parte degli amministratori del
sistema,una per la gestione delle prenotazioni da parte del personale delle
filiali, effettuare prenotazioni online da parte dei clienti.
L’Interfacciamento deve essere progettato tenendo presente che un membro
del personale della SINV può essere anche cliente e quindi fare prenotazioni
online. In questo caso si deve applicare uno sconto del 10% sul costo del
noleggio. I dati dei membri del personale sono inseriti direttamente dagli
amministratori del sistema, mentre per effettuare una prenotazione i clienti
devono registrarsi. I dati registrati per i membri del personale sono nome,
cognome, data di assunzione, username e password da utilizzare per il login
nell’applicazione, più lo storico delle filiali in cui hanno lavorato. Oltre a nome,
cognome, username e password,a un cliente è richiesto,in fase di
registrazione,anche l'indirizzo completo, un numero di telefono,l’indirizzo e-
mail, e le eventuali preferenze relative al tipo di veicolo. Durante la
registrazione un cliente può decidere se richiedere la carta della SINV. Una
carta può essere associata a un solo cliente, ed è caratterizzata da un numero
univoco e una data di attivazione. La carta permette di accumulare dei punti,
che potranno essere utilizzati per ottenere sconti sul prezzo dei noleggi. Il
numero di punti varia a seconda del tipo di veicolo e alla durata del noleggio. I
punti accumulati possono essere spesi per ottenere uno sconto sul costo di un
noleggio, ipotizzando un cambio di 10 punti per euro. I punti da associare al
tipo di veicolo e alla durata del noleggio, nonché il cambio punti/euro,potranno
essere 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


      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 veicoli
disponibili indicando la città e il periodo previsto per il noleggio. Il sistema deve
fornire al cliente, per ogni filiale, tutti i dati sopra indicati, a eccezione delle
informazioni sui membri del personale.
Per effettuare una prenotazione,è necessario che l'utente si registri. Quindi,
una volta scelti filiale, veicolo, periodo e tipo di assicurazione e confermata la
prenotazione, il cliente dovrà fornire i dati relativi alla sua carta di credito.
Terminata la procedura, all’utente verrà visualizzata una pagina web che, una
volta stampata, avrà valore di ricevuta per la prenotazione effettuata. Tale
pagina dovrà contenere, oltre ad alcuni dati personali del cliente, codice e data
di 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 giorni
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 che determinano il
costo dei veicoli. Allo stesso modo, un cliente potrà effettuare modiche alla
prenotazione iniziale senza incorrere in una penale, a patto che tali variazioni
siano effettuate entro il termine dei due giorni. Le modiche di una prenotazione
potranno riguardare sia il tipo di veicolo che il periodo e, in base a ciò, il costo
del noleggio potrà subire un incremento/decremento.
Un cliente può prenotare più di un veicolo per lo stesso periodo. Tuttavia il
sistema dovrà rifiutare prenotazioni di veicoli di filiali diverse, effettuate dallo
stesso cliente per le stesse date. Il principio è che il cliente che effettua la
prenotazione per i veicoli di una filiale deve essere uno dei clienti che
effettivamente utilizzeranno uno di tali veicoli per le date prenotate. Ne segue
che,per la stessa data, un dato cliente non può prenotare veicoli in due filiali
diverse.
10


Per quanto riguarda la carta di credito, non è ovviamente prevista
l'implementazione di un sistema funzionante di pagamento online. Tuttavia è
necessario implementare controlli relativi alla validità della carta di credito(ad
es.,la carta di credito deve essere attiva e in grado di coprire il costo delle
prenotazioni,la data di scadenza non deve essere precedente il giorno,o i
giorni,per cui si è prenotato il veicolo, nome e cognome dell’intestatario
devono essere gli stessi della persona che effettua 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 di almeno alcuni dei clienti.
L’applicativo dovrà quindi interrogare tale database per verificare se accettare
o meno una prenotazione.
Il cliente dovrà ritirare il veicolo presso la filiale indicata nella prenotazione, ma
potrà consegnarla in un’altra 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.
Il personale deve poter visualizzare tutte le prenotazioni in corso, effettuare
eventualmente 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 il
personale deve registrare, per ogni prenotazione, il chilometraggio iniziale e
finale, eventuali ritardi nel ritiro o nella consegna,se il veicolo consegnato
presenta dei danni e se ha il serbatoio pieno(in tal caso,il cliente dovrà pagare
il costo del carburante necessario a riempire il serbatoio).
    Tutti i dati relativi alle filiali e ai relativi veicoli possono essere modificati
dagli amministratori del sistema. Modiche relative a filiali e veicoli possono
essere effettuate solo se non esistono al momento prenotazioni per tali
filiali/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 di
veicoli inferiore al 50%(vedi Esempio1).
2.2 Ristrutturazione delle specifiche
Si vuole realizzare un’applicazione web per la gestione/prenotazione online di
una società internazionale di noleggio veicoli (d’ora in poi indicata con la sigla
SINV). Per far ciò l’applicazione deve prevedere tre diverse interfacce: una per
la gestione dei dati delle filiali e del personale da parte degli amministratori del
sistema, una per la gestione delle prenotazioni da parte del personale delle
filiali, e una per effettuare prenotazioni online da parte dei clienti.
Le interfacce devono essere progettate tenendo presente che un personale
della SINV può essere anche cliente e quindi fare prenotazioni online (quindi
iscriversi e autenticarsi sul sito come cliente). In questo caso si deve applicare
uno sconto del 10% sul costo del noleggio. I dati del personale sono inseriti
direttamente dagli amministratori che dovranno loggarsi per poter inserire e
modificare il personale , mentre per effettuare una prenotazione i clienti
devono registrarsi sul sito. I dati registrati per il personale sono nome,
cognome, data di assunzione, username e password da utilizzare per il login
nell’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


Oltre a nome, cognome, user e password, a un cliente è richiesto, in fase di
registrazione, anche l’indirizzo con via, nazione, provincia, città, numero civico,
un numero di telefono,l’indirizzo email, e le eventuali preferenze relative al tipo
di veicolo. Durante la registrazione un cliente può decidere se richiedere la
carta della SINV. Una carta può essere associata a un solo cliente, ed è carat-
terizzata da un codice, una data di attivazione. La carta permette di
accumulare dei punti, che potranno essere utilizzati per ottenere sconti sul
prezzo dei noleggi. Il numero di punti varia a seconda del tipo di veicolo e alla
durata del noleggio. I punti accumulati possono essere spesi per ottenere uno
sconto sul costo di un noleggio, ipotizzando un cambio di 10 punti per euro. I
punti da associare al tipo di veicolo e alla durata del noleggio, nonché il cambio
punti/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à, punti
giornalieri, 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 tabella
con 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 veicoli
disponibili indicando la città , la data di ritiro e consegna del noleggio. Il
sistema deve fornire al cliente, per ogni filiale, tutti i dati sopra indicati, a
eccezione 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 una
pagina web che, una volta stampata, avrà valore di ricevuta per la
prenotazione effettuata. Tale pagina dovrà contenere, oltre ad alcuni dati
personali del cliente, codice e data di 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 giorni
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 che determinano il
12


costo dei veicoli. Allo stesso modo, un cliente potrà effettuare modifiche alla
prenotazione iniziale senza incorrere in una penale, a patto che tali variazioni
siano effettuate entro il termine dei due giorni. Le modifiche di una
prenotazione potranno riguardare sia il tipo di veicolo che il periodo e, in base
a ciò, il costo del noleggio potrà subire un incremento/ decremento.
Un cliente può prenotare solo un veicolo per lo stesso periodo(Per la stessa
data iniziale e finale,specificate con giorno,mese,anno). Tuttavia il sistema
dovrà rifiutare prenotazioni di veicoli effettuate dallo stesso cliente per le
stesse date(Per le stesse date iniziali e date finali,specificate con
giorno,mese,anno). Il principio è che il cliente che effettua la prenotazione per i
veicoli di una filiale deve essere uno dei clienti che effettivamente utilizzeranno
uno 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 non
può 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 di
credito(Attributi codice,nome,cognome,scadenza,saldo)(ad es.,la carta di
credito deve essere attiva(Attributo scadenza) e in grado di coprire il costo
delle prenotazioni(Attributo saldo),la data di scadenza(giorno,mese,anno) non
deve essere precedente il giorno,o i giorni,per cui si è prenotato il veicolo,
nome e cognome dell’intestatario devono essere gli stessi del Cliente che
effettua 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 di
almeno alcuni dei clienti. L’applicativo dovrà quindi interrogare tale database
per verificare se accettare o meno una prenotazione.
Il cliente dovrà ritirare il veicolo presso la filiale indicata nella prenotazione, ma
potrà      consegnarla        in     un’altra     filiale(L’attributo   filialecons  in
STORICOPRENOTAZIONI 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 filiale
in cui lavora, effettuare eventualmente modifiche 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 il personale deve registrare, per ogni prenotazione, il
chilometraggio iniziale e finale, eventuali ritardi nel ritiro o nella consegna,se il
veicolo consegnato presenta dei danni e se ha il serbatoio pieno(Gestito
tramite l’attributo Ltcarb in checkout che indica i litri rabboccati dal personale,
se tale attributo non è 0, verrà moltiplicato per ltcarburante e si somma al
costo del noleggio a carico del cliente).
Tutti i dati relativi alle filiali e ai relativi veicoli possono essere modificati dagli
amministratori del sistema. Modifiche relative a filiali e veicoli possono essere
effettuate solo se non esistono al momento prenotazioni per tali filiali/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 di veicoli
13


inferiore al 50%(Gestito tramite dataattsconto, rapporto%veicoli in
AMMINISTRAZIONE).
“Esempio 1 Supponiamo che, in data 13 febbraio, solo 8 veicoli su 20 di una
data 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. Supponiamo
ora chela successiva prenotazione per il 28 febbraio sia effettuata dal cliente
C2 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 28
febbraio. 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 rapporto
tra veicoli liberi e veicoli prenotati, e il numero di giorni precedenti la data di
prenotazione), nonché la stessa percentuale di sconto, possono essere
modificati dagli amministratori(scontocli,dataattsconto,rapporto%veicoli in
AMMINISTRAZIONE). Inoltre, a discrezione degli amministratori, tali sconti
possono essere applicati a tutti i clienti .Lo sconto del 10% del personale non
può essere accumulato a un eventuale sconto sul prezzo del noleggio.


3 Progettazione concettuale
3.1 Schema scheletro




Inizialmente,leggendo le specifiche, abbiamo prodotto il seguente schema
scheletro, indicante l’architettura di base della nostra base di dati.

Di seguito descriviamo singolarmente i vari blocchi fino ad ottenere il modello
E-R definitivo.
14


3.2 Sotto schema UTENTE




Abbiamo optato per una gerarchia di generalizzazione totale-condivisa, poiché
un membro del personale può essere presente anche nell’entità cliente nel
momento 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 eventuale
sconto futuro. Nel dettaglio, Pref è una stringa indicante le preferenze che un
cliente 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 al
costo totale del noleggio determina l’aumento di prezzo;
-CambioPnt: indica il rapporto punti/euro riguardo all’acquisizione e all’utilizzo
dei punti contenuti nella carta SINV;
-DataAttSconto: indica il periodo nel quale la promozione(riguardante lo sconto
sul costo del noleggio) è attiva;
-Rapporto%Veicoli: rapporto tra i veicoli disponibili e prenotati relativo
all’attributo sopra descritto.
15


-LtCarburante: valore del singolo litro di carburante che la filiale utilizzerà per
calcolare l’eventuale costo aggiuntivo nel caso in cui la vettura restituita non
abbia il serbatoio pieno.

3.4 Integrazione UTENTE con FILIALE




Per gestire l’elenco dei membri del personale che hanno lavorato e lavorano in
una filiale, creiamo l’associazione STORICO LAVORO che conterrà la data
dell’assunzione (data-ini),la data di fine contratto( data-fin) che sarà NULL se il
soggetto lavora attualmente nella filiale e inoltre se è responsabile di una
determinata filiale(Responsabile). L’attributo Admin in PERSONALE indica
invece 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


che incrementeranno i punti della carta SINV.
-Costo: costo del danno prodotto che andrà a gravare sull’attributo DiffCosto
dell’entità CHECK-OUT solo se il tipo dell’assicurazione scelta non copre i danni
al veicolo.


3.6 Integrazione VEICOLO con FILIALE con UTENTE




Integrando il sotto schema VEICOLO con FILIALE l’associazione che ne deriva
sarà STORICO VEICOLI che gestirà il possesso dei veicoli in un dato periodo tra
le varie filiali, avrà Data-ini e Data-fin come attributi che indicheranno l’inizio e
la fine del periodo in cui il veicolo è stato in possesso di una filiale.
17


3.7 Sotto schema STORICO PRENOTAZIONI




L’associazione prenota presente nello schema scheletro viene gestita come un
entità per mantenere informazioni sulle varie prenotazioni nel corso del tempo.

Nel dettaglio vediamo:
-Costo: conterrà il costo complessivo da versare/versato appena effettuata la
prenotazione.
-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 la
prenotazione e verrà utilizzato per controllare la validità, proprietà e il saldo
della carta di credito.
Il cliente deve scegliere una poliza assicurativa per ogni noleggio,
caratterizzata da una descrizione, un prezzo, un tipo, un codice ed un
massimale.
-Cod: sarà un codice numerico che si riferirà alla classe di appartenenza
dell’assicurazione scelta.
-Massimale: sarà la massima cifra che verrà coperta dall’assicurazione in caso
di danni a terzi.
Abbiamo gestito il ritiro e la consegna del veicolo con le entità CHECKIN e
CHECKOUT .
Vediamo nel dettaglio:
-OraEffRit/OraEffCons/DataEffRit/DataEffCons: indicheranno ora e data effettivi
di ritiro e consegna poiché ora e data possono non coincidere con quelle
indicate nella prenotazione e, nel caso, dovrà essere applicata una penale.
-LtCarb: indicherà i litri di carburante rabboccati dal personale una volta
consegnato il veicolo, verrà utilizzato per moltiplicarlo con Ltcarburante
(presente nell’entità AMMINISTRAZIONE) per determinare il prezzo che il
18


cliente 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 chiamata
EFFETTUA contenente Data-Pren, che indica la data di prenotazione, e
l’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




3.10 VINCOLI
V1:Lo stesso cliente nelle stesse date non può prenotare veicoli di filiali
diverse.

V2:Non si possono fare modifiche relative a filiali e veicoli se esistono delle
prenotazioni su queste filiali/veicoli.



3.11 GERARCHIE DI GENERALIZZAZIONE:


  ENTITA’                    ENTITA’ FIGLIE                    TIPOLOGIA
   PADRE
  UTENTE                   PERSONALE,CLIENTE                 TOTALE/CONDIVI
                                                                   SA
MANUTENZIO      INCIDENTE,TAGLIANDO,REVISIONE,RIPAR          TOTALE/ESCLUSI
    NE                        AZIONE                               VA


3.12 DIZIONARIO DELLE ENTITA’


      NOME          DESCRIZIO             ATTRIBUTI            IDENTIFICAT
                         NE                                        ORI
UTENTE              Utenti della         USER                 USER
                    SINV                 PW
                                         NOME
                                         COGNOME
                                         INDIRIZZO
CLIENTE             Cliente che si       E-MAIL               Stessi di
                    registra nel         TEL                  UTENTE
                    sistema della        PREF
                    SINV
PERSONALE           Personale            DATAASS              Stessi di
                    della SINV           ADMIN                UTENTE
CARTA               Carta                CODC                 CODC
                    punti(se             DATAATT
                    richiesto dal        PUNTI
                    cliente)
STORICO             Storico              CODP                 CODP
PRENOTAZIONI        Prenotazioni         IDCC
                    in corso e           DATARIT
                    concluse             DATACONS
20


               nella SINV      FILIALECONS
                               COSTO
                               ORARIT
                               ORACONS
                               FILIALERIT
                               DATAPREN
                               COSTOPARZ
ASSICURAZIONE Assicurazion     TIPO             COD
              e scelta dal     DESCRIZIONE
              cliente al       PREZZO
              momento          COD
              della            MASSIMALE
              prenotazione
CHECK-IN      Controllo al     ORAEFFRIT        Stessi di PRE
              momento del      KM-INI           NOL
              ritiro del       DATAEFFRIT
              veicolo
CHECK-OUT     Controllo al     DIFFCOSTO        Stessi di PRE
              momento          DATAEFFCONS      NOL
              della            ORAEFFCONS
              consegna         LTCARB
                               KMFIN
                               DANNI
AMMINISTRAZI   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
                               PENALERIT
FILIALE        Filiali della   CODF             CODF
               SINV            NOME
                               DATAIST
                               GGCHIUSURA
                               ORARIOAPE
                               ORARIOCHIU
                               E-MAIL
                               SITO
                               INDIRIZZO
VEICOLO        Veicoli della   TARGA            TARGA
               SINV            DISP
                               LTSERBATOIO
                               ANNOPROD
21


                                ANNOACQUISTO
                                MODELLO
                                MOTORE
                                TIPO
                                MARCA
                                PUNTIGG
                                PREZZOGG
                                IMMAGINI
                                CILINDRATA
                                KMINI
                                INFOVEICOLO
MANUTENZIONE   Manutenzion      IDM            IDM
               e effettuata     DATA-INI
               sui veicoli      DATA-FIN
               della SINV       DESCRIZIONE
                                TIPO
INCIDENTE      Manutenzion      COSTO          Stessi di
               e per            COPERTURAASS   manutenzione
               incidente
TAGLIANDO      Manutenzion                     Stessi di
               e per                           manutenzione
               tagliando
REVISIONE      Manutenzion                     Stessi di
               e per                           manutenzione
               revisione
RIPARAZIONE    Manutenzion                     Stessi di
               e per                           manutenzione
               riparazione
CARTA          Dati             NOME           IDCC
CREDITO        riguardanti il   COGNOME
               proprietario     TEL
                                SALDO
                                SCADENZA
                                IDCC
                                PIN
22


3.13 DIZIONARIO DELLE ASSOCIAZIONI


  NOME     DESCRIZIONE        ATTRIBUTI      ENTITA’ COLLEGATE
POSSIEDE   Possibile                            CARTA
           possesso di                          CLIENTE
           una carta da
           parte di un
           cliente
EFFETTUA   Prenotazione        DATA-PREN        CLIENTE
           effettuate                           PRENOL
HA         Possibili                            ASSICURAZIONE
           assicurazioni su                     PRE NOL
           prenotazioni
SUBISCE1   Controllo                            PRE NOL
           (check-in) sul                       CHECK-IN
           ritiro di un
           veicolo
SUBISCE2   Controllo                            PRE NOL
           (check-out)                          CHECK-OUT
           sulla consegna
           di un veicolo
STORICO    Storico             DATA-INI         PERSONALE
LAVORO     personale delle     DATA-FIN         FILIALI
           filiali             RESPONSABIL
                               E
PRE VE     prenotazione                         PRE NOL
           su un veicolo                        VEICOLO
GESTISCE   Gestione                             AMMINISTRAZIONE
           amministrazion                       FILIALE
           e filiale
STORICO    Storico veicoli     DATA-INI         FILIALE
VEICOLI    delle filiali       DATA-FIN         VEICOLO
SUBISCE3   Possibile                            VEICOLO
           manutenzione                         MANUTENZIONE
           su un veicolo
23


3.14 Domini Attributi

Entità Carta:
CODC : Int
DATAATT: Date
PUNTI : Int

Entità Cliente:
E-MAIL : String
TEL : String
PREF : String

Entità Utente:
USER : String
PW : String
INDIRIZZO : String x String x String x String x Int
NOME : String
COGNOME : String

Entità Personale:
DATASS : Date
ADMIN:Boolean

Associazione Effettua:
DATA-PREN : Date

Entità Assicurazione:
PREZZO : Real
TIPO : String
DESCRIZIONE : String
COD : Int
MASSIMALE: Real

Entità Storico Prenotazioni:
CODP : Int
IDCC : String
DATARIT : Date
DATACONS : Date
FILIALECONS : String
COSTO : Real
ORARIT : Time
ORACONS : Time
FILIALERIT:String
COSTOPARZ:Real
DATAPREN:Date
24


Entità Check In:
ORAEFFRIT : Time
KM-INI : Int
DATAEFFRIT : Date

Entità Check out:
DIFFCOSTO : Real
DATAEFFCONS : Date
ORAEFFCONS : Time
LTCARB : Real
KMFIN : Int
DANNI : Boolean


Associazione STORICO LAVORO:
DATA-INI : Date
DATA-FIN : Date
RESPONSABILE:Boolean

Entità AMMINISTRAZIONE:
DATA-FIN : Date
DATA-INI : Date
PENALEGG : Real
SCONTODIP : Real
SCONTOCLI : Real
CAMBIOPNT : Int
DATAATTSCONTO : Date
RAPPORTO%VEICOLI : Real
LTCARBURANTE : Real
PENALECONS : Real
PENALERIT : Real

Entità FILIALE:
CODF : Int
NOME : String
DATAIST : Date
GGCHIUSURA : String
ORARIOAPE : Time
ORARIOCHIU :Time
E-MAIL : String
SITO : String
INDIRIZZO : String x String x String x String x Int


Associazione STORICO VEICOLI:
DATA-INI : Date
DATA-FIN : Date
25


Entità VEICOLO:

TARGA : String
DISP : Boolean
LTSERBATOIO : Real
ANNOPROD : Date
ANNOACQUISTO : Date
MODELLO : String
MOTORE : String
TIPO : String
MARCA : String
PUNTIGG : Int
PREZZOGG : Real
IMMAGINI:String
INFOVEICOLO:String
CILINDRATA:Real
KMINI:Int

Entità MANUTENZIONE:

IDM : Int
DATA-INI : Date
DATA-FIN : Date
DESCRIZIONE : String
TIPO:String



Entità INCIDENTE:

COSTO : Real
COPERTURAASS:Int

Entità CARTACREDITO:

NOME:String
COGNOME:String
IDCC:Int
SALDO:Real
SCADENZA:Date
PIN:String
26


4-PROGETTAZIONE LOGICA
FASE DI RISTRUTTURAZIONE

4.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


4.4 SCHEMA E-R RISTRUTTURATO
28


4.5 SCHEMA LOGICO SINV


Cliente ( 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


4.6 NORMALIZZAZIONE SCHEMA RELAZIONALE

Obiettivo: verificare che lo schema logico ottenuto sia normalizzato in forma
normale 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 superchiave
per R.

- Definizione Terza Forma Normale: Una relazione è in 3FN se per ogni
dipendenza funzionale X->Y è vera una delle seguenti condizioni:
     - X è una superchiave della relazione
     - Y è membro di una chiave della relazione


Risultato Finale:

Lo schema relazionale ottenuto è normalizzato in 3NF(Terza Forma Normale)
poiché in alcune relazioni abbiamo una chiave primaria ottenuta utilizzando
due attributi della stessa.

Abbiamo preferito effettuare questa scelta di normalizzazione, invece di
utilizzare identificativi numerici per ogni tupla delle relazioni, per facilitare
operazioni future sulle stesse.


4.7 SCELTE PROGETTUALI

-Per CC ( Carta Credito) creiamo un altro DB chiamato “banca fittizia” dove
registriamo per ogni utene la propria carta di credito;

-Per la disponibilità dei veicoli in fase prenotazione usiamo una query sia su
STORICO PRENOTAZIONI che su MANUTENZIONE (controllo che il veicolo non
sia impegnato in un altro noleggio o in manutenzione);

-Nella tabella MANUTENZIONE il “tipo” indica se si tratta di revisione, tagliando
o 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 di
un 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


-Se un membro del personale si registra come cliente mantiene lo stesso
Username e Password;

-La data di inizio della manutenzione in caso di incidente dovrà essere uguale
alla data di consegna del veicolo noleggiato;

-La gestione dei vincoli V1 e V2 specificati sopra è stata implementata
mediante l’applicativo (controlli a livello php);

-Lo sconto del 10% viene applicato al cliente solo in fase di prenotazione e non
durante modifiche su richiesta;

-I punti vengono dati al cliente in solo in fase di pagamento durante la
prenotazione e non durante le modifiche successive;

-Nella realizzazione del dominio degli attributi, utilizziamo domini generici
consoni con il modello ER, ma in fase di create table i domini saranno consoni
al linguaggio sql;

-Se l’utente sceglie una filiale consegna diversa dalla filiale ritiro selezionata, il
veicolo sarà poi riportato alla filiale intestataria;

-Nella parte del personale le seguenti query vengono visualizzate per la filiale
di appartenenza del membro del personale:
Il personale dovrà poter visualizzare l’elenco completo delle prenotazioni
effettuate per ogni filiale e, per prenotazioni passate,quali e quanti dei clienti si
sono effettivamente presentati.



5 TRADUZIONE IN SQL
5.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


CREATE TABLE Cliente(
user VARCHAR(40) REFERENCES Utente
ON UPDATE CASCADE
ON 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 Utente
ON UPDATE CASCADE
ON DELETE NO ACTION,
dataass DATE NOT NULL,
admin BOOLEAN,
PRIMARY KEY(user)
);

CREATE TABLE Storicolavoro(
user VARCHAR(40) REFERENCES Personale
ON UPDATE CASCADE
ON DELETE CASCADE,
codf DECIMAL(8) REFERENCES Filiale
ON UPDATE CASCADE
ON 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


orariochiu 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 filiale
ON DELETE NO ACTION
ON UPDATE CASCADE
);


CREATE TABLE Storicoveicoli(
Codf DECIMAL(8) REFERENCES filiale
ON UPDATE CASCADE
ON DELETE CASCADE,
targa VARCHAR(10) REFERENCES veicolo
ON UPDATE CASCADE
ON 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


motore 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 NULL
targa VARCHAR(10) REFERENCES veicolo
ON DELETE NO ACTION
ON UPDATE CASCADE
);

CREATE TABLE Incidente(
idm DECIMAL(8) REFERENCES Manutenzione
ON UPDATE CASCADE
ON 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 Cliente
ON UPDATE CASCADE
ON DELETE NO ACTION,
cod VARCHAR(6) REFERENCES Assicurazione
ON UPDATE CASCADE
ON DELETE NO ACTION,
34


Targa VARCHAR(10) REFERENCES Veicolo
ON UPDATE NO ACTION
ON 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 StoricoPrenotazioni
ON UPDATE CASCADE
ON 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 StoricoPrenotazioni
ON UPDATE CASCADE
ON 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)
 );

Mais conteúdo relacionado

Mais procurados

Circolare 48 liti pendenti
Circolare 48 liti pendentiCircolare 48 liti pendenti
Circolare 48 liti pendentiAntonio Palmieri
 
Programa operativo basilicata
Programa operativo basilicataPrograma operativo basilicata
Programa operativo basilicataxinxinzuo
 
Pgt agrate brianza norme gov
Pgt agrate brianza norme gov Pgt agrate brianza norme gov
Pgt agrate brianza norme gov Fabio Saldini
 
Dl crescita e sviluppo x cdm 03 10-2012
Dl crescita e sviluppo x cdm 03 10-2012Dl crescita e sviluppo x cdm 03 10-2012
Dl crescita e sviluppo x cdm 03 10-2012Unapass
 
E-book "La nuova Trasparenza nelle Aziende Speciali" - Cosa cambia con la "Ri...
E-book "La nuova Trasparenza nelle Aziende Speciali" - Cosa cambia con la "Ri...E-book "La nuova Trasparenza nelle Aziende Speciali" - Cosa cambia con la "Ri...
E-book "La nuova Trasparenza nelle Aziende Speciali" - Cosa cambia con la "Ri...Luca Bisio
 
Master plan le città del golfo e le isole pontine
Master plan le città del golfo e le isole pontineMaster plan le città del golfo e le isole pontine
Master plan le città del golfo e le isole pontineLuigi Tecno
 
Voluntary Disclosure: le novità del Waiver!
Voluntary Disclosure: le novità del Waiver!Voluntary Disclosure: le novità del Waiver!
Voluntary Disclosure: le novità del Waiver!Vincenzo Renne
 

Mais procurados (7)

Circolare 48 liti pendenti
Circolare 48 liti pendentiCircolare 48 liti pendenti
Circolare 48 liti pendenti
 
Programa operativo basilicata
Programa operativo basilicataPrograma operativo basilicata
Programa operativo basilicata
 
Pgt agrate brianza norme gov
Pgt agrate brianza norme gov Pgt agrate brianza norme gov
Pgt agrate brianza norme gov
 
Dl crescita e sviluppo x cdm 03 10-2012
Dl crescita e sviluppo x cdm 03 10-2012Dl crescita e sviluppo x cdm 03 10-2012
Dl crescita e sviluppo x cdm 03 10-2012
 
E-book "La nuova Trasparenza nelle Aziende Speciali" - Cosa cambia con la "Ri...
E-book "La nuova Trasparenza nelle Aziende Speciali" - Cosa cambia con la "Ri...E-book "La nuova Trasparenza nelle Aziende Speciali" - Cosa cambia con la "Ri...
E-book "La nuova Trasparenza nelle Aziende Speciali" - Cosa cambia con la "Ri...
 
Master plan le città del golfo e le isole pontine
Master plan le città del golfo e le isole pontineMaster plan le città del golfo e le isole pontine
Master plan le città del golfo e le isole pontine
 
Voluntary Disclosure: le novità del Waiver!
Voluntary Disclosure: le novità del Waiver!Voluntary Disclosure: le novità del Waiver!
Voluntary Disclosure: le novità del Waiver!
 

Destaque

NIS client installation
NIS client installationNIS client installation
NIS client installationDima Gomaa
 
El dragón de las pinturas
El dragón de las pinturasEl dragón de las pinturas
El dragón de las pinturasinfvilla
 
L'hiver cguoo
L'hiver cguooL'hiver cguoo
L'hiver cguooCalSayers
 
Modelli per la descrizione di processi concorrenti def
Modelli per la descrizione di processi concorrenti defModelli per la descrizione di processi concorrenti def
Modelli per la descrizione di processi concorrenti defSimone Mazzotta
 
презентация научно методической работы
презентация научно методической работыпрезентация научно методической работы
презентация научно методической работыminnemullin
 
NIS server installation
NIS server installationNIS server installation
NIS server installationDima Gomaa
 
Tomcat configuration
Tomcat configurationTomcat configuration
Tomcat configurationDima Gomaa
 
Unix fundamentals
Unix fundamentalsUnix fundamentals
Unix fundamentalsDima Gomaa
 
Linux apache installation
Linux apache installationLinux apache installation
Linux apache installationDima Gomaa
 
Desnutrición energetico-proteica
Desnutrición energetico-proteicaDesnutrición energetico-proteica
Desnutrición energetico-proteicaAntonio de Pizarro
 
Travail de Fin d'Etudes 2014 : L'intégration de la visioconférence pour rendr...
Travail de Fin d'Etudes 2014 : L'intégration de la visioconférence pour rendr...Travail de Fin d'Etudes 2014 : L'intégration de la visioconférence pour rendr...
Travail de Fin d'Etudes 2014 : L'intégration de la visioconférence pour rendr...Alessio Fancello
 

Destaque (20)

Ait Talk
Ait TalkAit Talk
Ait Talk
 
Desnutrición aguda
Desnutrición agudaDesnutrición aguda
Desnutrición aguda
 
NIS client installation
NIS client installationNIS client installation
NIS client installation
 
Power point rethinking assessment
Power point   rethinking assessmentPower point   rethinking assessment
Power point rethinking assessment
 
Manuale utente.docx
Manuale utente.docxManuale utente.docx
Manuale utente.docx
 
profitti di Google
profitti di Googleprofitti di Google
profitti di Google
 
El dragón de las pinturas
El dragón de las pinturasEl dragón de las pinturas
El dragón de las pinturas
 
L'hiver cguoo
L'hiver cguooL'hiver cguoo
L'hiver cguoo
 
Modelli per la descrizione di processi concorrenti def
Modelli per la descrizione di processi concorrenti defModelli per la descrizione di processi concorrenti def
Modelli per la descrizione di processi concorrenti def
 
презентация научно методической работы
презентация научно методической работыпрезентация научно методической работы
презентация научно методической работы
 
Desnutricion ii-resumen
Desnutricion ii-resumenDesnutricion ii-resumen
Desnutricion ii-resumen
 
Standardweb
StandardwebStandardweb
Standardweb
 
NIS server installation
NIS server installationNIS server installation
NIS server installation
 
Tomcat configuration
Tomcat configurationTomcat configuration
Tomcat configuration
 
Unix fundamentals
Unix fundamentalsUnix fundamentals
Unix fundamentals
 
Linux apache installation
Linux apache installationLinux apache installation
Linux apache installation
 
Desnutrición energetico-proteica
Desnutrición energetico-proteicaDesnutrición energetico-proteica
Desnutrición energetico-proteica
 
Buoyage
BuoyageBuoyage
Buoyage
 
Eugenics
EugenicsEugenics
Eugenics
 
Travail de Fin d'Etudes 2014 : L'intégration de la visioconférence pour rendr...
Travail de Fin d'Etudes 2014 : L'intégration de la visioconférence pour rendr...Travail de Fin d'Etudes 2014 : L'intégration de la visioconférence pour rendr...
Travail de Fin d'Etudes 2014 : L'intégration de la visioconférence pour rendr...
 

Semelhante a Documentazione sinv

Documentazione sinv definitiva
Documentazione sinv definitivaDocumentazione sinv definitiva
Documentazione sinv definitivaAlessio Polidoro
 
CashManagement versione 1.0 - Manuale d’uso.pdf
CashManagement versione 1.0 - Manuale d’uso.pdfCashManagement versione 1.0 - Manuale d’uso.pdf
CashManagement versione 1.0 - Manuale d’uso.pdfAndrea Mecchia
 
Veicolied incidenti2012
Veicolied incidenti2012Veicolied incidenti2012
Veicolied incidenti2012Giorgio Marcon
 
Relazione progetto Ottimobility PMI padovane
Relazione progetto Ottimobility PMI padovaneRelazione progetto Ottimobility PMI padovane
Relazione progetto Ottimobility PMI padovaneConfservizi Veneto
 
SIAE - Istruzioni per recupero crediti autorali (2013)
SIAE - Istruzioni per recupero crediti autorali (2013)SIAE - Istruzioni per recupero crediti autorali (2013)
SIAE - Istruzioni per recupero crediti autorali (2013)Simone Aliprandi
 
Open data e acquisti della pubblica amministrazione: analisi delle università...
Open data e acquisti della pubblica amministrazione: analisi delle università...Open data e acquisti della pubblica amministrazione: analisi delle università...
Open data e acquisti della pubblica amministrazione: analisi delle università...Francesco Cavazzana
 
Modulo di adesione incontri affari Hong Kong e Corea del Sud GIUGNO 2011
Modulo di adesione incontri affari Hong Kong e Corea del Sud GIUGNO 2011Modulo di adesione incontri affari Hong Kong e Corea del Sud GIUGNO 2011
Modulo di adesione incontri affari Hong Kong e Corea del Sud GIUGNO 2011Confservizi Veneto
 
I. Fogliata - Il Budget di tesoreria - 30 novembre 2021
I. Fogliata - Il Budget di tesoreria - 30 novembre 2021I. Fogliata - Il Budget di tesoreria - 30 novembre 2021
I. Fogliata - Il Budget di tesoreria - 30 novembre 2021Camera di Commercio di Pisa
 
Executive mobile-banking-2012
Executive mobile-banking-2012Executive mobile-banking-2012
Executive mobile-banking-2012fosti4
 
I processi di sviluppo software: l'evoluzione agile ed il DevOps
I processi di sviluppo software: l'evoluzione agile ed il DevOpsI processi di sviluppo software: l'evoluzione agile ed il DevOps
I processi di sviluppo software: l'evoluzione agile ed il DevOpsGiulio Destri
 
Vert2007 piattaforma 2007_2010
Vert2007 piattaforma 2007_2010Vert2007 piattaforma 2007_2010
Vert2007 piattaforma 2007_2010Fiom GD
 
SARDCOIN - Tecnologie blockchain a supporto del turismo in Sardegna
SARDCOIN - Tecnologie blockchain a supporto del turismo in SardegnaSARDCOIN - Tecnologie blockchain a supporto del turismo in Sardegna
SARDCOIN - Tecnologie blockchain a supporto del turismo in SardegnaSardegna Ricerche
 
Giustizia ritardata è giustizia negata
Giustizia ritardata è giustizia negataGiustizia ritardata è giustizia negata
Giustizia ritardata è giustizia negataLorenzo Casale
 
Progetto Solar System
Progetto Solar SystemProgetto Solar System
Progetto Solar Systemdinosolari
 
PROTOCOLLO OPERATIVO PER LA CARATTERIZZAZIONE DEI SITI AI SENSI DEL D. LGS. 1...
PROTOCOLLO OPERATIVO PER LA CARATTERIZZAZIONE DEI SITI AI SENSI DEL D. LGS. 1...PROTOCOLLO OPERATIVO PER LA CARATTERIZZAZIONE DEI SITI AI SENSI DEL D. LGS. 1...
PROTOCOLLO OPERATIVO PER LA CARATTERIZZAZIONE DEI SITI AI SENSI DEL D. LGS. 1...eAmbiente
 
Meccanico auto economico: 5 fondamentali domande per valutare una rete di aut...
Meccanico auto economico: 5 fondamentali domande per valutare una rete di aut...Meccanico auto economico: 5 fondamentali domande per valutare una rete di aut...
Meccanico auto economico: 5 fondamentali domande per valutare una rete di aut...Autofficina Sicura
 

Semelhante a Documentazione sinv (20)

Documentazione sinv definitiva
Documentazione sinv definitivaDocumentazione sinv definitiva
Documentazione sinv definitiva
 
CashManagement versione 1.0 - Manuale d’uso.pdf
CashManagement versione 1.0 - Manuale d’uso.pdfCashManagement versione 1.0 - Manuale d’uso.pdf
CashManagement versione 1.0 - Manuale d’uso.pdf
 
Veicolied incidenti2012
Veicolied incidenti2012Veicolied incidenti2012
Veicolied incidenti2012
 
Relazione progetto Ottimobility PMI padovane
Relazione progetto Ottimobility PMI padovaneRelazione progetto Ottimobility PMI padovane
Relazione progetto Ottimobility PMI padovane
 
Progetto Vinix Mobile 2
Progetto Vinix Mobile 2Progetto Vinix Mobile 2
Progetto Vinix Mobile 2
 
SIAE - Istruzioni per recupero crediti autorali (2013)
SIAE - Istruzioni per recupero crediti autorali (2013)SIAE - Istruzioni per recupero crediti autorali (2013)
SIAE - Istruzioni per recupero crediti autorali (2013)
 
Bilancio sociale
Bilancio socialeBilancio sociale
Bilancio sociale
 
Open data e acquisti della pubblica amministrazione: analisi delle università...
Open data e acquisti della pubblica amministrazione: analisi delle università...Open data e acquisti della pubblica amministrazione: analisi delle università...
Open data e acquisti della pubblica amministrazione: analisi delle università...
 
Compas Project
Compas ProjectCompas Project
Compas Project
 
Modulo di adesione incontri affari Hong Kong e Corea del Sud GIUGNO 2011
Modulo di adesione incontri affari Hong Kong e Corea del Sud GIUGNO 2011Modulo di adesione incontri affari Hong Kong e Corea del Sud GIUGNO 2011
Modulo di adesione incontri affari Hong Kong e Corea del Sud GIUGNO 2011
 
Modello Organizzativo GSE
Modello Organizzativo GSEModello Organizzativo GSE
Modello Organizzativo GSE
 
I. Fogliata - Il Budget di tesoreria - 30 novembre 2021
I. Fogliata - Il Budget di tesoreria - 30 novembre 2021I. Fogliata - Il Budget di tesoreria - 30 novembre 2021
I. Fogliata - Il Budget di tesoreria - 30 novembre 2021
 
Executive mobile-banking-2012
Executive mobile-banking-2012Executive mobile-banking-2012
Executive mobile-banking-2012
 
I processi di sviluppo software: l'evoluzione agile ed il DevOps
I processi di sviluppo software: l'evoluzione agile ed il DevOpsI processi di sviluppo software: l'evoluzione agile ed il DevOps
I processi di sviluppo software: l'evoluzione agile ed il DevOps
 
Vert2007 piattaforma 2007_2010
Vert2007 piattaforma 2007_2010Vert2007 piattaforma 2007_2010
Vert2007 piattaforma 2007_2010
 
SARDCOIN - Tecnologie blockchain a supporto del turismo in Sardegna
SARDCOIN - Tecnologie blockchain a supporto del turismo in SardegnaSARDCOIN - Tecnologie blockchain a supporto del turismo in Sardegna
SARDCOIN - Tecnologie blockchain a supporto del turismo in Sardegna
 
Giustizia ritardata è giustizia negata
Giustizia ritardata è giustizia negataGiustizia ritardata è giustizia negata
Giustizia ritardata è giustizia negata
 
Progetto Solar System
Progetto Solar SystemProgetto Solar System
Progetto Solar System
 
PROTOCOLLO OPERATIVO PER LA CARATTERIZZAZIONE DEI SITI AI SENSI DEL D. LGS. 1...
PROTOCOLLO OPERATIVO PER LA CARATTERIZZAZIONE DEI SITI AI SENSI DEL D. LGS. 1...PROTOCOLLO OPERATIVO PER LA CARATTERIZZAZIONE DEI SITI AI SENSI DEL D. LGS. 1...
PROTOCOLLO OPERATIVO PER LA CARATTERIZZAZIONE DEI SITI AI SENSI DEL D. LGS. 1...
 
Meccanico auto economico: 5 fondamentali domande per valutare una rete di aut...
Meccanico auto economico: 5 fondamentali domande per valutare una rete di aut...Meccanico auto economico: 5 fondamentali domande per valutare una rete di aut...
Meccanico auto economico: 5 fondamentali domande per valutare una rete di aut...
 

Documentazione sinv

  • 1. 1 PROGETTO DATABASE 2009/2010 Realizzato da:Polidoro Alessio, Mazzotta Simone, Lucca Alessandro
  • 2. 2 INDICE 1. 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 ........................................................ 7 2. Analisi dei requisiti ........................................................................ 8 2.1 Individuazione entità, attributi ............................................... 8 2.2 Ristrutturazione specifiche ............................................... 10 3. 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 ....................................... 23 4. 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 ............................................................... 29 5. Traduzione SQL ....................................................................... 30 5.1 Creazione tabelle ............................................................... 30
  • 3. 3 1 Tema progetto 1.1 Descrizione del dominio applicativo Si vuole realizzare un’applicazione web per la gestione/prenotazione online di una società internazionale di noleggio veicoli (d’ora in poi indicata con la sigla SINV). Per far ciò l’applicazione deve prevedere tre diverse interfacce: una per le gestione dei dati delle filiali e del personale da parte degli amministratori del sistema,una per la gestione delle prenotazioni da parte del personale delle filiali, effettuare prenotazioni online da parte dei clienti. Interfacciamento essere progettato tenendo presente che un membro del personale della SINV può essere anche cliente e quindi fare prenotazioni online. In questo caso si deve applicare uno sconto del 10% sul costo del noleggio. I dati dei membri del personale sono inseriti direttamente dagli amministratori del sistema, mentre per effettuare una prenotazione i clienti devono registrarsi. I dati registrati per i membri del personale sono nome, cognome, data di assunzione, username e password da utilizzare per il login nell’applicazione, più lo storico delle filiali in cui hanno lavorato. Oltre a nome, cognome, username e password,a un cliente è richiesto,in fase di registrazione,anche l'indirizzo completo, un numero di telefono,l’indirizzo e- mail, e le eventuali preferenze relative al tipo di veicolo. Durante la registrazione un cliente può decidere se richiedere la carta della SINV. Una carta può essere associata a un solo cliente, ed è caratterizzata da un numero univoco e una data di attivazione. La carta permette di accumulare dei punti, che potranno essere utilizzati per ottenere sconti sul prezzo dei noleggi. Il numero di punti varia a seconda del tipo di veicolo e alla durata del noleggio. I punti accumulati possono essere spesi per ottenere uno sconto sul costo di un noleggio, ipotizzando un cambio di 10 punti per euro. I punti da associare al tipo di veicolo e alla durata del noleggio, nonché il cambio punti/euro,potranno essere 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 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 veicoli disponibili indicando la città e il periodo previsto per il noleggio. Il sistema deve fornire al cliente, per ogni filiale, tutti i dati sopra indicati, a eccezione delle informazioni sui membri del personale. Per effettuare una prenotazione,è necessario che l'utente si registri. Quindi, una volta scelti filiale, veicolo, periodo e tipo di assicurazione e confermata la prenotazione, il cliente dovrà fornire i dati relativi alla sua carta di credito. Terminata la procedura, all’utente verrà visualizzata una pagina web che, una volta stampata, avrà valore di ricevuta per la prenotazione effettuata. Tale pagina dovrà contenere, oltre ad alcuni dati personali del cliente, codice e data di 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 giorni 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 che determinano il costo dei veicoli. Allo stesso modo, un cliente potrà effettuare modiche alla prenotazione iniziale senza incorrere in una penale, a patto che tali variazioni siano effettuate entro il termine dei due giorni. Le modiche di una prenotazione potranno riguardare sia il tipo di veicolo che il periodo e, in base a ciò, il costo del noleggio potrà subire un incremento/decremento. Un cliente può prenotare più di un veicolo per lo stesso periodo. Tuttavia il sistema dovrà rifiutare prenotazioni di veicoli di filiali diverse, effettuate dallo stesso cliente per le stesse date. Il principio è che il cliente che effettua la prenotazione per i veicoli di una filiale deve essere uno dei clienti che effettivamente utilizzeranno uno di tali veicoli per le date prenotate. Ne segue che,per la stessa data, un dato cliente non può prenotare veicoli in due filiali diverse. Per quanto riguarda la carta di credito, non è ovviamente prevista l'implementazione di un sistema funzionante di pagamento online. Tuttavia è necessario implementare controlli relativi alla validità della carta di credito(ad es.,la carta di credito deve essere attiva e in grado di coprire il costo delle prenotazioni,la data di scadenza non deve essere precedente il giorno,o i giorni,per cui si è prenotato il veicolo, nome e cognome dell’intestatario devono essere gli stessi della persona che effettua 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 di almeno alcuni dei clienti. L’applicativo dovrà quindi interrogare tale database per verificare se accettare o meno una prenotazione. Il cliente dovrà ritirare il veicolo presso la filiale indicata nella prenotazione,
  • 5. 5 ma potrà consegnarla in un’altra 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. Il personale deve poter visualizzare tutte le prenotazioni in corso, effettuare eventualmente 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 il personale deve registrare, per ogni prenotazione, il chilometraggio iniziale e finale, eventuali ritardi nel ritiro o nella consegna,se il veicolo consegnato presenta dei danni e se ha il serbatoio pieno(in tal caso,il cliente dovrà pagare il costo del carburante necessario a riempire il serbatoio). Tutti i dati relativi alle filiali e ai relativi veicoli possono essere modificati dagli amministratori del sistema. Modiche relative a filiali e veicoli possono essere effettuate solo se non esistono al momento prenotazioni per tali filiali/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 di veicoli inferiore al 50%(vedi Esempio1). Esempio 1 Supponiamo che, in data 13 febbraio, solo 8 veicoli su 20 di una data 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. Supponiamo ora chela successivaprenotazioneperil28febbraio sia effettuata dal cliente C2 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 28 febbraio. 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 l'attivazione degli sconti(cioè il rap- porto tra veicoli liberi e veicoli prenotati, e il numero di giorni precedenti la data di prenotazione), nonché la stessa percentuale di sconto, possono essere modificati dagli amministratori. Inoltre, a discrezione degli amministratori, tali sconti 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 eventuale sconto sul prezzo del noleggio.
  • 6. 6 1.2 Volume dati La SINV consta di (almeno) 50 filiali, con un minimo di 20 veicoli ciascuno, distribuiti su (almeno) 10 nazioni. In alcune delle città maggiori è necessario prevedere 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 deve registrare prenotazioni in tutte le filiali per almeno i sei mesi precedenti la data di discussione del progetto. A tal scopo si consiglia di preparare uno script in grado 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 previsti Le operazioni da prevedere sulla base di dati sono le seguenti(il carico di lavoro previsto è indicato tra parentesi): 1.3.1 Interfaccia amministrativa(Alessio Polidoro): (a) gestione personale: inserimento/modica/cancellazione dati del personale(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 1.3.2 Interfaccia personale(Alessandro Lucca): (a) gestione prenotazioni online: il personale dovrà poter visualizzare l’elenco completo delle prenotazioni effettuate per ogni filiale e, per prenotazioni passate,quali e quanti dei clienti si sono effettivamente presentati; (b) gestione check-in: il personale deve registrare il ritiro del veicolo da parte dei clienti, e eventuali modiche sulla prenotazione (come il tipo di veicolo/ assicurazione,periodo di noleggio, etc.);inoltre il personale deve registrare il chilometraggio iniziale e la data e ora effettive di ritiro del veicolo;il sistema deve quindi restituire una pagina contenente tutti i dati relativi al noleggio(compreso il chilometraggio iniziale del veicolo); tale pagina dovrà essere stampata in duplice copia e firmata dal cliente e dal membro del personale incaricato del check-in; (c) gestione check-out: il personale deve registrare la consegna del veicolo da parte dei clienti e il pagamento effettivo(che può essere maggiore di quello previsto a causa della richiesta di servizi aggiuntivi ad es., il tipo di assicurazione scelta); inoltre il personale deve registrare il chilometraggio finale, data e ora di consegna del veicolo, se il veicolo consegnato presenta dei danni e se ha il serbatoio pieno(in tal caso, il cliente dovrà pagare il costo del carburante necessario a riempire il serbatoio);il sistema deve quindi restituire una 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 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 requisiti 2.1 Individuazione entità e attributi Entità Attributi Si vuole realizzare un’applicazione web per la gestione/prenotazione online di una società internazionale di noleggio veicoli (d’ora in poi indicata con la sigla SINV). Per far ciò l’applicazione deve prevedere tre diverse interfacce: una per le gestione dei dati delle filiali e del personale da parte degli amministratori del sistema,una per la gestione delle prenotazioni da parte del personale delle filiali, effettuare prenotazioni online da parte dei clienti. L’Interfacciamento deve essere progettato tenendo presente che un membro del personale della SINV può essere anche cliente e quindi fare prenotazioni online. In questo caso si deve applicare uno sconto del 10% sul costo del noleggio. I dati dei membri del personale sono inseriti direttamente dagli amministratori del sistema, mentre per effettuare una prenotazione i clienti devono registrarsi. I dati registrati per i membri del personale sono nome, cognome, data di assunzione, username e password da utilizzare per il login nell’applicazione, più lo storico delle filiali in cui hanno lavorato. Oltre a nome, cognome, username e password,a un cliente è richiesto,in fase di registrazione,anche l'indirizzo completo, un numero di telefono,l’indirizzo e- mail, e le eventuali preferenze relative al tipo di veicolo. Durante la registrazione un cliente può decidere se richiedere la carta della SINV. Una carta può essere associata a un solo cliente, ed è caratterizzata da un numero univoco e una data di attivazione. La carta permette di accumulare dei punti, che potranno essere utilizzati per ottenere sconti sul prezzo dei noleggi. Il numero di punti varia a seconda del tipo di veicolo e alla durata del noleggio. I punti accumulati possono essere spesi per ottenere uno sconto sul costo di un noleggio, ipotizzando un cambio di 10 punti per euro. I punti da associare al tipo di veicolo e alla durata del noleggio, nonché il cambio punti/euro,potranno essere 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 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 veicoli disponibili indicando la città e il periodo previsto per il noleggio. Il sistema deve fornire al cliente, per ogni filiale, tutti i dati sopra indicati, a eccezione delle informazioni sui membri del personale. Per effettuare una prenotazione,è necessario che l'utente si registri. Quindi, una volta scelti filiale, veicolo, periodo e tipo di assicurazione e confermata la prenotazione, il cliente dovrà fornire i dati relativi alla sua carta di credito. Terminata la procedura, all’utente verrà visualizzata una pagina web che, una volta stampata, avrà valore di ricevuta per la prenotazione effettuata. Tale pagina dovrà contenere, oltre ad alcuni dati personali del cliente, codice e data di 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 giorni 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 che determinano il costo dei veicoli. Allo stesso modo, un cliente potrà effettuare modiche alla prenotazione iniziale senza incorrere in una penale, a patto che tali variazioni siano effettuate entro il termine dei due giorni. Le modiche di una prenotazione potranno riguardare sia il tipo di veicolo che il periodo e, in base a ciò, il costo del noleggio potrà subire un incremento/decremento. Un cliente può prenotare più di un veicolo per lo stesso periodo. Tuttavia il sistema dovrà rifiutare prenotazioni di veicoli di filiali diverse, effettuate dallo stesso cliente per le stesse date. Il principio è che il cliente che effettua la prenotazione per i veicoli di una filiale deve essere uno dei clienti che effettivamente utilizzeranno uno di tali veicoli per le date prenotate. Ne segue che,per la stessa data, un dato cliente non può prenotare veicoli in due filiali diverse.
  • 10. 10 Per quanto riguarda la carta di credito, non è ovviamente prevista l'implementazione di un sistema funzionante di pagamento online. Tuttavia è necessario implementare controlli relativi alla validità della carta di credito(ad es.,la carta di credito deve essere attiva e in grado di coprire il costo delle prenotazioni,la data di scadenza non deve essere precedente il giorno,o i giorni,per cui si è prenotato il veicolo, nome e cognome dell’intestatario devono essere gli stessi della persona che effettua 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 di almeno alcuni dei clienti. L’applicativo dovrà quindi interrogare tale database per verificare se accettare o meno una prenotazione. Il cliente dovrà ritirare il veicolo presso la filiale indicata nella prenotazione, ma potrà consegnarla in un’altra 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. Il personale deve poter visualizzare tutte le prenotazioni in corso, effettuare eventualmente 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 il personale deve registrare, per ogni prenotazione, il chilometraggio iniziale e finale, eventuali ritardi nel ritiro o nella consegna,se il veicolo consegnato presenta dei danni e se ha il serbatoio pieno(in tal caso,il cliente dovrà pagare il costo del carburante necessario a riempire il serbatoio). Tutti i dati relativi alle filiali e ai relativi veicoli possono essere modificati dagli amministratori del sistema. Modiche relative a filiali e veicoli possono essere effettuate solo se non esistono al momento prenotazioni per tali filiali/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 di veicoli inferiore al 50%(vedi Esempio1). 2.2 Ristrutturazione delle specifiche Si vuole realizzare un’applicazione web per la gestione/prenotazione online di una società internazionale di noleggio veicoli (d’ora in poi indicata con la sigla SINV). Per far ciò l’applicazione deve prevedere tre diverse interfacce: una per la gestione dei dati delle filiali e del personale da parte degli amministratori del sistema, una per la gestione delle prenotazioni da parte del personale delle filiali, e una per effettuare prenotazioni online da parte dei clienti. Le interfacce devono essere progettate tenendo presente che un personale della SINV può essere anche cliente e quindi fare prenotazioni online (quindi iscriversi e autenticarsi sul sito come cliente). In questo caso si deve applicare uno sconto del 10% sul costo del noleggio. I dati del personale sono inseriti direttamente dagli amministratori che dovranno loggarsi per poter inserire e modificare il personale , mentre per effettuare una prenotazione i clienti devono registrarsi sul sito. I dati registrati per il personale sono nome, cognome, data di assunzione, username e password da utilizzare per il login nell’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 Oltre a nome, cognome, user e password, a un cliente è richiesto, in fase di registrazione, anche l’indirizzo con via, nazione, provincia, città, numero civico, un numero di telefono,l’indirizzo email, e le eventuali preferenze relative al tipo di veicolo. Durante la registrazione un cliente può decidere se richiedere la carta della SINV. Una carta può essere associata a un solo cliente, ed è carat- terizzata da un codice, una data di attivazione. La carta permette di accumulare dei punti, che potranno essere utilizzati per ottenere sconti sul prezzo dei noleggi. Il numero di punti varia a seconda del tipo di veicolo e alla durata del noleggio. I punti accumulati possono essere spesi per ottenere uno sconto sul costo di un noleggio, ipotizzando un cambio di 10 punti per euro. I punti da associare al tipo di veicolo e alla durata del noleggio, nonché il cambio punti/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à, punti giornalieri, 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 tabella con 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 veicoli disponibili indicando la città , la data di ritiro e consegna del noleggio. Il sistema deve fornire al cliente, per ogni filiale, tutti i dati sopra indicati, a eccezione 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 una pagina web che, una volta stampata, avrà valore di ricevuta per la prenotazione effettuata. Tale pagina dovrà contenere, oltre ad alcuni dati personali del cliente, codice e data di 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 giorni 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 che determinano il
  • 12. 12 costo dei veicoli. Allo stesso modo, un cliente potrà effettuare modifiche alla prenotazione iniziale senza incorrere in una penale, a patto che tali variazioni siano effettuate entro il termine dei due giorni. Le modifiche di una prenotazione potranno riguardare sia il tipo di veicolo che il periodo e, in base a ciò, il costo del noleggio potrà subire un incremento/ decremento. Un cliente può prenotare solo un veicolo per lo stesso periodo(Per la stessa data iniziale e finale,specificate con giorno,mese,anno). Tuttavia il sistema dovrà rifiutare prenotazioni di veicoli effettuate dallo stesso cliente per le stesse date(Per le stesse date iniziali e date finali,specificate con giorno,mese,anno). Il principio è che il cliente che effettua la prenotazione per i veicoli di una filiale deve essere uno dei clienti che effettivamente utilizzeranno uno 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 non può 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 di credito(Attributi codice,nome,cognome,scadenza,saldo)(ad es.,la carta di credito deve essere attiva(Attributo scadenza) e in grado di coprire il costo delle prenotazioni(Attributo saldo),la data di scadenza(giorno,mese,anno) non deve essere precedente il giorno,o i giorni,per cui si è prenotato il veicolo, nome e cognome dell’intestatario devono essere gli stessi del Cliente che effettua 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 di almeno alcuni dei clienti. L’applicativo dovrà quindi interrogare tale database per verificare se accettare o meno una prenotazione. Il cliente dovrà ritirare il veicolo presso la filiale indicata nella prenotazione, ma potrà consegnarla in un’altra filiale(L’attributo filialecons in STORICOPRENOTAZIONI 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 filiale in cui lavora, effettuare eventualmente modifiche 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 il personale deve registrare, per ogni prenotazione, il chilometraggio iniziale e finale, eventuali ritardi nel ritiro o nella consegna,se il veicolo consegnato presenta dei danni e se ha il serbatoio pieno(Gestito tramite l’attributo Ltcarb in checkout che indica i litri rabboccati dal personale, se tale attributo non è 0, verrà moltiplicato per ltcarburante e si somma al costo del noleggio a carico del cliente). Tutti i dati relativi alle filiali e ai relativi veicoli possono essere modificati dagli amministratori del sistema. Modifiche relative a filiali e veicoli possono essere effettuate solo se non esistono al momento prenotazioni per tali filiali/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 di veicoli
  • 13. 13 inferiore al 50%(Gestito tramite dataattsconto, rapporto%veicoli in AMMINISTRAZIONE). “Esempio 1 Supponiamo che, in data 13 febbraio, solo 8 veicoli su 20 di una data 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. Supponiamo ora chela successiva prenotazione per il 28 febbraio sia effettuata dal cliente C2 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 28 febbraio. 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 rapporto tra veicoli liberi e veicoli prenotati, e il numero di giorni precedenti la data di prenotazione), nonché la stessa percentuale di sconto, possono essere modificati dagli amministratori(scontocli,dataattsconto,rapporto%veicoli in AMMINISTRAZIONE). Inoltre, a discrezione degli amministratori, tali sconti possono essere applicati a tutti i clienti .Lo sconto del 10% del personale non può essere accumulato a un eventuale sconto sul prezzo del noleggio. 3 Progettazione concettuale 3.1 Schema scheletro Inizialmente,leggendo le specifiche, abbiamo prodotto il seguente schema scheletro, indicante l’architettura di base della nostra base di dati. Di seguito descriviamo singolarmente i vari blocchi fino ad ottenere il modello E-R definitivo.
  • 14. 14 3.2 Sotto schema UTENTE Abbiamo optato per una gerarchia di generalizzazione totale-condivisa, poiché un membro del personale può essere presente anche nell’entità cliente nel momento 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 eventuale sconto futuro. Nel dettaglio, Pref è una stringa indicante le preferenze che un cliente 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 al costo totale del noleggio determina l’aumento di prezzo; -CambioPnt: indica il rapporto punti/euro riguardo all’acquisizione e all’utilizzo dei punti contenuti nella carta SINV; -DataAttSconto: indica il periodo nel quale la promozione(riguardante lo sconto sul costo del noleggio) è attiva; -Rapporto%Veicoli: rapporto tra i veicoli disponibili e prenotati relativo all’attributo sopra descritto.
  • 15. 15 -LtCarburante: valore del singolo litro di carburante che la filiale utilizzerà per calcolare l’eventuale costo aggiuntivo nel caso in cui la vettura restituita non abbia il serbatoio pieno. 3.4 Integrazione UTENTE con FILIALE Per gestire l’elenco dei membri del personale che hanno lavorato e lavorano in una filiale, creiamo l’associazione STORICO LAVORO che conterrà la data dell’assunzione (data-ini),la data di fine contratto( data-fin) che sarà NULL se il soggetto lavora attualmente nella filiale e inoltre se è responsabile di una determinata filiale(Responsabile). L’attributo Admin in PERSONALE indica invece 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 che incrementeranno i punti della carta SINV. -Costo: costo del danno prodotto che andrà a gravare sull’attributo DiffCosto dell’entità CHECK-OUT solo se il tipo dell’assicurazione scelta non copre i danni al veicolo. 3.6 Integrazione VEICOLO con FILIALE con UTENTE Integrando il sotto schema VEICOLO con FILIALE l’associazione che ne deriva sarà STORICO VEICOLI che gestirà il possesso dei veicoli in un dato periodo tra le varie filiali, avrà Data-ini e Data-fin come attributi che indicheranno l’inizio e la fine del periodo in cui il veicolo è stato in possesso di una filiale.
  • 17. 17 3.7 Sotto schema STORICO PRENOTAZIONI L’associazione prenota presente nello schema scheletro viene gestita come un entità per mantenere informazioni sulle varie prenotazioni nel corso del tempo. Nel dettaglio vediamo: -Costo: conterrà il costo complessivo da versare/versato appena effettuata la prenotazione. -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 la prenotazione e verrà utilizzato per controllare la validità, proprietà e il saldo della carta di credito. Il cliente deve scegliere una poliza assicurativa per ogni noleggio, caratterizzata da una descrizione, un prezzo, un tipo, un codice ed un massimale. -Cod: sarà un codice numerico che si riferirà alla classe di appartenenza dell’assicurazione scelta. -Massimale: sarà la massima cifra che verrà coperta dall’assicurazione in caso di danni a terzi. Abbiamo gestito il ritiro e la consegna del veicolo con le entità CHECKIN e CHECKOUT . Vediamo nel dettaglio: -OraEffRit/OraEffCons/DataEffRit/DataEffCons: indicheranno ora e data effettivi di ritiro e consegna poiché ora e data possono non coincidere con quelle indicate nella prenotazione e, nel caso, dovrà essere applicata una penale. -LtCarb: indicherà i litri di carburante rabboccati dal personale una volta consegnato il veicolo, verrà utilizzato per moltiplicarlo con Ltcarburante (presente nell’entità AMMINISTRAZIONE) per determinare il prezzo che il
  • 18. 18 cliente 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 chiamata EFFETTUA contenente Data-Pren, che indica la data di prenotazione, e l’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 3.10 VINCOLI V1:Lo stesso cliente nelle stesse date non può prenotare veicoli di filiali diverse. V2:Non si possono fare modifiche relative a filiali e veicoli se esistono delle prenotazioni su queste filiali/veicoli. 3.11 GERARCHIE DI GENERALIZZAZIONE: ENTITA’ ENTITA’ FIGLIE TIPOLOGIA PADRE UTENTE PERSONALE,CLIENTE TOTALE/CONDIVI SA MANUTENZIO INCIDENTE,TAGLIANDO,REVISIONE,RIPAR TOTALE/ESCLUSI NE AZIONE VA 3.12 DIZIONARIO DELLE ENTITA’ NOME DESCRIZIO ATTRIBUTI IDENTIFICAT NE ORI UTENTE Utenti della USER USER SINV PW NOME COGNOME INDIRIZZO CLIENTE Cliente che si E-MAIL Stessi di registra nel TEL UTENTE sistema della PREF SINV PERSONALE Personale DATAASS Stessi di della SINV ADMIN UTENTE CARTA Carta CODC CODC punti(se DATAATT richiesto dal PUNTI cliente) STORICO Storico CODP CODP PRENOTAZIONI Prenotazioni IDCC in corso e DATARIT concluse DATACONS
  • 20. 20 nella SINV FILIALECONS COSTO ORARIT ORACONS FILIALERIT DATAPREN COSTOPARZ ASSICURAZIONE Assicurazion TIPO COD e scelta dal DESCRIZIONE cliente al PREZZO momento COD della MASSIMALE prenotazione CHECK-IN Controllo al ORAEFFRIT Stessi di PRE momento del KM-INI NOL ritiro del DATAEFFRIT veicolo CHECK-OUT Controllo al DIFFCOSTO Stessi di PRE momento DATAEFFCONS NOL della ORAEFFCONS consegna LTCARB KMFIN DANNI AMMINISTRAZI 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 PENALERIT FILIALE Filiali della CODF CODF SINV NOME DATAIST GGCHIUSURA ORARIOAPE ORARIOCHIU E-MAIL SITO INDIRIZZO VEICOLO Veicoli della TARGA TARGA SINV DISP LTSERBATOIO ANNOPROD
  • 21. 21 ANNOACQUISTO MODELLO MOTORE TIPO MARCA PUNTIGG PREZZOGG IMMAGINI CILINDRATA KMINI INFOVEICOLO MANUTENZIONE Manutenzion IDM IDM e effettuata DATA-INI sui veicoli DATA-FIN della SINV DESCRIZIONE TIPO INCIDENTE Manutenzion COSTO Stessi di e per COPERTURAASS manutenzione incidente TAGLIANDO Manutenzion Stessi di e per manutenzione tagliando REVISIONE Manutenzion Stessi di e per manutenzione revisione RIPARAZIONE Manutenzion Stessi di e per manutenzione riparazione CARTA Dati NOME IDCC CREDITO riguardanti il COGNOME proprietario TEL SALDO SCADENZA IDCC PIN
  • 22. 22 3.13 DIZIONARIO DELLE ASSOCIAZIONI NOME DESCRIZIONE ATTRIBUTI ENTITA’ COLLEGATE POSSIEDE Possibile CARTA possesso di CLIENTE una carta da parte di un cliente EFFETTUA Prenotazione DATA-PREN CLIENTE effettuate PRENOL HA Possibili ASSICURAZIONE assicurazioni su PRE NOL prenotazioni SUBISCE1 Controllo PRE NOL (check-in) sul CHECK-IN ritiro di un veicolo SUBISCE2 Controllo PRE NOL (check-out) CHECK-OUT sulla consegna di un veicolo STORICO Storico DATA-INI PERSONALE LAVORO personale delle DATA-FIN FILIALI filiali RESPONSABIL E PRE VE prenotazione PRE NOL su un veicolo VEICOLO GESTISCE Gestione AMMINISTRAZIONE amministrazion FILIALE e filiale STORICO Storico veicoli DATA-INI FILIALE VEICOLI delle filiali DATA-FIN VEICOLO SUBISCE3 Possibile VEICOLO manutenzione MANUTENZIONE su un veicolo
  • 23. 23 3.14 Domini Attributi Entità Carta: CODC : Int DATAATT: Date PUNTI : Int Entità Cliente: E-MAIL : String TEL : String PREF : String Entità Utente: USER : String PW : String INDIRIZZO : String x String x String x String x Int NOME : String COGNOME : String Entità Personale: DATASS : Date ADMIN:Boolean Associazione Effettua: DATA-PREN : Date Entità Assicurazione: PREZZO : Real TIPO : String DESCRIZIONE : String COD : Int MASSIMALE: Real Entità Storico Prenotazioni: CODP : Int IDCC : String DATARIT : Date DATACONS : Date FILIALECONS : String COSTO : Real ORARIT : Time ORACONS : Time FILIALERIT:String COSTOPARZ:Real DATAPREN:Date
  • 24. 24 Entità Check In: ORAEFFRIT : Time KM-INI : Int DATAEFFRIT : Date Entità Check out: DIFFCOSTO : Real DATAEFFCONS : Date ORAEFFCONS : Time LTCARB : Real KMFIN : Int DANNI : Boolean Associazione STORICO LAVORO: DATA-INI : Date DATA-FIN : Date RESPONSABILE:Boolean Entità AMMINISTRAZIONE: DATA-FIN : Date DATA-INI : Date PENALEGG : Real SCONTODIP : Real SCONTOCLI : Real CAMBIOPNT : Int DATAATTSCONTO : Date RAPPORTO%VEICOLI : Real LTCARBURANTE : Real PENALECONS : Real PENALERIT : Real Entità FILIALE: CODF : Int NOME : String DATAIST : Date GGCHIUSURA : String ORARIOAPE : Time ORARIOCHIU :Time E-MAIL : String SITO : String INDIRIZZO : String x String x String x String x Int Associazione STORICO VEICOLI: DATA-INI : Date DATA-FIN : Date
  • 25. 25 Entità VEICOLO: TARGA : String DISP : Boolean LTSERBATOIO : Real ANNOPROD : Date ANNOACQUISTO : Date MODELLO : String MOTORE : String TIPO : String MARCA : String PUNTIGG : Int PREZZOGG : Real IMMAGINI:String INFOVEICOLO:String CILINDRATA:Real KMINI:Int Entità MANUTENZIONE: IDM : Int DATA-INI : Date DATA-FIN : Date DESCRIZIONE : String TIPO:String Entità INCIDENTE: COSTO : Real COPERTURAASS:Int Entità CARTACREDITO: NOME:String COGNOME:String IDCC:Int SALDO:Real SCADENZA:Date PIN:String
  • 26. 26 4-PROGETTAZIONE LOGICA FASE DI RISTRUTTURAZIONE 4.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 4.4 SCHEMA E-R RISTRUTTURATO
  • 28. 28 4.5 SCHEMA LOGICO SINV Cliente ( 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 4.6 NORMALIZZAZIONE SCHEMA RELAZIONALE Obiettivo: verificare che lo schema logico ottenuto sia normalizzato in forma normale 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 superchiave per R. - Definizione Terza Forma Normale: Una relazione è in 3FN se per ogni dipendenza funzionale X->Y è vera una delle seguenti condizioni: - X è una superchiave della relazione - Y è membro di una chiave della relazione Risultato Finale: Lo schema relazionale ottenuto è normalizzato in 3NF(Terza Forma Normale) poiché in alcune relazioni abbiamo una chiave primaria ottenuta utilizzando due attributi della stessa. Abbiamo preferito effettuare questa scelta di normalizzazione, invece di utilizzare identificativi numerici per ogni tupla delle relazioni, per facilitare operazioni future sulle stesse. 4.7 SCELTE PROGETTUALI -Per CC ( Carta Credito) creiamo un altro DB chiamato “banca fittizia” dove registriamo per ogni utene la propria carta di credito; -Per la disponibilità dei veicoli in fase prenotazione usiamo una query sia su STORICO PRENOTAZIONI che su MANUTENZIONE (controllo che il veicolo non sia impegnato in un altro noleggio o in manutenzione); -Nella tabella MANUTENZIONE il “tipo” indica se si tratta di revisione, tagliando o 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 di un 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 -Se un membro del personale si registra come cliente mantiene lo stesso Username e Password; -La data di inizio della manutenzione in caso di incidente dovrà essere uguale alla data di consegna del veicolo noleggiato; -La gestione dei vincoli V1 e V2 specificati sopra è stata implementata mediante l’applicativo (controlli a livello php); -Lo sconto del 10% viene applicato al cliente solo in fase di prenotazione e non durante modifiche su richiesta; -I punti vengono dati al cliente in solo in fase di pagamento durante la prenotazione e non durante le modifiche successive; -Nella realizzazione del dominio degli attributi, utilizziamo domini generici consoni con il modello ER, ma in fase di create table i domini saranno consoni al linguaggio sql; -Se l’utente sceglie una filiale consegna diversa dalla filiale ritiro selezionata, il veicolo sarà poi riportato alla filiale intestataria; -Nella parte del personale le seguenti query vengono visualizzate per la filiale di appartenenza del membro del personale: Il personale dovrà poter visualizzare l’elenco completo delle prenotazioni effettuate per ogni filiale e, per prenotazioni passate,quali e quanti dei clienti si sono effettivamente presentati. 5 TRADUZIONE IN SQL 5.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 CREATE TABLE Cliente( user VARCHAR(40) REFERENCES Utente ON UPDATE CASCADE ON 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 Utente ON UPDATE CASCADE ON DELETE NO ACTION, dataass DATE NOT NULL, admin BOOLEAN, PRIMARY KEY(user) ); CREATE TABLE Storicolavoro( user VARCHAR(40) REFERENCES Personale ON UPDATE CASCADE ON DELETE CASCADE, codf DECIMAL(8) REFERENCES Filiale ON UPDATE CASCADE ON 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 orariochiu 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 filiale ON DELETE NO ACTION ON UPDATE CASCADE ); CREATE TABLE Storicoveicoli( Codf DECIMAL(8) REFERENCES filiale ON UPDATE CASCADE ON DELETE CASCADE, targa VARCHAR(10) REFERENCES veicolo ON UPDATE CASCADE ON 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 motore 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 NULL targa VARCHAR(10) REFERENCES veicolo ON DELETE NO ACTION ON UPDATE CASCADE ); CREATE TABLE Incidente( idm DECIMAL(8) REFERENCES Manutenzione ON UPDATE CASCADE ON 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 Cliente ON UPDATE CASCADE ON DELETE NO ACTION, cod VARCHAR(6) REFERENCES Assicurazione ON UPDATE CASCADE ON DELETE NO ACTION,
  • 34. 34 Targa VARCHAR(10) REFERENCES Veicolo ON UPDATE NO ACTION ON 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 StoricoPrenotazioni ON UPDATE CASCADE ON 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 StoricoPrenotazioni ON UPDATE CASCADE ON 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) );