Newsgroup: it.comp.www.php
Titolo: consiglio su tabelle

Ciao news,
sto sviluppando il back-end per l'amministrazione dei prodotti
di un sito.
Son qui che mi chiedo se mi conviene creare una tabella per
ogni prodotto che conterrà i sottoprodotti con dettagli etc.
oppure usare una singola tabella con tutti i sottoprodotti,
differenziandoli poi per prodotto.
una cosa così insomma (per la seconda)
------------------------------------------------------
| id | prodotto | marca | dettaglio1 | dettaglio2 | .. | dettaglioN |
------------------------------------------------------
| 1  | pippo     | jj         | boh1        | boh2        | .. | bohN
|
------------------------------------------------------
| 2  | topolino | SS       | boh1        | boh2        | .. | bohN        |
...
...
...
che sarebbe sì più comoda, ma se i dati nella tabella diventano parecchi?
Non vorrei che mi andasse a discapito delle prestazioni...
grazie
-- 
Sousa - 
http://www.sousa-lab.it/

differenziandoli poi per prodotto.
Io suggerirei di tenere una tabella per le marche, una per i prodotti,
una tabella con i dettagli e una con i valori:
( 123, 'Intel' )
( 124, 'AMD' )
--
( 1, 'Computer Intel', 123 )
( 2, 'Computer AMD', 124 )
( 3, 'Frigorifero', 772 )
--
( 72, 'Frequenza MHz' )
( 98, 'Capacità in litri' )
--
( 2, 72, '1600' )
( 3, 98, '110' )
Questo ti consente anche di fare paragoni fra prodotti diversi, senza
dover inserire nella tabella una colonna vuota per indicare quale sia
la frequenza in megahertz di un frigorifero, la capacita' frigorifera
di un Pentium, o il numero di colori gestiti da un forno :-)
Per generare la scheda di un prodotto, selezioni i suoi dati e usando
il suo ID cerchi in ( Caratteristiche JOIN Valori ).
Leonardo

 il suo ID cerchi in ( Caratteristiche JOIN Valori ).
Mai usato sto join... non è la prima volta che lo vedo, ma non l'ho mai
usato;
ho cercato su 
php.net
 ma mi da il join della string function.
Sai mica dove posso trovare qualche esempio?


no è php, fa parte del linguaggio sql. Lo trovi in un manuale sui database
Cristiano
"Sousa" <no-...@laBoratorio.sousa> ha scritto nel messaggio
news:_OxOa.156921$lK4.4...@twister1.libero.it...


usato;
Diciamo che hai
Caratteristiche
(
	id    serial,
	nome  varchar
);
Valori
(
	id	integer,
	prodid	integer,
	valore	varchar
);
Per avere la scheda del prodotto 31337, fai:
SELECT nome, valore FROM Caratteristiche JOIN Valori USING (id) WHERE
	prodid = 31337;
oppure
SELECT nome, valore FROM Caratteristiche, Valori WHERE Caratteristiche.id
= Valori.id AND Valori.prodid = 31337;
Se il motore SQL vale qualcosa, le due cose si equivalgono.
E' possibile fare cose piu' sofisticate se hai gruppi di caratteristiche,
per esempio
Caratteristiche
(
	id	serial,
	sectid	integer,
	nome	varchar
);
Allora, potresti dire: TUTTI i prodotti della sezione 42 devono avere una
voce (oppure "Nulla"):
SELECT nome, valore FROM Caratteristiche LEFT JOIN Valori USING (id) WHERE
	prodid = 31337 AND sectid = 42;
Adesso, se il prodotto 31337 "non" ha immesso il dato "potenza", anziche',
come nel primo caso, non comparire niente, compare
	Potenza		(NULL)
In MySQL:
SELECT nome, COALESCE(valore, 'N/A') FROM Caratteristiche LEFT JOIN Valori
	USING (id) WHERE prodid = 31337 AND sectid = 42;
ti da'
	Potenza		N/A
e, cosi', puoi anche segnalare al content maintainer "Riempi la scheda, oh
brodo!" :-)
Leonardo

miii sei un mostro te :))
Grazie infinite :)
