PDA

View Full Version : [Schema entità/relazione] Non so come impostare una cosa


Nexus 6
23-09-2009, 11:59
Salve,
Ho un progetto che rappresenta un negozio online di vendita di film (qualsiasi supporto, dvd, bd, hddvd, umd) ogni film a le solite cose, registi, attori, codifiche audio/video, ecc.

http://img32.imageshack.us/img32/9657/82357167.jpg

Il problema ce l'ho tra cliente-ordini-film (cioè il prodotto).

In pratica, il prospetto finale vorrei fosse così:

Il cliente visualizza gli ordini:

ordine. 123
ordine. 983
ordine. n

clicca su un ordine qualsiasi e vorrei uscisse questo:

cod.Film titolo q.tà prezzo
1 star wars 2 12€
2 xxx 5 12€
3 indiana jones 1 12€



Come l'ho fatto io non mi esce questa cosa. Dovrei partiziona qualcosa? Fare della relazione "composto" un'entità?


Per MySql:

è da sempre che mi porta errore ogni volta che creo un dominio:

create domain long_string as varchar(20);

ogni create domain mi porta errore, errore si sintassi nel tuo MySql.

CwNd
24-09-2009, 01:01
ogni create domain mi porta errore, errore si sintassi nel tuo MySql.

Se non ricordo male la create domain non è implementata in mysql. Se ti interessa avere un dbms sql standard compilant ti conviene orientarti verso postregsql..

Per la domanda che hai posto, sinceramente nello schema er non vedo dove salvi il prezzo del film... Vedo male?

Nexus 6
24-09-2009, 10:42
A ecco, MySql non implementa "create domain" non lo sapevo.

Per il prezzo hai ragione non c'è nello schema, non l'ho messo perchè gli attributi di "Film" sono troppi e non ci entrava.

Allora questi sono i dati finali (dopo aver ristrutturato lo schema e/r e definizione dei vincoli intrarelazionali)

Schema finale del database

Cliente (ID, CF, Nome, Cognome, Data di nascita, sesso, nazione, città, indirizzo, numero civico, CAP, provincia, e-mail, telefono, cellulare, fax)
Film (CodProdotto, titolo, regista, genere, durata, anno di produzione, Paese, release, casa di produzione, tipo di supporto, regione, quantità, prezzo)
Video (Codifica video, formato video, Mbps, idFilm)
Audio (lingua, codifica audio, canali, Mbps, idFilm)
Sottotitoli (lingua, idFilm)
Registi (Nome, Cognome, nazionalità) mi sa che anche qui devo mettere "idFilm"?
Attori (Nome, Cognome, nazionalità, idFilm)
CasaProduttrice (idCP, nome)
Supporto (idSupporto, nome)
Genere (idGenere, nome)
Ordine (codOrdine, data Creazione, data Spedizione, stato, importo, idCliente)
Fattura (codFattura, data Emissione, importo, idCliente)

Forse dovrei usare la relazione "composto" per metterci dentro una cosa simile:

codOrdine codprodotto titolo prezzo
1 2587 starwars 20€
1 252 x 20€
1 258 x2 20€
3 2587 starwars 20€
3 2587 starwars 20€
3 2587 starwars 20€

Nel senso che questa tabella contiene i film presenti nell'ordine.

con la query poi dovrei dire: riportami tutti i prodotti presenti nell'ordine N°, si scansiona la tabella e riporta i prodotti contenuti nell'ordine n., quindi "quantità" non lo posso mettere, se fosse giusto e se dovessi fare così "composto" dovrei farlo diventare entità? Se si, che relazioni gli metto tra ordine -> ??? ->composto ->??? -> Film

CwNd
24-09-2009, 12:08
Beh essendo l'associazione "Composto" una associazione con cardinalità molti a molti nel passaggio allo schema logico devi per forza tramutarla in una "tabella". Potresti aggiungere come attributo dell'associazione la quantità o un eventuale sconto.. che ne dici?

Nexus 6
24-09-2009, 14:27
Lo sconto è bello :)

codOrdine codFilm titolo quantità sconto prezzo
98798 1453 coraline 1 0 27€
98798 2547 Matrix 1 0 19€
98798 9852 Starwars 2 10 9€

11255 2547 Matrix 1 0 19€
11255 3698 Evangelion 1 0 155€
11255 7685 Ran 1 0 9€


si, figo, dovrebbe uscire bene, ah! :doh: dici di mettere disponibilità, metto un booleano o un char(2) si o no.

Composto(codOrdine, codFilm(chiave esterne) titolo, quantità, sconto, prezzo)

così diventa, giusto? Dici di cambiare il nome "composto" con un'altra cosa? Quindi faccio di composto un'entità. Quale relazioni metto tra ordine -> ??? ->composto ->??? -> Film

a Regista devo mettere la chiave esterna idFilm come ho fatto per audio/video?

CwNd
24-09-2009, 20:20
dici di mettere disponibilità, metto un booleano o un char(2) si o no.

Beh dipende dalle spceifiche che ti hanno fato. Nel caso devi monitorare anche la disponibilità ha senso magari usare un intero dove metti la quantità di pezzi disponibili, secondo me è meglio :)

Quale relazioni metto tra ordine -> ??? ->composto ->??? -> Film

Credo che tu stai parlando di associazioni. Composto è già l'associazione, non devi metterci null'altro :)

a Regista devo mettere la chiave esterna idFilm come ho fatto per audio/video?

Io direi che nell'entità Film devi mettere l'attributo registra che fa da chiave esterna per l'entità Registra :)

Nexus 6
25-09-2009, 08:46
Beh dipende dalle specifiche che ti hanno fatto. Nel caso devi monitorare anche la disponibilità ha senso magari usare un intero dove metti la quantità di pezzi disponibili, secondo me è meglio :)

Le specifiche non me le ha fatte nessuno, tutto io ho fatto, dalla raccolta dei requisiti fino alle query, ognuno lo fa come vuole. L'intero quantità lo uso nell'entità film, c'è già, io parlavo di mettere disponibilità si o no, nell'entità composto.



Credo che tu stai parlando di associazioni. Composto è già l'associazione, non devi metterci null'altro :)

Per associazione intendo relazione, abbiamo detto che composto diventa entità, o no?



Io direi che nell'entità Film devi mettere l'attributo registra che fa da chiave esterna per l'entità Registra :)

Ne''entità film c'è l'attributo regista. L'ho postato sopra. La tupla che uscirà su entità: Film, attributo regista sarà la chiave primaria di regista, ossia (nome, cognome)?

-MiStO-
25-09-2009, 09:37
Per associazione intendo relazione, abbiamo detto che composto diventa entità, o no?

la relazione N-N dello schema ER si traduce in una tabella aggiuntiva tra le due entità relazionate,tabella che contiene tutte le coppie di chiavi associate.
quindi la relazione NN tra ordine e film genererà 3 tabelle: ordine tabella_di_link (nel tuo caso "composto") e film :)

Nexus 6
26-09-2009, 19:44
Quindi "Composto" rimane un rombo (relazione), non lo devo trasformare in rettangolo (entità). :help:

CwNd
28-09-2009, 08:46
Quindi "Composto" rimane un rombo (relazione), non lo devo trasformare in rettangolo (entità)

Rimane un rombo nello schema er, ma diventa una tabella successivamente al passaggio da schema concettuale a schema logico.

Nexus 6
28-09-2009, 10:05
ok grazie :)