Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Progettazione concettuale
La progettazione concettuale ci permette di rappresentare il nostro sistema mediante un insieme di concetti e relazioni tra concetti.
Diagramma Entità-Relazione
Dizionario delle entità
Descriviamo adesso le entità che sono presenti nello schema E/R.
Entità | Descrizione | Attributi | Identificatori |
---|---|---|---|
SFT_TRENI | Rappresenta il treno | id, richiesta_id, carrozze, locomotore, nome_treno | id |
Utente registrato
- Login
- Accede ad area privata
- Controlla prenotazioni
- Modifica data prenotazioni
- Modifica posto a sedere
- Ricerca una soluzione di viaggio
- Paga la soluzione di viaggio
- Visita sito internet e accede a info storiche e turistiche
Utente non registrato (visitatore)
- Visita sito internet e accede a info storiche e turistiche
- Ricerca una soluzione di viaggio
richiestodall’amministrazione econvalidato dall’esercizioSFT attraverso una fasesuccessiva diprogrammazione etrasformazioni di una tuplanella tabella treni.
SFT_POSTI Attraverso questa entità id_prenotazione id_prenotaziovengono mappati e id_carrozza ne,modellizzati le occupazioni id_posto id_carrozza,dei posti a sedere in una id_postodeterminata carrozza aseguito di unaprenotazione.
SFT_UTENTI E’ l’utente che interagisce id idcon la web app SFT. Esso nomepuò avere diversi ruoli cognome(utente, amministrazione emailed esercizio). Risulta avere usernamea corredo diverse passwordinformazioni personali e ruolouna password crittografata
SFT_PRENOTAZIONI Questa entità rappresenta id idla prenotazione di un titolo datadi viaggio. Essa dettaglia id_trenopartenza, destinazione, id_utenteorari, costi e codice id_partenzaunivoco transazione id_destinazionefinanziaria effettuata a data_partenzaseguito del pagamento.
<p>orario_partenza</p>
<p>data_arrivo</p>
<p>orario_arrivo</p>
<p>costo_transazione</p>
<h2>SFT_STAZIONI</h2>
<p>Attraverso questa entità di id iddettaglia meglio il nomeconcetto di stazione posizione_kmattraverso una capolineadenominazione e anche laposizione lungo la lineaespressa in chilometri perpoter calcolare i tempi dipercorrenza</p>
<h2>SFT_TRAFFICO</h2>
<p>Con questa entità si id_tratta id_tratta,mappano li data data,attraversamenti dei treni ora_partenza ora_partenzanelle varie tratte e quindi ora_arrivotracciando l’occupazione id_trenodelle stesse e delmateriale rotabile.</p>
<h2>SFT_TRATTE</h2>
<p>Con questa entità vengono id idcensite tutte le tratte stazione_partenza(intese come i percorsi che stazione_arrivovanno da una stazione a percorrenzaquella successiva) con itempi di percorrenza a50Kmh.</p>
<h2>Dizionario delle relazioni</h2>
<p>Procediamo descrivendo le relazioni.</p>
<h3>Relazione PRENOTA</h3>
<p>Collega l’entità SFT_UTENTI con l’entità SFT_PRENOTAZIONI (1,1) //SFT_PRENOTAZIONI.</p>
SFT_USERS (0,N)RICHIEDE Collega l'entità SFT_RICHIESTA_TRENI_EXTR //SFT_RICHIESTA_TRENI_EXTRA con l'entità A (1,1)SFT_UTENTI
SFT_USERS (0,N)TRANSITA Collega l'entità //SFT_RICHIESTA_TRENI_EXTRA con l'entità SFT_RICHIESTA_TRENI_EXTRSFT_STAZIONI A (N,1)SFT_STAZIONI(1,N)CONDUCE Collega l'entità SFT_PRENOTAZIONI con SFT_PRENOTAZIONI (N,1) //l'entità SFT_STAZIONI
SFT_STAZIONI (1,N)OCCUPA Collega l'entità SFT_PRENOTAZIONI con SFT_PRENOTAZIONI (1,N) //l'entità SFT_POSTI
SFT_POSTI (0,N)USUFRUIS Collega l'entità SFT_PRENOTAZIONI con SFT_PRENOTAZIONI (1,1) //CE l'entità SFT_TRENI
SFT_TRENI (0,N)UTILIZZA Collega l'entità SFT_TRENI con l'entità SFT_TRENI (1,1) //SFT_LOCOMOTIVE
SFT_LOCOMOTIVE (0,N)SERVE Collega l'entità SFT_TRENI con l'entità SFT_TRENI (N,1) //SFT_STAZIONI
SFT_STAZIONI (1,N)PRESENTI_ Collega
l'entità SFT_POSTI con l'entità SFT_POSTI (1,1)
IN SFT_CARROZZE SFT_CARROZZE (1,N)
COMPONE Collega l'entità SFT_TRENI con l'entità SFT_TRENI (N,N)
SFT_CARROZZE SFT_CARROZZE (N,N)
REL Collega l'entità SFT_TRAFFICO con SFT_TRAFFICO (1,1)
SFT_TRATTE SFT_TRATTE (0,N)
PERCORRE Collega l'entità SFR_TRAFFICO con SFT_TRAFFICO (1,1)
SFT_TRENI SFT_TRENI(1,N)
Dizionario dei vincoli
Descriviamo i vincoli.
Vincol Regolao
V1 Un utente deve registrarsi se vuole prenotare/acquistare un titolo di viaggio
V2 Un utente non può controllare i propri dati se non accede all'area riservata.
V3 Non è possibile acquistare un biglietto se i posti nel treno sono tutti riservati
V4 Solo utenti con profilo "amministrazione" possono cancellare i treni senza prenotazioni
V5 Solo utenti con profilo "amministrazione" possono accedere ai dati sullo stato di occupazione treni
V6 Solo utenti con profilo
“esercizio” possono comporre e programmare i treniV7
Solo utenti con profilo “esercizio” possono convalidare richieste di treni extraV8
Solo gli utenti registrati possono modificare i loro titoli di viaggio (stessa data, diversoorario oppure cambio posto a sedere)
PROGETTAZIONE LOGICA
Ristrutturazione del modello E/R
Prevede sei trasformazioni da apportare al modello E/R per renderlo compatibile con ilmodello logico, procediamo con la descrizione delle singole operazioni da compiere:
Analisi delle ridondanze
In questo caso, non essendo presente alcuna ridondanza, non dobbiamo apportarealcuna modifica al modello E/R.
Eliminazione delle generalizzazioni
Nel nostro caso non sono presenti generalizzazioni, dunque non è necessarioapportare modifiche.
Partizionamento o accorpamento dei concetti
Nello schema E/R non occorre effettuare partizionamenti o accorpamenti delle entità.
Eliminazione degli attributi multivalore
Nel modello logico sussiste
l'impossibilità di avere attributi multivalore, quindi, andremo ad eliminare gli attributi di questo tipo presenti per sostituirli con un'entità apposita.
Eliminazione degli attributi composti
Nel modello logico sussiste l'impossibilità di avere attributi composti, quindi, andremo ad eliminare gli attributi di questo tipo presenti per sostituirli con attributi semplici.
Scelta degli identificatori principali
Nel passaggio al modello relazionale è importante e necessaria la scelta degli identificatori principali.
Alla fine del processo si è deciso di modificare questa sezione dello schema E/R per meglio rappresentare la gestione di un treno attraverso il concetto di convoglio:
Traduzione verso il modello logico
Adesso dobbiamo esaminare la traduzione verso il modello logico, che nel nostro caso è un modello relazionale, andiamo quindi a tradurre tutte le relazioni.
Relazione PRENOTA (0,N) e (1,1):
Questa è un'associazione uno a molti,
quindi applicheremo le dovute regole e lo schema relazionale che ne deriva sarà:<table>
<tr>
<th>id</th>
<th>nome</th>
<th>cognome</th>
<th>email</th>
<th>username</th>
<th>password</th>
<th>ruolo</th>
</tr>
<tr>
<td>id</td>
<td>data</td>
<td>id_treno</td>
<td>id_utente</td>
<td>id_partenza</td>
<td>id_destinazione</td>
<td>data_partenza</td>
<td>orario_partenza</td>
<td>data_arrivo</td>
<td>orario_arrivo</td>
<td>costo</td>
<td>n_transazione</td>
</tr>
</table>
Possiamo quindi definire adesso il vincolo d'integrità referenziale che coinvolge id_utente, l'attributo della relazione sft_prenotazione con l'attributo di sft_utenti.
Relazione RICHIEDE (0,N) e (1,1):
Questa è un'associazione uno a molti, quindi applicheremo le dovute regole e lo schema relazionale che ne deriva sarà:
<table>
<tr>
<th>id</th>
<th>nome</th>
<th>cognome</th>
<th>email</th>
<th>username</th>
<th>password</th>
<th>ruolo</th>
</tr>
<tr>
<td>id</td>
<td>id_utente</td>
<td>stazione_partenza</td>
<td>id_destinazione</td>
<td>data_partenza</td>
<td>data_richiesta</td>
<td>prod</td>
</tr>
</table>
Possiamo quindi definire adesso il vincolo d'integrità referenziale che coinvolge id_utente, l'attributo dellarelazione sft_richiesta_treni_extra con l'attributo disft_utenti.
Relazione UTILIZZA (0,N) e (1,1):
Questa è un'associazione uno a molti, quindi applicheremo le dovute regole e lo schema relazionale che ne deriva sarà:
(id, richiesta_id, nome_treno, locomotiva_id, id_partenza, sft_treniid_destinazione, data_partenza, orario_partenza, data_arrivo, orario_arrivo, cancellato)
(id, sft_locomotive nome, descrizione, velocita_massima)
Possiamo quindi definire adesso il vincolo d'integrità referenziale che coinvolge locomotiva_id id l'attributo della relazione sft_treni con l'attributo di sft_locomotive.
Relazione USUFRUISCE (0,N) e (1,1):
Questa è un'associazione uno a molti, quindi applicheremo le dovute regole e lo schema relazionale che ne deriva sarà:
(id, richiesta_id, nome_treno, locomotiva_id, id_partenza, sft_treniid_destinazione, data_partenza, orario_partenza, data_arrivo, orario_arrivo, cancellato)
(id, data, id_treno, id_utente,
uindi ogni prenotazione può essere associata a uno e solo un treno, mentre ogni treno può essere associato a una o più prenotazioni. Per definire il vincolo d'integrità referenziale, possiamo utilizzare il tag HTML<table>
per creare una tabella e i tag <th>
per definire le intestazioni delle colonne. Utilizzeremo anche i tag <tr>
per definire le righe della tabella e i tag <td>
per inserire i valori.
Ecco come potrebbe essere formattato il testo utilizzando i tag HTML:
id_partenza | id_destinazione | data_partenza | orario_partenza | data_arrivo | orario_arrivo | costo | n_transazione |
---|---|---|---|---|---|---|---|
b. sft_prenotazioni | id_treno | sft_treni |