Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Progettazione database

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    21

    Progettazione database

    Buona sera
    dovrei realizzare una base dati per un cinema multisala questo è lo schema E_R che ho realizzato

    questo è invece il modello relazionale



    Cliente(Username,Nome,Cognome,Email,Password,Sesso ,Cellulare,DataDiNascita)


    Film ( Titolo,Genere,Durata,Regista,Trailer ,Trama,Immagine)


    Sala (Idsala,NumeroPosti)


    Posto (Idposto,Sala*,Stato1,Stato2,Stato3)


    Proiezione (IDproiezione, DataProiezione, FasciaOraria,PrezzoBase, _3d,Film*)


    Biglietto (IDbiglietto,Prezzo,DataAcquisto,OraAcquisto,Posto ,Cliente*,Proiezione*)


    Ubicazione (Sala*,Proiezione*)



    in pratica quando quando devo settare ad occupato il posto in una sala per una proiezione , mi risulta occuparato anche per un altra proiezione (che si svolge nella stessa sala)
    in questo caso la tabella posto e la tabella sala hanno cardinalita N-1 (in ogni sala ci sono N posti ,ogni singolo posto si trova in una sala)

    ho provato anche a fare in modo che ci sia cardinalita N-N ma mi ritrovo sempre nella stessa situazione

    ps:

    ogni proiezione di puo svolgere in N sale, e in ogni sala si possono svolgere N proiezioni , il collegamento tra queste 2 tabelle è dato dalla relazione UBICAZIONE

  2. #2
    che vuol dire "in pratica quando quando devo settare ad occupato il posto in una sala per una proiezione , mi risulta occuparato anche per un altra proiezione (che si svolge nella stessa sala)" ????

    quando prenoti non indichi l'd della proiezione, che dovrebbe essere univoco?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    21
    grazie per la precedente risposta adesso mi spiego meglio....


    eseguo questa query per settare a occupato (stato1 =0 se occupato ,1 se è libero) il posto con idposto =1 per la proiezione numero 14 (che si svolge nella sala B)


    UPDATE posto
    SET stato1=0




    WHERE IDposto=1 and sala=(




    select IDsala
    from sala s, proiezione p, ubicazione u
    where s.IDsala = u.sala and u.proiezione =p.IDproiezione and proiezione=14);


    adesso quando vado a svolgere quest altra query per vedere i posti della proiezione 18 che si svolge anche essa nella sala B mi da anche qua il posto di id 1 occupato (cioè uguale a 0)


    select *
    from posto
    where sala= (


    select IDsala
    from sala s, proiezione p, ubicazione u
    where s.IDsala = u.sala and u.proiezione =p.IDproiezione and proiezione=18);
    ma cosi non dovrebbe essere ma non riesco a capire come risolvere questo mio errore di progettazione

  4. #4
    accertati che la subquery dell'update ti riporti UN SOLO id

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    21
    si mi restituisce un unico risultato (id sala = B)

    anche perchè nella where le altre condizioni sono messe in and con ' proiezione=14 ' che essendo univoco mi deve restituire per forza un risultato, un altro motivi è che quando scrivo questa condizione 'and sala=( ....subquery ) ' nel update la subquery deve per forza restituire un solo valore se no mi darebbe errore

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Posso dire una cosa, dal basso del fatto che sto studiando questa cosa in questo momento? Non mi sembra un DB molto ben progettato. La prima cosa che mi è saltata all'occhio è il fatto che le entità sono gravate da un numero non basso di attributi e la ridondanza di alcuni dati. Ad esempio, "GENERE" meriterebbe di essere un'entità a parte, per evitare di ripetere tante volte la stessa informazione. Possiamo contare infatti al massimo un 10-15 generi di film. Anche "REGISTA" potrebbe essere un'entità a parte, perché è plausibile che uno stesso regista abbia diretto più di un film.
    Di più, al momento, non so dirti

  7. #7
    corretto. il posto è uno, indipendentemente da cosa proietti e quando. ti serve una terza tabella che incroci posti e proiezioni

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.