Newsgroup: it.comp.software.database
Titolo: db per sito vendite acquisti

Mi sono venuti dei dubbi sul db che ho fatto per sistema semplicistico 
stile aste/compralo subito di ebay.
Tabelle
utente(id,username,......)
oggetto/vendita(id,id_utente,.....)
offre(id,id_oggetto,id_utente,offerta,data)
Un utente mette in vendita e popola la tabella oggetto..
Quando si fà un offerta viene inserita in offre..
Prima avevo diviso in questo modo oggetto in questo modo:
oggetto(id,descrizione,titolo,....)
vende(id,id_oggetto_id_utente,prezzo,scadenza)
offre(id,id_oggetto,id_utente,offerta,data)
ma poi ho preferito accorpare vende e oggetto..
voi come fareste?
quale delle due soluzioni vi sembra migliore e perchè?

Danko ha scritto:

Secondo me ti conviene ragionare più per entità generali (e quindi per 
relazioni) che per risultato immediato da ottenere.
Sicuramente come tabelle principali hai:
utente (chi vende o compra)
oggetto
Poi le relazioni tra questi due entità le gestirei usando delle tabelle 
di relazione 1-n o n-n:
vendite (fk utente [venditore], fk oggetto, dati specifici [data, 
prezzo...])
offerte (fk vendita, fk utente [offerente], dati specifici [dataora, 
prezzo])
In questo modo deleghi le funzionalità alle query (e quindi al 
linguaggio, dinamico) e non alla struttura delle tabelle (statica).
Ciao,
Paolo

 oggetto
oggetto la volevo lasciare un entità a sè...ad esempio + inserzioni 
possono vendere lo stesso oggetto..
quindi ora sono arrivato al punto di avere:
UTENTE: contiene tutte le info dell utente
id pk key
user
nome
.....
OFFRE: le info di tutte le offerte per una determinata asta(ad esempio 
se un utente fa 10 offerte sono registrate in modo che se qualche 
offerta è annullata si possa tornare indietro)
id pk key
id_vendita fk key collegata alla tabella vende
id_utente   fk key collegata alla tabella utente
INSERZIONE:
id pk key
id_utente   fk key collegata alla tabella utente
data
scadenza
tipo ( Compralo Subito/Asta)
prezzo partenza
stato(iniziata, conclusasenzaacquirente,conclusa con acquirente)
OGGETTO:
id
titolo
descrizione
stato ect...tutte le caratteristiche dell'oggetto
USA_PAGAMENTO:collega i tipi di pagamento per la vendita
id pk key
id_vendita
id_pagamento  fk key collegata alla tabella pagamenti
PAGAMENTI:
id pk key
nome
descrizione
sicurezza
ho il dubbio su come collegare i feedback e dividere le inserzioni 
quelle concluse da quelle in corso..
pensavo di fare una tabella vendite con tutte le info delle aste concluse..
e poi per trovare le aste in corso facevo una query di tutte le 
inserzioni meno quelle concluse..
che ne dite?
oppure mettere un campo set dove settare se l'asta è in corso scaduta 
ect...ma in questo caso dove metto i feedback e come li collego?

 ect...
Direi la seconda opzione: penso avrai un campo data_scadenza_inserzione 
(e/o un campo status), dovrebbe essere questo a discriminare se una 
inserzione è in corso o conclusa.
Ti permette inoltre di cancellare le inserzioni più vecchie di una certa 
data.
 > ma in questo caso dove metto i feedback e come li collego?
Feedback:
id feedback
fkid vendita
dati
Da vendita puoi risalire all'utente (mi sembra di capire che dovrai 
passare per la tabella Inserzioni, non mi è chiarissimo perché mi pare 
ci sia un po' di confusione tra tabella vende, vendita e inserzione).
Devi inoltre verificare che il feedback sia generabile solo se la 
vendita associata è conclusa.
Ciao,
Paolo

 inserzione è in corso o conclusa.
infatti scelgo per questa ma domanda..
inserzione è composta da un tot campi con uno che è prezzo 
partenza..siccome quando finisce avrò lo stato su inserzione conclusa 
pensvo anche di inserire prezzo vendita..
quindi in inserzione:
id
id_utente
id_oggetto
data
scadenza
tipo
prezzo iniziale
stato (incorso,conclusasenza acauirente, con acquirente ....)
prezzo finale
che ne dici?mancano altri campi?
ho fatto il disegno con le relazioni su carta, se vuoi te lo faccio 
vedere magari hai qlc consiglio da darmi..
Grazie mille di tutto.

 Grazie mille di tutto.
Nessun problema, spero di esserti stato d'aiuto.
Ciao,
Paolo

per farvi capire meglio a che punto sono vi posto l'er disegnato da me..
http://img104.imageshack.us/img104/5089/erer5.jpg
scusate la poco professionalità del disegno spero si capisca...
tutti i consigli sono graditi

 spero si capisca...
...poco! ;-)
Cosa sono le due tabelle in alto? Manca il nome.
Fossi in te rivedrei un po' la parte relativa ai pagamenti.
In parte perché pagamento e prezzo sono legati alla vendita, non 
all'inserzione, in parte perché ci sono troppe relazioni tra quelle tre 
tabelle...
Ciao,
Paolo

 tabelle...
la parte pagamenti mi sembra chiara.
in pratica ogni inserzione che inserisco può avere da 0 a + tipi di 
pagamenti..
per collegare + tipo ho aggiunto la tabella usa_pagamento se no potevo 
fare solo con pagamenti..

posto una discussione dove con un altra persona stiamo discutendo la 
stessa cosa:
http://forum.ubuntu-it.org/index.php?topic=104054.0
per chi volesse approfondire o aiutarmi con qualche spunto ect.
Saluti e grazie