REALIZZAZIONE DEL PROGETTO CINEMA ON-LINE CineWeb
-
Upload
nelson-firmani -
Category
Technology
-
view
423 -
download
1
Transcript of REALIZZAZIONE DEL PROGETTO CINEMA ON-LINE CineWeb
1
REALIZZAZIONE DEL
PROGETTO
CINEMA ON-LINE “CineWeb”
Ing. Nelson Firmani
Dipartimento di Ingegneria Elettrica Università di L’Aquila, AQ 67040, Italy
Premessa
Questa relazione accompagna il progetto “CineWeb” . Contiene una breve presentazione del sito, seguita
dalla completa documentazione sulla progettazione del modello relazionale che sta alla sua base.
2
2 Presentazione CineWeb è un sistema per la gestione e la consultazione della programmazione delle sale cinematografiche via web. Cineweb come portale per l'informazione: Il sito dovrà fornire una presentazione generale della sala cinematografica nonché dei servizi offerti. Inoltre con l’obiettivo di assistere lo spettatore, verranno forniti informazioni relative ai film in programmazione in ogni singola sala, gli orari, il costo del biglietto e la disponibilità di tariffe agevolate in giorni particolari della settimana, oppure per categorie specifiche (studenti, militari, ecc). Per quanto riguarda le pellicole in programmazione, è possibile richiamare la scheda film con la copertina, l'anno e la nazione di provenienza, il genere, il regista, la casa di produzione, la trama e eventuali giudizi critici. Inoltre per ogni interprete è disponibile la scheda anagrafica e il personaggio interpretato. Possibilità di ricerche in archivio per genere film (ad esempio, tutti i film drammatici in programmazione) per interpreti (ad esempio, tutti i film in programmazione in cui recita Monica Bellucci) per regista e diversamente combinate fra loro.
Gli utenti possono registrarsi per ricevere la programmazione dei film per posta elettronica o sul telefono cellulare tramite SMS secondo diversi criteri (ad esempio, invio messaggio solo in caso di prime visioni, o invio messaggio solo per il genere horror, ecc.) Un apposita area permette agli iscritti di lasciare commenti, recensioni ecc. Questo creerà una piccola virtual comunity di critici cinematografici.
3
Cineweb come sistema di gestione del back-office: Passando alla parte amministrativa, il sito prevede la figura dell’amministratore, questo dopo l’autenticazione entra in un completo menu che permette di gestire ogni aspetto della base di dati.
� Gestione catalogo film con eventuale
anagrafica interpreti. Grazie ad un'interfaccia intuitiva, tutte le operazioni di inserimento, aggiornamento, cancellazioni dei dati contenuti nel database sono facili e veloci da effettuare.
� Gestione programmazione spettacoli. L'applicazione guida interattivamente il gestore nella compilazione del modulo di programmazione film.
� Gestione della mailinglist degli iscritti L'applicativo consente di ricercare i dati e le caratteristiche principali degli utenti iscritti al fine di personalizzare la propria offerta cinematografica nonchè l'invio di messaggi di sponsor. Possibilità dell’amministratore di statistiche sul film più apprezzato dagli utenti
Soluzione tecnologiche adottate La soluzione adottata per conseguire gli obiettivi sopra descritti si basa sull’utilizzo di pagine web dinamiche, generate a partire dalle informazioni contenute in una base dati, e pagine web statiche per quanto concerne le informazioni relative a: presentazione sala, servizi offerti, orari apertura chiusura, il costo del biglietto, la disponibilità di tariffe agevolate in giorni particolari della settimana, oppure per categorie specifiche (studenti, militari, ecc) e l’eventuale pubblicazione della carta dello spettatore. L’architettura studiata presenta come elementi caratterizzanti l’uso dei linguaggi di markup HTML, CSS e linguaggio di scripting PHP unitamente a DBMS relazionale.
4
3 Progettazione 3.1 Analisi dei requisiti 3.1.1 Requisiti informali
CineWeb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Si vuole realizzare un sistema informativo per la gestione e la consultazione della programmazione delle
sale cinematografiche via web
L’applicazione deve gestire il palinsesto relativo ai film in programmazione, interessa conoscere la data,
gli orari, in quale sala, l’eventuale prima visione e il titolo del film che verrà proiettato.
Per ogni film in programmazione deve essere disponibile il titolo del film, l’eventuale grafica (copertina
del Film), l’anno e la nazione di provenienza, il genere, il regista, la casa di produzione, l’eventuale
trama, l’eventuale link e gli interpreti principali; per ogni interprete deve essere disponibile l’anagrafica,
il nome d’arte, eventuali link e il personaggio interpretato nel film.
L’applicazione prevede tre tipi di figure: utente generico, utente registrato, gestore.
L’utente generico accede al sistema senza effettuare l’operazione di login può consultare il palinsesto e
può registrarsi via web.
L’utente registrato, dopo l’operazione di login attraverso l’uso di una username e di una password., può
accedere ad aree riservate, lasciare commenti e votazioni sui film può inoltre decidere se ricevere la
programmazione film attraverso e-mail o attraverso SMS secondo diversi criteri di invio, può anche
decidere di cancellarsi. Per ogni utente iscritto si dovrà conoscere il cognome, il nome, il sesso, la data e
la città di residenza, l’indirizzo e-mail e l’eventuale numero telefonico nonché i generi di film preferiti.
Il gestore, dopo il login, deve essere in grado di modificare aggiungere ed eliminare le informazioni nel
catalogo film, anagrafica interpreti e nel palinsesto.
L’applicativo deve consentire al gestore di ricercare le informazioni relative agli utenti registrati ed
eventualmente eliminarle. Inoltre il gestore può fare statistiche sul film più apprezzato, sul genere.
Del gestore si dovrà conoscere il cognome e il nome; l’identificazione e l’autentica avverranno attraverso
l’uso di una username e di una password.
Per tutti gli utenti devono essere possibili ricerche per genere Film (ad esempio, tutti i film drammatici in
programmazione) per interpreti (ad esempio, tutti i film in programmazione in cui recita Monica
Bellucci) per regista ecc.
Tabella 1
5
3.1.2 Glossario dei termini Per una migliore comprensione e precisione dei termini che sono stati utilizzati nella descrizione dei requisiti realizzata precedentemente, è stato ritenuto utile definire il seguente glossario dei termini: Termine Descrizione Sinonimi Collegamenti
Palinsesto Passaggio di Film Film in
programmazione
Film
Film Film presente in archivio Catalogo Film Palinsesto, Interpreti, Utenti
Interprete Interprete del Film Anagrafica
interpreti
Film
Utente registrato Una persona che si è registrata Utente iscritto Film
Utente generico Si tratta di una persona che non si è
ancora registrata o autenticata
Utente
Gestore Si tratta di una persona che dopo
l’autenticazione potrà gestire tutti gli
aspetti della base di dati;
Amministratore
Tabella 2 3.1.3 Decomposizione del testo dei requisiti La descrizione della Tabella 1 può essere modificata in modo da realizzare in pieno i seguenti obiettivi:
� Evitare di usare termini troppo specifici o troppo generici, che rendono poco chiaro un concetto; � Mantenere sempre lo stesso stile sintattico: per esempio, “per/a <dato> va indicato/associato
<insieme di proprietà>” oppure “per/a <dato> può essere indicato/associato <insieme di proprietà>”; � Evitare frasi contorte; � Esplicitare il riferimento tra termini.
Inoltre, la suddetta descrizione deve tener conto dei risultati della Tabella 2, con particolare riferimento all’eliminazione dei sinonimi. Infine, è molto utile in questa fase decomporre il testo in gruppi di frasi omogenee, relative cioè agli stessi concetti. Il risultato di questa fase di modifica e ristrutturazione è il seguente:
6
Frasi di carattere generale
Si vuole realizzare un sistema informativo per la gestione e la consultazione della programmazione delle sale
cinematografiche via web
Frasi relative al palinsesto
L’applicazione deve gestire il palinsesto, per ogni film in programmazione va indicato la data, gli orari, in
quale sala, l’eventuale prima visione e il titolo del film che verrà proiettato.
Frasi relative ai Film
Per ogni film va indicato il titolo del film, l’eventuale grafica (copertina del Film), l’anno e la nazione di
provenienza, il genere, il regista, la casa di produzione, l’eventuale trama, l’eventuale link e gli interpreti
principali
Frasi relative agli interpreti
Per ogni interprete va indicato il nome, il cognome, la data di nascita, il sesso, la nazionalità, il nome d’arte,
eventuali link e il personaggio interpretato nel film.
Frasi relative agli utenti registrati
L’utente registrato, dopo l’operazione di login attraverso l’uso di una username e di una password., può
accedere ad aree riservate, lasciare commenti e votazioni sui film può inoltre decidere se ricevere la
programmazione film attraverso e-mail o attraverso SMS secondo diversi criteri di invio, può anche
decidere di cancellarsi. Per ogni utente registrato va indicato il cognome, il nome, il sesso, la data e la città di
residenza, l’indirizzo e-mail e l’eventuale numero telefonico nonché i generi di film preferiti.
Frasi relative ai gestori
Per ogni gestore va indicato il cognome e il nome; l’identificazione e l’autentica avverranno attraverso l’uso
di una username e di una password.
7
3.1.4 Specifiche sulle operazioni Operazione Descrizione
1 Registrazione utente L’ utente inserisce autonomamente i suoi dati, in modo da poter accedere alle aree riservate e ricevere la programmazione film
2 Autenticazione utente L’ utente già registrato inserisce il proprio username e password in modo da autenticare la sua identità e poter procedere con le operazioni solo a lui consentite.
3 Autenticazione gestore Un gestore autentica la propria identità ed entra nella sezione di propria competenza.
4 Aggiornamento film Il gestore può inserire, modificare, cancellare i dati nella tabella film
5 Aggiornamento interprete Il gestore può inserire, modificare, cancellare i dati nella tabella interprete
6 Vista palinsesto Permette all'utente generico di vedere i film in programmazione
7 Compilazione palinsesto Permette al gestore di inserire i film presenti nella tabella film nella tabella palinsesto con data orari e sala proiezione
8 Vista scheda film Permette all'utente generico di richiamare la scheda informazione su film
9 lasciare commento-voto l'utente registrato può lasciare un commento critico sul film e un voto
10 Invio palinsesto sul genere preferito
L'utente registrato può ricevere (attraverso e-mail e/o sms) i film in programmazione il cui genere coincide con il genere preferito dall'utente
11 Invio palinsesto sulla prima visione
L'utente registrato può ricevere (attraverso e-mail e/o sms) i film in programmazione in prima visione
3.2 Progettazione concettuale La strategia seguita nella fase di modellazione concettuale è la TOP-DOWN: Dall’analisi dei requisiti si sono rappresentate tutte le informazioni in uno schema scheletro.
8
3.2.1 Schema Scheletro
Utente
Palinsesto
FilmVisione
Interpretazione
Composizione
InterpreteGestore
3.2.2 Passo iterativo, raffinamento In seguito sono stati effettuati dei raffinamenti successivi al fine di fornire una visione più dettagliata del progetto. Il risultato di tali operazioni è il seguente schema concettuale di tipo E-R, sul quale sono state effettuate le verifiche delle qualità seguenti:
� Correttezza: lo schema utilizza propriamente i costrutti messi a disposizione dal modello concettuale di riferimento;
� Completezza: lo schema rappresenta tutti i dati di interesse e tutte le operazioni; � Leggibilità: lo schema rappresenta i requisiti in maniera naturale e facilmente comprensibile � Minimalità: Tutte le specifiche sui dati sono rappresentate una sola volta nello schema.
9
Visione
Interpretazione
Composizione
UtenteUserName
Password
DataNascitaSesso
CognomeNome
Residenza
FlagInvioGenerePreferito
E-mailTelefono
Interprete
SessoNome
Nazionalità
Link
Film
Palinsesto
PrimaVisioneOrariData Sala
RegiaProduttoreNazioneAnnoDurataGenereFotoTrama
Id_filmTitolo
LinkDataInsert
voto
Commenti
Personaggio
(1,1)
(1,N)
(0,N) (0,N)
(0,N)
(0,N)
Gestore
Nome CognomePasswordUserNameDataNascita NomeDarte
(1,N)
Vincoli non esprimibili nel modello E-R
1. L’interprete può avere più parti nello stesso film
2. Orari proiezione film deve essere compatibile con la durata dei film (vedi scelte progetto)
3. Possono essere proiettati più film nello stesso giorno e nella stessa sala solo in intervalli temporali
compatibili
4. I valori dell’attributo Genere dell’entità Film e l’attributo GenerePreferito dell’entità Utente devono
appartenere allo stesso insieme atomico {avventura, azione, animazione, commedia, drammatico,
fantastico, giallo, horror, musicale, sentimentale, storica, western}
10
Scelte fatte nella fase di progettazione concettuale
Attributo Orari come stringa e non come attributo multivalore di tipo TIME.
Questa scelta è stata fatta visto l’interesse del gestore di non automatizzare la procedura degli orari
spettacolo visto la dinamicità della realtà da rappresentare dipendente da diversi fattori
3.3 Progetto logico L’attività di progettazione logica è suddivisa in due fasi:
� Ristrutturazione dello schema E/R E’ indipendente dal modello logico e consiste in una semplificazione dello schema E/R, basata su criteri di ottimizzazione dello schema.
� Progetto logico relazionale
Questa fase è riferita al modello logico relazionale e porta alla vera e propria trasformazione dello schema E/R semplificato nello schema relazionale.
Prima di procedere, è importante effettuare una valutazione del carico di lavoro previsto sul database, considerando sia la dimensione dei dati da gestire (tavola dei volumi) che le caratteristiche delle operazioni che si stima saranno eseguite. Ricordiamo che il costo di una operazione è dato dal numero di occorrenze di entità e associazioni che mediamente vanno visitate per rispondere ad una operazione sulla base di dati. Quindi per caratteristiche delle operazioni si intende:
• tipo dell’operazione (interattiva o batch); • frequenza (numero medio di esecuzioni in un certo intervallo di tempo); • dati coinvolti (entità e/o associazioni).
Tali caratteristiche possono essere descritte facendo uso di opportune tabelle:
� tavola delle operazioni
� tavola degli accessi per ciascuna delle operazioni previste.
11
3.3.1 Tavole
Tavola dei volumi
Concetto <Nome> Tipo E/R Volume <Dim>
Utente
Visione
Film
Interprete
Interpretazione
Palinsesto
Composizione
Gestore
E
R
E
E
R
E
R
E
2000
10000
1000
1000
3000
1000
1000
5
Tavola delle operazioni
1
2
3
4
5
6
7
8
9
10
11
Operazione Tipo Frequenza
Registrazione utente
Autenticazione utente
Autenticazione gestore
Aggiornamento film
Aggiornamento interprete
Vista palinsesto
Compilazione palinsesto
Vista scheda film
lasciare commento-voto
Invio palinsesto sul genere preferito
Invio palinsesto sulla prima visione
I
I
I
I
I
I
I
I
I
B
B
50 alla settimana
50 alla settimana
1 alla settimana
1 alla settimana
1 alla settimana
1000 al giorno
1 alla settimana
1000 al giorno
200 alla settimana
300 alla settimana
100 alla settimana
5000*20=10000 Supponendo che mediamente in un anno dei 2000 utenti registrati, 500 lasciano commenti su 20 film
1000*3=3000 Considerando che per ogni film ci sono mediamente 3 interpreti principali
I dati nel palinsesto vengono mantenuti per un anno Considerando mediamente 1 film per sala. Mediamente 3 sale disponibili
12
Tavola degli Accessi
Concetto Costrutto<E/R> Accessi TipoAccesso<L/R>
Operazione 1
Legenda: L = Lettura; S = Scrittura
13
3.3.2 Ristrutturazione dello schema E-R E’ una fase indipendente dal modello logico scelto e si basa su criteri di ottimizzazione dello schema e di semplificazione della fase di traduzione. In particolare, in tale fase sono state effettuate:
� Eliminazione di attributi multivalore: Il modello relazionale non permette di rappresentare direttamente attributi multivalore. Si può eliminare un attributo multivalore introducendo una entità e una relazione.
� Sono stati introdotti identificatori ad hoc (Id) per non usare chiavi complesse nel collegamento delle
tabelle (chiavi composte da più attributi o basate su stringhe)
Utente
GenerePreferito
(1,N)
Utente
Genere
(1,N)
GeneriPreferiti
Genere
(1,N)
Scelte di progettazione fatte
Invece di introdurre una nuova entità e una nuova relazione si è deciso di rendere l’attributo GenerePreferito
un attributo semplice scegliendo come dominio l’insieme SET (Avventura, Azione, Animazione, Commedia,
Drammatico, Fantastico, Giallo, Horror, Musicale, Sentimentale, Storica, Western). Così ogni utente può
scegliere più generi preferiti. Il problema di questa soluzione è il realizzo delle operazioni 10 e 11 che non
saranno delle semplici query . In questo caso la soluzione più ovvia è gestire l’op10 e 11 da programma
oppure utilizzare la funzione FIND_IN_SET nella query (problema di portabilità). Si è optato per
quest’ultima soluzione. Così per risolvere l’operazione 10 è necessario la seguente query:
select Nome,Email,FlagInvio,Titolo,genere,Data,orari,sala,flagPrimaVisione from film,palinsesto,utente
where palinsesto.film=film.id_film and FlagInvio<>'n' and FIND_IN_SET(genere,generepreferito)>0
che mi fornisce:
1 gli utenti che vogliono ricevere film il cui genere coincide con il genere preferito dall’utente
2 Il relativo titolo del film con la data e gli orari di proiezione.
14
Come risultato della fase di ristrutturazione, è stato realizzato il seguente schema E-R:
Visione
Interpretazione
Composizione
UtenteUserName
Password
DataNascitaSesso
CognomeNome
Residenza
FlagInvioGenerePreferito
E-mailTelefono
Interprete
DataNascitaSessoNomeDarte
NomeNazionalità
LinkId_interprete
Film
Palinsesto
PrimaVisioneOrariData
Id_palinsestoSala
RegiaProduttoreNazioneAnnoDurataGenereFotoTrama
Id_filmTitolo
LinkDataInsert
voto
Commenti
Personaggio
(1,1)
(1,N)
(0,N) (0,N)
(0,N)
(0,N)
Gestore
Nome CognomePasswordUserName
Id_utente
Id_gestore
3.3.3 Traduzione verso il modello relazionale La seconda parte della progettazione logica si occupa della traduzione dallo schema E-R ristrutturato ad uno schema logico equivalente del modello relazionale. In base alle regole relative alle associazioni uno a molti, molti a molti è stato prodotto il seguente schema relazionale: Utente (Id_utente, Password, UserName, Nome, Cognome, Sesso, DataNascita, Residenza, FlagInvio, GenerePreferito, E-mail, Telefono) Visione (Utente, Film, Voto, Commento) Film (Id_film, Titolo, Regia, Produttore, Nazione, Anno, Durata, Genere, Foto, Trama, Link, DataInsert)
15
Vincolo di integrità referenziale fra: Visione.Utente e Utente.Id_utente Visione.Film e Film.Id_film Interprete (Id_interprete, Nome, NomeDarte, Sesso, DataNascita, Nazionalità, Link) Interpretazione (Interprete, Film, Personaggio) Per Interpretazioni la chiave è l’insieme di attributi {Interprete,Film,Personaggio} Si assume che un Interprete possa avere più parti in un film Per garantire l’integrità dei dati occorre definire un vincolo di integrità referenziale Interpretazione.Interprete e Interprete.Id_interprete Interpretazione.Film e Film.Id_film (Possono comunque esistere film senza interpreti e interpreti senza film) Palinsesto (Id_palinsesto, Film, Data, Orari, Sala, PrimaVisione) Vincolo di integrità referenziale fra: Palinsesto.Film e Film.Id_film La chiave per la relazione Composizione è solo l’identificatore dell’entità Palinsesto perché la cardinalità verso la relazione è (1,1). La relazione Palinsesto e Composizione hanno un’unica chiave e quindi possono essere fuse insieme.
VisioneUtente Film(0,N) (0,N)
InterpretazioneInterprete Film(0,N) (0,N)
ComposizioneFilm Palinsesto(1,N) (1,1)
16
LinkNazionalitàDataNascitaSessoNomeDarteNomeId_interprete LinkNazionalitàDataNascitaSessoNomeDarteNomeId_interprete
PersonaggioFilmInterprete PersonaggioFilmInterprete
DataInsertLinkTramaFotoGenereDurataAnnoNazioneProduttoreRegiaTitoloId_film DataInsertLinkTramaFotoGenereDurataAnnoNazioneProduttoreRegiaTitoloId_film
TelefonoE-mailGenerePreferitoFlagInvioResidenzaDataNascitaSessoCognomeNomeUserNamePasswordId_utente TelefonoE-mailGenerePreferitoFlagInvioResidenzaDataNascitaSessoCognomeNomeUserNamePasswordId_utente
CommentoVotoFilmUtente CommentoVotoFilmUtente PrimaVisioneSalaOrariDataFilmId_palinsesto PrimaVisioneSalaOrariDataFilmId_palinsesto
CognomeNomePasswordUserNameId_gestore CognomeNomePasswordUserNameId_gestore
Gestore
Interprete
Interpretazione
Palinsesto
Film
Visione
Utente
# MySQL-Front Dump 1.22 # # Host: localhost Database: dbcinema #-------------------------------------------------------- # Server version 3.22.34-shareware-debug # # Table structure for table 'film' # CREATE TABLE film ( Id_film mediumint(8) unsigned NOT NULL DEFAULT '0' auto_increment, Titolo varchar(40) NOT NULL DEFAULT '' , Regia varchar(40) , Produttore varchar(40) , Nazione varchar(20) , Anno year(4) , Durata smallint(5) unsigned , Genere enum ('Avventura', 'Azione', 'Animazione', 'Commedia', 'Drammatico', 'Fantastico', 'Giallo', 'Horror', 'Musicale', 'Sentimentale', 'Storica', 'Western') , Trama text , Link varchar(60) , DataInsert date , Foto varchar(60) , PRIMARY KEY (Id_film) );
17
# # Table structure for table 'interpretato' # CREATE TABLE interpretato ( Interprete mediumint(8) unsigned NOT NULL DEFAULT '0' , Film mediumint(8) unsigned NOT NULL DEFAULT '0' , Personaggio varchar(60), UNIQUE(Interprete,Film) ); # # Table structure for table 'interprete' # CREATE TABLE interprete ( Id_interprete mediumint(8) unsigned NOT NULL DEFAULT '0' auto_increment, Nome varchar(40) , NomeDarte varchar(40) , Nazione varchar(40) , DataNascita date , Sesso set('f','m') NOT NULL DEFAULT '' , Link varchar(60) , PRIMARY KEY (Id_interprete) ); # # Table structure for table 'palinsesto' # CREATE TABLE palinsesto ( Id_palinsesto mediumint(8) unsigned NOT NULL DEFAULT '0' auto_increment, Film mediumint(8) unsigned NOT NULL DEFAULT '0' , Data date NOT NULL DEFAULT '0000-00-00' , Orari varchar(50) NOT NULL DEFAULT '' , Sala tinyint(3) unsigned NOT NULL DEFAULT '1' , FlagPrimaVisione set('1','0') , PRIMARY KEY (Id_palinsesto), UNIQUE (Sala,Data,Orari) ); # # Table structure for table 'utente' # CREATE TABLE utente ( Id_utente mediumint(8) unsigned NOT NULL DEFAULT '0' auto_increment, UserName varchar(20) NOT NULL DEFAULT '' , Password varchar(20) NOT NULL DEFAULT '', Nome varchar(20) , Cognome varchar(20) , DataNascita date , Citta varchar(30) ,
18
Telefono varchar(12) , Sesso set('f','m') NOT NULL DEFAULT '' , Email varchar(40) , FlagInvio enum('e','t','n') NOT NULL DEFAULT 'e' , GenerePreferito set ('Avventura', 'Azione', 'Animazione', 'Commedia', 'Drammatico', 'Fantastico', 'Giallo', 'Horror', 'Musicale', 'Sentimentale', 'Storica', 'Western') , PRIMARY KEY (Id_utente), UNIQUE (UserName,Password) ); # # Table structure for table 'visione' # CREATE TABLE visione ( Utente mediumint(8) unsigned NOT NULL DEFAULT '0' , Film mediumint(8) unsigned NOT NULL DEFAULT '0' , Voto tinyint(3) unsigned , Commenti text , UNIQUE (Utente,Film) );
Author: Ing. Nelson Firmani ([email protected]) Last update: 02/03/2006