Scelta tabelle

  • Creatore Discussione Creatore Discussione wizard86
  • Data di inizio Data di inizio

wizard86

Utente Attivo
3 Ago 2009
31
0
0
Salve a tutti, mi è stato chiesto di creare un modulo ordini per degli agenti di vendita. Niente di complicato se non fosse che non realizzo un database da tempi immemori!
Parliamo di bevande, quindi saranno suddivise in Alcoliche (Vodka, Rum, Whiskey,etc...) e Non Alcoliche (Bevande gasate, Succhi di frutta, etc...)
La mia idea di base è la seguente:

LOGIN
-------
ID_Login
Email
Password
ID_Utente*

AGENTI
--------
ID_Utente
Nome
Cognome

TIPOLOGIA_PRODOTTI
----------------
ID
Alcoliche
Non_Alcoliche


PRODOTTI
-----------
ID_Prodotto
Nome_Prodotto
Formato
Cod_Prodotto
Tipologia_Prodotto


CLIENTI
--------
ID_Cliente
Denominazione_Sociale
Indirizzo
Città
Provicia
CAP
Tel


Se non si fosse capito ho le idee un po confuse, chiedo quindi un vostro cortese aiuto!
Un saluto
 
Potresti fare un'unica tabella per gli utenti distinguendoli tramite un enum se agenti,clienti o altro. Per quanto riguarda i prodotti ti basta fare anche li solo una tabella aggiungendo un campo per verificare se è alcolico o meno (tramite un bool, un enum o quello che vuoi)
 
Potresti fare un'unica tabella per gli utenti distinguendoli tramite un enum se agenti,clienti o altro. Per quanto riguarda i prodotti ti basta fare anche li solo una tabella aggiungendo un campo per verificare se è alcolico o meno (tramite un bool, un enum o quello che vuoi)


Vorrei procedere nel modo più "giusto" possibile, così da poter aggiungere in futuro altre funzioni (Storico ordini ad esempio)
 
ciao
un piccolo particolare (se non ho capito male)
dovresti collegare la tabella "prodotti" con la "tipologia prodotti" cioè in "prodotti" dovresti mettere un campo con l'id della tipologia, come (mi sembra) hai fatto con la tabella "login" e "agenti".
eventualmente nella tabella "agenti" metterei anche altri campi (zona, indirizzo, telefono...), non so se farei come dice nefyt una tabella unica in quanto ci possono essere campi che interessano l'uno e non l'altro (es per gli agenti il campo provvigione).
comunque "carta e matita" prima di buttarti al pc
 
Perché su ID_Utente* che l'asterisco? Sarà perché ID_Utente* si riferisce anche all'ID_Cliente per il login dei clienti?
Altra domanda: come vorresti strutturare (visti i campi) la tabella TIPOLOGIE_PRODOTTI?
Tu hai i campi id, alcoliche, non_alcoliche. Così facendo non riesco a immaginare un utilizzo corretto privo di ridondanze. Se la tipologia è solo alcoliche/non_alcoliche potresti evitare un'ulteriore tabella (cioè la tipologie_prodotti) e mettere nel campo della tabella prodotti direttamente la tipologia associata al prodotto.
 
ciao
un piccolo particolare (se non ho capito male)
dovresti collegare la tabella "prodotti" con la "tipologia prodotti" cioè in "prodotti" dovresti mettere un campo con l'id della tipologia, come (mi sembra) hai fatto con la tabella "login" e "agenti".
eventualmente nella tabella "agenti" metterei anche altri campi (zona, indirizzo, telefono...), non so se farei come dice nefyt una tabella unica in quanto ci possono essere campi che interessano l'uno e non l'altro (es per gli agenti il campo provvigione).
comunque "carta e matita" prima di buttarti al pc

Su "login" e "agenti" ci sono, ma non riesco a capire come dovrei mettere in relazione le tabelle "prodotti" con la "tipologia prodotti", forse dovrei fare un'altra tabella intermedia dove mettere tutte le micro aree?

Tipologie_Prodotti (Alcoliche/Non Alcoliche) -> SottoTipo (Succhi di frutta, Bevande Gasate, Rum, Grappe...) -> Prodotti

