Newsgroup: it.comp.www.php
Titolo: Normalizzazione database

Devo "inventarmi" un database per un sito di commercio elettronico.
Ho perņ bisongo di creare delle categorie e sotto categorie...
...mi spiego... mi serve realizzare qualcosa del genere:
Root directory
    Ciclismo
        Abbigliamento
        Selle
        Caschi
        ...
    Tennis
        Racchette
        Maglie
        Palline
        ...
Vorrei realizzare tutto in modo chiaro e facile da gestire.
In particolare mi servirebbe poter gestire facilmente le sottocategorie.
Qualcuno ha idea di come si possa normalizzare questo database?!??!
Ciao, Rocker
P.S. Spero di essermi spiegato... anche se credo di no!!! :-(

 wrote in message
news:TBrk7.37250$4b5.9...@news6.giganews.com...


 > Ho perň bisongo di creare delle categorie e sotto categorie...


Qualcuno ha idea di come si possa normalizzare questo database?!??!
Non so cosa voglia dire "normalizzare" e credo che qui sia un po'
OT... queste sono proprio basi dell'SQL :-)
cmq io ho usato una roba del genere:
Tabella categorie
ID
ID_parent
Nome_Categoria
Esempi:
1,0,"Sport"
2,1,"Ciclismo"
3,1,"Tennis"
4,3,"Palle da tennis"
Spero di essere stato chiaro, se vuoi altri chiarimenti..... 50 euro
all'ora! ;-)

 wrote in message
news:8Ytk7.37336$4b5.9...@news6.giganews.com...


Ti stavo per suggerire la stessa cosa!
E' una soluzione che ho implementato, e un pò più laboriosa da sviluppare ma
è sicuramente d'effetto, e funziona benissimo!


> etc...
Ottimo.
Altra soluzione, nel caso alcune sottocategorie siano comuni a piů sport
(che so: costume va bene per nuoto e pallanuoto):
3 tabelle:
Sport
-----
IDSport (PK)
NomeSport
Categorie
---------
IDCategoria (PK)
NomeCategoria
Sport_Categorie
---------------
IDSport (FK, PK)
IDCategoria (FK, PK)

OT... queste sono proprio basi dell'SQL :-)
La normalizzazione dei database non riguarda neanche l'SQL... riguarda
direttamente l'analisi e la progettazione dei database: a grandi
linee, riduce le dipendenze e le ridondanze all'interno del DB.
Le forme normali dovrebbero essere 3... se non ricordo male...
Alessandro Bondi

Le forme normali dovrebbero essere 3... se non ricordo male...
Io ero rimasto a 5, non so se ce ne sono di piů...
Cmq un DB in terza forma normale č giŕ ben strutturato, per il 99%
delle usi, le forme normali superiori servono raramente...
Ciao ;-)

Vorrei realizzare tutto in modo chiaro e facile da gestire.
Io farei cosi':
	CREATE TABLE categorie (
		IDCategoria	sysobject,
		parent		int4,
		nomecategoria	varchar(64),
		...
	);
	CREATE TABLE merci (
		IDMerce		sysobject,
		categoria	int4,
		...
	);
A quel punto potresti avere:
	ID	Parent		Nomecategoria
	37	0		Tutte le categorie
	45	37		Sport
	...	...		...
	172	45		Nautica
	...	...		...
	187	172		Vela
	...	...		...
	238	187		Ponci
che ti equivale a:
	[-] Tutte
	 |
	 +---[-] Sport
	      |
	      +---[+] Roccia
	      +---[+] Sesso
	      +---[-] Nautica
	           |
		   +---[-] Vela
		        |
			+---[+] Surf
			+---[+] Canoa
			+------ Ponci
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.

delle usi, le forme normali superiori servono raramente...
Beh allora dato che ci siamo... OT forever :-)
Sapete darmi qualche dritta? Non so, qualche doc online...
Purtroppo ho molte lacune in analisi...:-(

delle usi, le forme normali superiori servono raramente...
E' vero... io mi ricordavo le 3NF perche' a scuola avevamo visto fino
a li', che poi sono in effetti gia' buone, ma mi hai fatto venire in
mente che ne esistevano anche di piu', gia' gia'..... le vedro'
quest'anno quando seguiro' il corso di "Basi di dati"....
Alessandro Bondi


Sinceramente non saprei dove puoi trovare documentazione online...
prova a chiedere su it.comp.software.database
Ciao ;-)

Purtroppo ho molte lacune in analisi...:-(
L'analisi e la progettazione dei DB credo che siano le cose piu' belle
che un informatico possa fare...
Ti conviene quasi quasi cercarti in biblioteca un libro di informatica
per gli studenti degli istituti tecnici, indirizzo informatica
"abacus",  del 5° anno (credo che vada bene anche quello per i
ragionieri programmatori "mercurio").
Online forse trovi qualcosa in qualche sito universitario...
Alessandro Bondi

 	);
Sperando, ahem :), di non andare troppo ot, mi sono sempre chiesto,
avendo una tabella ricorsiva come questa, se, oltre a fare n query
(n = numero di livelli) per ottenere tutti i figli a partire da un
certo padre, ci sia un modo piu' veloce e che risolva le cose con
una sola interrogazione sql. Bisogna andare sui linguaggi interni
dei db tipo pg/sql? (o come si chiama quello di pgSql, che poi mi
e' parso abbastanza primitivo a una prima occhiata)
-- 
Ciao,           | Sostituisci "dontspam" con "softhome"
 Francesco      | nell'indirizzo email per avere quello corretto

una sola interrogazione sql.
Senza avere supporto per le funzioni ricorsive nel linguaggio?
L'unico modo sarebbe de-ricorsivizzare la cosa, implementando il nodo
come una stringa del tipo
	00.02.05.07.12
Se ogni categoria ha al massimo 9 subcategorie, si puo' codificare un
massimo di profondita' di 9 livelli in un intero a 32 bits:
	225712000 = 225712000 = 2->2->5->7->1->2
in entrambi i casi l'"albero" viene fuori con una ORDER BY.
