SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
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 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
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
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
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
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
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
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
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
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
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
Tavola degli Accessi
                           Concetto     Costrutto<E/R>       Accessi   TipoAccesso<L/R>
Operazione 1




Legenda: L = Lettura; S = Scrittura


                                                                                     12
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
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
(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
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
#
# 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
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

Weitere ähnliche Inhalte

Ähnlich wie REALIZZAZIONE DEL PROGETTO CINEMA ON-LINE CineWeb

AUGMENTED REALITY EXPERT
AUGMENTED REALITY EXPERTAUGMENTED REALITY EXPERT
AUGMENTED REALITY EXPERTMirko Compagno
 
Model view controller: un pattern per l’interaction design
Model view controller: un pattern per l’interaction designModel view controller: un pattern per l’interaction design
Model view controller: un pattern per l’interaction designStefano Bussolon
 
Curriculum di Maurizio Amizzoni
Curriculum di Maurizio AmizzoniCurriculum di Maurizio Amizzoni
Curriculum di Maurizio Amizzonimurzo63
 
Wi-Cobol: modernizzazione programmi scritti in COBOL per IBM i/AS400/iSeries/...
Wi-Cobol: modernizzazione programmi scritti in COBOL per IBM i/AS400/iSeries/...Wi-Cobol: modernizzazione programmi scritti in COBOL per IBM i/AS400/iSeries/...
Wi-Cobol: modernizzazione programmi scritti in COBOL per IBM i/AS400/iSeries/...Faq400 - la Community IBM i italiana
 
Supsi dti abstract_informatica_2012
Supsi dti abstract_informatica_2012Supsi dti abstract_informatica_2012
Supsi dti abstract_informatica_2012L Dr
 
CinePresi (abstract)_Luca Marra
CinePresi (abstract)_Luca MarraCinePresi (abstract)_Luca Marra
CinePresi (abstract)_Luca MarraCATTID "Sapienza"
 
Formazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via webFormazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via webEvolutionBook S.r.l.
 
I4 school qrpark_promoey_piazza
I4 school qrpark_promoey_piazzaI4 school qrpark_promoey_piazza
I4 school qrpark_promoey_piazzaCSP Scarl
 
FLSS: documento di design
FLSS: documento di designFLSS: documento di design
FLSS: documento di designSara M
 
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...diegohusu
 
La scelta di Plone per la comunicazione istituzionale dell'INAF
La scelta di Plone per la comunicazione istituzionale dell'INAFLa scelta di Plone per la comunicazione istituzionale dell'INAF
La scelta di Plone per la comunicazione istituzionale dell'INAFPlone for Research and University
 
Presentazione skolelinux
Presentazione skolelinuxPresentazione skolelinux
Presentazione skolelinuxSlogin Coop
 
Panoramica sulla piattaforma di digital signage Web Signage
Panoramica sulla piattaforma di digital signage Web SignagePanoramica sulla piattaforma di digital signage Web Signage
Panoramica sulla piattaforma di digital signage Web Signagewebsignage
 
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPSLezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPSGianluigi Cogo
 
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Mattia De Bernardi
 
Introduzione alla struttura degli agenti conversazionali
Introduzione alla struttura degli agenti conversazionaliIntroduzione alla struttura degli agenti conversazionali
Introduzione alla struttura degli agenti conversazionaliFederico Bonelli
 

Ähnlich wie REALIZZAZIONE DEL PROGETTO CINEMA ON-LINE CineWeb (20)

AUGMENTED REALITY EXPERT
AUGMENTED REALITY EXPERTAUGMENTED REALITY EXPERT
AUGMENTED REALITY EXPERT
 
Model view controller: un pattern per l’interaction design
Model view controller: un pattern per l’interaction designModel view controller: un pattern per l’interaction design
Model view controller: un pattern per l’interaction design
 
Micro Applicazioni Mobile
Micro Applicazioni MobileMicro Applicazioni Mobile
Micro Applicazioni Mobile
 
Curriculum di Maurizio Amizzoni
Curriculum di Maurizio AmizzoniCurriculum di Maurizio Amizzoni
Curriculum di Maurizio Amizzoni
 
Wi-Cobol: modernizzazione programmi scritti in COBOL per IBM i/AS400/iSeries/...
Wi-Cobol: modernizzazione programmi scritti in COBOL per IBM i/AS400/iSeries/...Wi-Cobol: modernizzazione programmi scritti in COBOL per IBM i/AS400/iSeries/...
Wi-Cobol: modernizzazione programmi scritti in COBOL per IBM i/AS400/iSeries/...
 
Supsi dti abstract_informatica_2012
Supsi dti abstract_informatica_2012Supsi dti abstract_informatica_2012
Supsi dti abstract_informatica_2012
 
CinePresi (abstract)_Luca Marra
CinePresi (abstract)_Luca MarraCinePresi (abstract)_Luca Marra
CinePresi (abstract)_Luca Marra
 
Formazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via webFormazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via web
 
I4 school qrpark_promoey_piazza
I4 school qrpark_promoey_piazzaI4 school qrpark_promoey_piazza
I4 school qrpark_promoey_piazza
 
FLSS: documento di design
FLSS: documento di designFLSS: documento di design
FLSS: documento di design
 
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
 
La scelta di Plone per la comunicazione istituzionale dell'INAF
La scelta di Plone per la comunicazione istituzionale dell'INAFLa scelta di Plone per la comunicazione istituzionale dell'INAF
La scelta di Plone per la comunicazione istituzionale dell'INAF
 
Self-publishing - Creati il catalogo con Your Operator
Self-publishing - Creati il catalogo con Your OperatorSelf-publishing - Creati il catalogo con Your Operator
Self-publishing - Creati il catalogo con Your Operator
 
Presentazione skolelinux
Presentazione skolelinuxPresentazione skolelinux
Presentazione skolelinux
 
Panoramica sulla piattaforma di digital signage Web Signage
Panoramica sulla piattaforma di digital signage Web SignagePanoramica sulla piattaforma di digital signage Web Signage
Panoramica sulla piattaforma di digital signage Web Signage
 
Easyglass
EasyglassEasyglass
Easyglass
 
Easyglass
EasyglassEasyglass
Easyglass
 
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPSLezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
 
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
 
Introduzione alla struttura degli agenti conversazionali
Introduzione alla struttura degli agenti conversazionaliIntroduzione alla struttura degli agenti conversazionali
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