PDA

View Full Version : aiuto su progettazione schema ER


Re_Kotc
11-12-2009, 10:41
ciao a tutti, spero di aver postato nella sezione giusta, sto cercando invano di progettare un pezzo di uno schema ER ma non capisco come organizzare la cosa, sostanzialmente ci sono 3 entità Automobile, Rivenditore (concessionario), e Privato, devo descrivere la situazione in cui il rivenditore vende automobili ai privati e i privati possono poi rivendere la propria automobile al concessionario che quindi torna ad essere proprietario dell'auto e può rivenderla...non riesco a visualizzare il concetto di rivendita della macchina, anche perchè poi dovrei poter ricostruire la storia dell'auto ( i passaggi di proprietà )...qualche idea su come rappresentarlo? grazie mille :)

Perseverance
11-12-2009, 12:04
Non è che abbia capito tanto bene lo storico dell'auto, ma se usi un campo DATA lo dovresti poter fare. Ti ho fatto degli schemini ER, non è detto che siano corretti. La relazione PROPRIETA' e OFFRE è ridondante ma se ci aggiungi degli attributi come DATA_INIZIO e DATA_FINE e metti come chiave primaria la coppia (CODICEFISCALE, AUTO) riesci a ricostruire lo storico dell'auto, appatto che un privato non ricompri l'auto che vende e che un rivenditore non rivenda l'auto che compra, altrimenti se ammetti questa possibilità devi integrare nella chiave anche datainizio e datafine. Xò sono relazioni ridondanti, utile, ma devi trattarle secondo le specifiche che ti sono assegnate. Non conosco gli attributi sulle entità che ti sono richiesti ma spero di esserti stato utile! Ti ho fatto 2 versioni una con le cardinalità e una senza, ma devi vedere bene cosa dice il testo del problema a questo proposito, ad esempio io ho supposto che un privato possa avere più macchine, etc...

Lo storico cmq lo ricavi in linguaggio SQL dall'entità ORDINE senza le ridondanze, basta che tu guardi le date di una stessa macchina! Il problema delle ridondanze è che se fai un accesso in scrittura per assegnare un'auto ad un privato devi anche farne altri per togliere l'auto da OFFRE e inserire una voce in PROPRIETA'. Fai la tavola dei volumi\accessi e guarda se ti conviene una volta che conosci il numero delle operazioni mensili\giornaliere. Anche se pensando meglio dovresti usare le generalizzazioni

Nell'entità ORDINE potresti mettere due attributi univoci: VENDITORE e ACQUIRENTE che poi tradotte in tabelle o in SQL diventano ForeignKey, proprio per questo una generalizzazione di Privati e Concessionari ti tornerebbe utile, li dovresti avere tutti in un'unica tabella...ma forse c'è un'altra soluzione che non mi viene in mente!!!

http://img686.imageshack.us/img686/980/ernocard.png

E questo con le cardinalità:

http://img442.imageshack.us/img442/1683/ercard.png
Ciao :Prrr:

Re_Kotc
12-12-2009, 10:14
ti ringrazio per la super risposta! :)
In realtà lo storico dell'auto è semplicemente la possibilità di ricostruire la storia dei passaggi di proprietà di una data auto (tramite query sql immagino) solo che per poterla ricostruire avevo bisogno di tenere registrati tutti i movimenti di proprietà..mi hai dato un bell'aiuto grazie :)

webmagic
12-12-2009, 14:57
@Perseverance: che software hai usato per "disegnare" il modello E/R?

Perseverance
13-12-2009, 09:48
Il banalissimo OpenOffice Draw

Re_Kotc
27-12-2009, 15:33
scusate se rispolvero la discussione...ammettendo che esista la possibilità che un privato possa RIVENDERE l'auto ad un concessionario pensavo di modificare la cosa in questo modo:

Una gerarchia PROPRIETARIO con i 3 figli PRODUTTORE, CONCESSIONARIO, PRIVATO, (produttore è definito nel testo come il primo proprietario dell'auto) a quel punto il padre PROPRIETARIO ha 2 associazioni COMPRA e VENDE (ciascuna con attributo data) associate ad AUTOMOBILE, in questo modo potrei rappresentare la compravendita di automobili da proprietari a concessionari e viceversa giusto? (il produttore non acquista automobili e lo metterei come vincolo di integrità) vi sembra una buona soluzione o una schifezza? scusate ma non sono ancora molto pratico..:)

grazie e buone vacanze a tutti!! :)