Che dici?

Perché su ID_Utente* che l'asterisco? Sarà perché ID_Utente* si riferisce anche all'ID_Cliente per il login dei clienti?
Altra domanda: come vorresti strutturare (visti i campi) la tabella TIPOLOGIE_PRODOTTI?
Tu hai i campi id, alcoliche, non_alcoliche. Così facendo non riesco a immaginare un utilizzo corretto privo di ridondanze. Se la tipologia è solo alcoliche/non_alcoliche potresti evitare un'ulteriore tabella (cioè la tipologie_prodotti) e mettere nel campo della tabella prodotti direttamente la tipologia associata al prodotto.



Allora facciamo un attimo di chiarezza, per clienti si intende i clienti degli agenti. L'agente effettuerà l'ordine per conto del cliente.
Quell' ID_Utente nella tabella Login, lo riportavo sulla tabella Agenti.

Per quanto riguarda la suddivisione in categorie, Alcoliche e non Alcoliche sono le 2 macro aree, poi sotto di queste abbiamo aree per le Non_Alcoliche e aree per le Alcoliche
 
ciao
secondo me più si suddividono le tabelle più è facile po fare modifiche (es se ad un certo punto volesse inserire "bevande simi alcoliche".
comunque io farei così
(con * indico i campi primary key autoincrement)

LOGIN (vedi nota sotto)
-------
id_login *
email
password
id_agente (collega alla tabella agenti)

AGENTI
--------
id_agente *
nome
cognome

TIPOLOGIA_PRODOTTI (suddivisione principale)
----------------
id_tipo *
descrizione

SOTTOTIPOLOGIA_prodotti
-----------------
id_sottotipo *
id_tipo (collegamento alla tabella tipologie principale)
descrizione


PRODOTTI
-----------
id_prodotto *
id_sottotipo (collegamento alla tabella sottotipi e quindi alla tipologia principale)
nome_prodotto
formato
cod_prodotto


CLIENTI
--------
id_cliente *
id_agente (collega il cliente all'agente)
Denominazione_Sociale
indirizzo
citta
provicia
CAP
tel

ad ogni tabella poi puoi aggiungere i campi che ti servono
nota: se l'accesso è riservato oltra all'admin solo agli agenti la i campi della tabella di login potrebbero essere messi nella tab agenti e quindi non farla
(guarda che ho messo i nomi dei campi a caso cercasndo solo che siano esplicativi)
 
ciao
secondo me più si suddividono le tabelle più è facile po fare modifiche (es se ad un certo punto volesse inserire "bevande simi alcoliche".
comunque io farei così
(con * indico i campi primary key autoincrement)



ad ogni tabella poi puoi aggiungere i campi che ti servono
nota: se l'accesso è riservato oltra all'admin solo agli agenti la i campi della tabella di login potrebbero essere messi nella tab agenti e quindi non farla
(guarda che ho messo i nomi dei campi a caso cercasndo solo che siano esplicativi)

Grazie mille per l'aiuto, più o meno grazie ai vostri primi consigli sono riuscito ad arrivare ad una soluzione simile a quella proposta, ma non funzionale tanto quanto ;)

Prendendo in considerazione il suggerimento che mi ha dato ho dei dubbi da porti!

Login
ID_Login (chiave primaria)
ID_Agente (chiave esterna)

Agenti
ID_Agente (chiave ????)

Clienti
ID_Cliente (chiave primaria)
ID_Agente (chiave ????)


Credo di essermi confuso un po!
 
ciao
Agenti
ID_Agente (chiave primaria) => int(11) primary key autoincrement

salvo rare eccezzioni in ogni tabella dovrebbe esistere un id (chiamato come vuoi) primary jey autoincrement, è importante perchè diventa l'indicativo univoco del record
 
In tutte le tabelle c'è l'id tranne nelle tabelle di relazione come per esempio quella che esce fuori da una relazione molti:molti..in questo caso non hai una tabella di relazione quindi tutte dovranno avere un campo id_...
 

Discussioni simili