Introduzione alla struttura degli agenti conversazionali
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.
1
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.
2
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.
3
4. 3 Progettazione
3.1 Analisi dei requisiti
3.1.1 Requisiti informali
CineWeb
1 Si vuole realizzare un sistema informativo per la gestione e la consultazione della programmazione delle
2 sale cinematografiche via web
3 L’applicazione deve gestire il palinsesto relativo ai film in programmazione, interessa conoscere la data,
4 gli orari, in quale sala, l’eventuale prima visione e il titolo del film che verrà proiettato.
5 Per ogni film in programmazione deve essere disponibile il titolo del film, l’eventuale grafica (copertina
6 del Film), l’anno e la nazione di provenienza, il genere, il regista, la casa di produzione, l’eventuale
7 trama, l’eventuale link e gli interpreti principali; per ogni interprete deve essere disponibile l’anagrafica,
8 il nome d’arte, eventuali link e il personaggio interpretato nel film.
9 L’applicazione prevede tre tipi di figure: utente generico, utente registrato, gestore.
10 L’utente generico accede al sistema senza effettuare l’operazione di login può consultare il palinsesto e
11 può registrarsi via web.
12 L’utente registrato, dopo l’operazione di login attraverso l’uso di una username e di una password., può
13 accedere ad aree riservate, lasciare commenti e votazioni sui film può inoltre decidere se ricevere la
14 programmazione film attraverso e-mail o attraverso SMS secondo diversi criteri di invio, può anche
15 decidere di cancellarsi. Per ogni utente iscritto si dovrà conoscere il cognome, il nome, il sesso, la data e
16 la città di residenza, l’indirizzo e-mail e l’eventuale numero telefonico nonché i generi di film preferiti.
17 Il gestore, dopo il login, deve essere in grado di modificare aggiungere ed eliminare le informazioni nel
18 catalogo film, anagrafica interpreti e nel palinsesto.
19 L’applicativo deve consentire al gestore di ricercare le informazioni relative agli utenti registrati ed
20 eventualmente eliminarle. Inoltre il gestore può fare statistiche sul film più apprezzato, sul genere.
21 Del gestore si dovrà conoscere il cognome e il nome; l’identificazione e l’autentica avverranno attraverso
22 l’uso di una username e di una password.
23 Per tutti gli utenti devono essere possibili ricerche per genere Film (ad esempio, tutti i film drammatici in
24 programmazione) per interpreti (ad esempio, tutti i film in programmazione in cui recita Monica
25 Bellucci) per regista ecc.
26
Tabella 1
4
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 Film
programmazione
Film Film presente in archivio Catalogo Film Palinsesto, Interpreti, Utenti
Interprete Interprete del Film Anagrafica Film
interpreti
Utente registrato Una persona che si è registrata Utente iscritto Film
Utente generico Si tratta di una persona che non si è Utente
ancora registrata o autenticata
Gestore Si tratta di una persona che dopo Amministratore
l’autenticazione potrà gestire tutti gli
aspetti della base di dati;
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:
5
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.
6
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 L'utente registrato può ricevere (attraverso e-mail e/o sms) i film in
preferito programmazione il cui genere coincide con il genere preferito
dall'utente
11 Invio palinsesto sulla prima L'utente registrato può ricevere (attraverso e-mail e/o sms) i film in
visione 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.
7
8. 3.2.1 Schema Scheletro
Gestore Interprete
Interpretazione
Utente Visione Film
Composizione
Palinsesto
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.
8
9. DataNascita Sesso NomeDarte
UserName Password Nome Cognome Nome
Nazionalità
Link
Interprete
Gestore
(0,N)
Personaggio
Interpretazione
Sesso (0,N)
Cognome DataNascita Id_film
Nome voto Titolo
Residenza
Regia
Produttore
Nazione
UserName (0,N) (0,N) Anno
Utente Visione Film Durata
Password Genere
Foto
Trama
(1,N)
Commenti Link
Telefono FlagInvio DataInsert
E-mail
GenerePreferito
(1,N)
Composizione
(1,1)
Palinsesto
PrimaVisione
Data Orari Sala
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}
9
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.
10
11. 3.3.1 Tavole
5000*20=10000
Supponendo che mediamente
in un anno dei 2000 utenti
registrati, 500 lasciano
Tavola dei volumi commenti su 20 film
Concetto <Nome> Tipo E/R Volume <Dim>
Utente E 2000
1000*3=3000
Visione R 10000 Considerando che per ogni
film ci sono mediamente 3
Film E 1000 interpreti principali
Interprete E 1000
Interpretazione R 3000
Palinsesto E 1000 I dati nel palinsesto vengono
mantenuti per un anno
Composizione R 1000 Considerando mediamente 1
film per sala. Mediamente 3
Gestore E 5 sale disponibili
Tavola delle operazioni
Operazione Tipo Frequenza
1 Registrazione utente I 50 alla settimana
2 Autenticazione utente I 50 alla settimana
3 Autenticazione gestore I 1 alla settimana
4 Aggiornamento film I 1 alla settimana
5 Aggiornamento interprete I 1 alla settimana
6 Vista palinsesto I 1000 al giorno
7 Compilazione palinsesto I 1 alla settimana
8 Vista scheda film I 1000 al giorno
9 lasciare commento-voto I 200 alla settimana
10 Invio palinsesto sul genere preferito B 300 alla settimana
11 Invio palinsesto sulla prima visione B 100 alla settimana
11
12. Tavola degli Accessi
Concetto Costrutto<E/R> Accessi TipoAccesso<L/R>
Operazione 1
Legenda: L = Lettura; S = Scrittura
12
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
(1,N)
Utente
GeneriPreferiti
(1,N)
(1,N)
GenerePreferito
Genere
Genere
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.
13
14. Come risultato della fase di ristrutturazione, è stato realizzato il seguente schema E-R:
NomeDarte Sesso
DataNascita
UserName Password Nome Cognome Nome
Nazionalità
Id_gestore
Id_interprete
Link
Interprete
Gestore
(0,N)
Personaggio
Interpretazione
Sesso (0,N)
Cognome DataNascita Id_film
Nome voto Titolo
Residenza
Regia
Produttore
Nazione
UserName (0,N) (0,N) Anno
Utente Visione Film Durata
Password Genere
Foto
Trama
Id_utente Link
Commenti
Telefono FlagInvio DataInsert
E-mail
GenerePreferito
(1,N)
Composizione
(1,1)
Palinsesto
Id_palinsesto PrimaVisione
Data Orari Sala
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)
14
15. (0,N) (0,N)
Utente Visione Film
(0,N) (0,N)
Interprete Interpretazione Film
(1,N) (1,1)
Film Composizione Palinsesto
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.
15
16. Gestore
Id_gestore UserNa me Password No me Cognome
Inte rprete
Id_interprete No me No meDarte Sesso DataNascita Nazionalità Link
Interprete Film Personaggio
Inte rpretazione
Film
Id_film Titolo Regia Produttore Nazione Anno Durata Genere Foto Trama Link DataInsert
Visione Palinsesto
Utente Film Voto Co mmento Id_palinsesto Film Data Orari Sala Prima Visione
Utente
Id_utente Password UserNa me No me Cognome Sesso DataNascita Residenza FlagInvio GenerePreferito E-mail Telefono
# 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)
);
16
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) ,
17
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 (nfirmani@gmail.com)
Last update: 02/03/2006
18