REALIZZAZIONE DEL PROGETTO CINEMA ON-LINE CineWeb

  • 345 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
345
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. REALIZZAZIONE DEL PROGETTO CINEMA ON-LINE “CineWeb” Ing. Nelson Firmani Dipartimento di Ingegneria Elettrica Università di L’Aquila, AQ 67040, ItalyPremessa Questa relazione accompagna il progetto “CineWeb” . Contiene una breve presentazione del sito, seguitadalla completa documentazione sulla progettazione del modello relazionale che sta alla sua base. 1
  • 2. 2 PresentazioneCineWeb è un sistema per la gestione e la consultazione della programmazione delle sale cinematografichevia web.Cineweb come portale per linformazione:Il sito dovrà fornire una presentazione generale della sala cinematografica nonché dei servizi offerti. Inoltrecon l’obiettivo di assistere lo spettatore, verranno forniti informazioni relative ai film in programmazione inogni singola sala, gli orari, il costo delbiglietto e la disponibilità di tariffeagevolate in giorni particolari dellasettimana, oppure per categoriespecifiche (studenti, militari, ecc).Per quanto riguarda le pellicole inprogrammazione, è possibilerichiamare la scheda film con lacopertina, lanno e la nazione diprovenienza, il genere, il regista, lacasa di produzione, la trama eeventuali giudizi critici. Inoltre perogni interprete è disponibile lascheda anagrafica e il personaggiointerpretato.Possibilità di ricerche in archivio pergenere film (ad esempio, tutti i filmdrammatici in programmazione) perinterpreti (ad esempio, tutti i film inprogrammazione in cui recita MonicaBellucci) per regista e diversamentecombinate 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 dopol’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 uninterfaccia intuitiva, tutte le operazioni di inserimento, aggiornamento, cancellazioni dei dati contenuti nel database sono facili e veloci da effettuare. Gestione programmazione spettacoli. Lapplicazione guida interattivamente il gestore nella compilazione del modulo di programmazione film. Gestione della mailinglist degli iscritti Lapplicativo consente di ricercare i dati e le caratteristiche principali degli utenti iscritti al fine di personalizzare la propria offerta cinematografica nonchè linvio di messaggi di sponsor. Possibilità dell’amministratore di statistiche sul film più apprezzato dagli utentiSoluzione tecnologiche adottateLa soluzione adottata per conseguire gli obiettivi sopra descritti si basa sull’utilizzo di pagine webdinamiche, generate a partire dalle informazioni contenute in una base dati, e pagine web statiche per quantoconcerne le informazioni relative a: presentazione sala, servizi offerti, orari apertura chiusura, il costo delbiglietto, la disponibilità di tariffe agevolate in giorni particolari della settimana, oppure per categoriespecifiche (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 elinguaggio di scripting PHP unitamente a DBMS relazionale. 3
  • 4. 3 Progettazione3.1 Analisi dei requisiti3.1.1 Requisiti informali CineWeb1 Si vuole realizzare un sistema informativo per la gestione e la consultazione della programmazione delle2 sale cinematografiche via web3 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 (copertina6 del Film), l’anno e la nazione di provenienza, il genere, il regista, la casa di produzione, l’eventuale7 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 e11 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 la14 programmazione film attraverso e-mail o attraverso SMS secondo diversi criteri di invio, può anche15 decidere di cancellarsi. Per ogni utente iscritto si dovrà conoscere il cognome, il nome, il sesso, la data e16 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 nel18 catalogo film, anagrafica interpreti e nel palinsesto.19 L’applicativo deve consentire al gestore di ricercare le informazioni relative agli utenti registrati ed20 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 attraverso22 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 in24 programmazione) per interpreti (ad esempio, tutti i film in programmazione in cui recita Monica25 Bellucci) per regista ecc.26Tabella 1 4
  • 5. 3.1.2 Glossario dei terminiPer una migliore comprensione e precisione dei termini che sono stati utilizzati nella descrizione dei requisitirealizzata precedentemente, è stato ritenuto utile definire il seguente glossario dei termini:Termine Descrizione Sinonimi CollegamentiPalinsesto Passaggio di Film Film in Film programmazioneFilm Film presente in archivio Catalogo Film Palinsesto, Interpreti, UtentiInterprete Interprete del Film Anagrafica Film interpretiUtente registrato Una persona che si è registrata Utente iscritto FilmUtente generico Si tratta di una persona che non si è Utente ancora registrata o autenticataGestore Si tratta di una persona che dopo Amministratore l’autenticazione potrà gestire tutti gli aspetti della base di dati;Tabella 23.1.3 Decomposizione del testo dei requisitiLa 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 riferimentoall’eliminazione dei sinonimi. Infine, è molto utile in questa fase decomporre il testo in gruppi di frasiomogenee, relative cioè agli stessi concetti. Il risultato di questa fase di modifica e ristrutturazione è ilseguente: 5
  • 6. Frasi di carattere generaleSi vuole realizzare un sistema informativo per la gestione e la consultazione della programmazione delle salecinematografiche via web Frasi relative al palinsestoL’applicazione deve gestire il palinsesto, per ogni film in programmazione va indicato la data, gli orari, inquale sala, l’eventuale prima visione e il titolo del film che verrà proiettato. Frasi relative ai FilmPer ogni film va indicato il titolo del film, l’eventuale grafica (copertina del Film), l’anno e la nazione diprovenienza, il genere, il regista, la casa di produzione, l’eventuale trama, l’eventuale link e gli interpretiprincipali Frasi relative agli interpretiPer 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 registratiL’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 laprogrammazione film attraverso e-mail o attraverso SMS secondo diversi criteri di invio, può anchedecidere di cancellarsi. Per ogni utente registrato va indicato il cognome, il nome, il sesso, la data e la città diresidenza, l’indirizzo e-mail e l’eventuale numero telefonico nonché i generi di film preferiti. Frasi relative ai gestoriPer ogni gestore va indicato il cognome e il nome; l’identificazione e l’autentica avverranno attraverso l’usodi una username e di una password. 6
  • 7. 3.1.4 Specifiche sulle operazioni Operazione Descrizione1 Registrazione utente L’ utente inserisce autonomamente i suoi dati, in modo da poter accedere alle aree riservate e ricevere la programmazione film2 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 film5 Aggiornamento interprete Il gestore può inserire, modificare, cancellare i dati nella tabella interprete6 Vista palinsesto Permette allutente generico di vedere i film in programmazione7 Compilazione palinsesto Permette al gestore di inserire i film presenti nella tabella film nella tabella palinsesto con data orari e sala proiezione8 Vista scheda film Permette allutente generico di richiamare la scheda informazione su film9 lasciare commento-voto lutente registrato può lasciare un commento critico sul film e un voto10 Invio palinsesto sul genere Lutente registrato può ricevere (attraverso e-mail e/o sms) i film in preferito programmazione il cui genere coincide con il genere preferito dallutente11 Invio palinsesto sulla prima Lutente registrato può ricevere (attraverso e-mail e/o sms) i film in visione programmazione in prima visione3.2 Progettazione concettualeLa 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 Palinsesto3.2.2 Passo iterativo, raffinamentoIn seguito sono stati effettuati dei raffinamenti successivi al fine di fornire una visione più dettagliata delprogetto. Il risultato di tali operazioni è il seguente schema concettuale di tipo E-R, sul quale sono stateeffettuate 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 NazioneUserName (0,N) (0,N) Anno Utente Visione Film DurataPassword 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 concettualeAttributo 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 orarispettacolo visto la dinamicità della realtà da rappresentare dipendente da diversi fattori3.3 Progetto logicoL’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 operazioniche si stima saranno eseguite. Ricordiamo che il costo di una operazione è dato dal numero di occorrenze dientità 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 Frequenza1 Registrazione utente I 50 alla settimana2 Autenticazione utente I 50 alla settimana3 Autenticazione gestore I 1 alla settimana4 Aggiornamento film I 1 alla settimana5 Aggiornamento interprete I 1 alla settimana6 Vista palinsesto I 1000 al giorno7 Compilazione palinsesto I 1 alla settimana8 Vista scheda film I 1000 al giorno9 lasciare commento-voto I 200 alla settimana10 Invio palinsesto sul genere preferito B 300 alla settimana11 Invio palinsesto sulla prima visione B 100 alla settimana 11
  • 12. Tavola degli Accessi Concetto Costrutto<E/R> Accessi TipoAccesso<L/R>Operazione 1Legenda: L = Lettura; S = Scrittura 12
  • 13. 3.3.2 Ristrutturazione dello schema E-RE’ una fase indipendente dal modello logico scelto e si basa su criteri di ottimizzazione dello schema e disemplificazione 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 fatteInvece di introdurre una nuova entità e una nuova relazione si è deciso di rendere l’attributo GenerePreferitoun 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 nonsaranno delle semplici query . In questo caso la soluzione più ovvia è gestire l’op10 e 11 da programmaoppure utilizzare la funzione FIND_IN_SET nella query (problema di portabilità). Si è optato perquest’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,utentewhere palinsesto.film=film.id_film and FlagInvio<>n and FIND_IN_SET(genere,generepreferito)>0che mi fornisce:1 gli utenti che vogliono ricevere film il cui genere coincide con il genere preferito dall’utente2 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 Sala3.3.3 Traduzione verso il modello relazionaleLa seconda parte della progettazione logica si occupa della traduzione dallo schema E-R ristrutturato ad unoschema 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 PalinsestoVincolo di integrità referenziale fra:Visione.Utente e Utente.Id_utenteVisione.Film e Film.Id_filmInterprete (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 filmPer garantire l’integrità dei dati occorre definire un vincolo di integrità referenzialeInterpretazione.Interprete e Interprete.Id_interpreteInterpretazione.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_filmLa 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 possonoessere 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