Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Struktura bazy - 4 kategorie , czy dobrze?
Forum PHP.pl > Forum > Bazy danych
kr3t
Witam,

Mam pytanie odnosnie strukutry bazy danych :

Wyglada ona nastepujaco :
[sql:1:e77fd04a29]
TABELA PRODUKTY
id_produktu
id_br1
id_br2
id_br3
id_br4

BRANZA1
id_branza1
branza1

BRANZA2
id_branzy2
branza2
id_branzy1

BRANZA3
id_branzy3
branza3
id_branzy2
id_branzy1

BRANZA4
id_branzy4
branza4
id_branzy3
id_branzy2
id_branzy1
[/sql:1:e77fd04a29]

Zasada dzialania od strony uzytkownika:

1) wybierze branze1 -> pokazuja mu sie branze2
2) jak wybierze brazne2 -> pokazuje mu sie branze3 oraz produkty w branze2
3) wybierze 3 -> pokazuje mu sie branza4 i produkty w branza3
4) wybierze 4 -> pokazuje mu sie produkty w 4 i koniec

Takie stopniowe zawezanie od branzy 2 do 4 ... Czy dobrze to zaprojektowalem, czy powinenem jakos moze tylko w TABLELI PRODUKTY dac tylko pole branzy4 i pozniej jakies zapytania zlozone.... ?

Z drugiej strony taka struktura jest troche niewygodna gdy jakies branze uciekaja ... albo sie zmieniaja... ?

Z gory dzieki za odpowiedz !
bumelang
Witaj,

Szczerze mówiąc, to nie za wiele rozumiem z Twojego kodu, ale jak na moje oko w MySQLu powinieneś to zrobić mniej więcej tak (być może, że tak właśnie zrobiłeś smile.gif):

[sql:1:592fde6b50]CREATE TABLE produkty (
id_produktu INTEGER NOT NULL AUTO_INCREMENT,
id_branzy INTEGER NOT NULL,
/* reszta pól */
PRIMARY KEY(`id_produktu`)
);

CREATE TABLE branze (
id_branzy INTEGER NOT NULL AUTO_INCREMENT,
id_nadbranzy INTEGER,
/* ... */
PRIMARY KEY(`id_branzy`)
);[/sql:1:592fde6b50]

I teraz robisz:
[sql:1:592fde6b50]SELECT * FROM produkty WHERE id_branzy=...;[/sql:1:592fde6b50]
celem wybrania wszystkich produktów w danej branży, czy też
[sql:1:592fde6b50]SELECT * FROM branze WHERE id_nadbranzy=...;[/sql:1:592fde6b50]
celem wybrania wszystkich podbranży danej branży.

Oczywiście jeśli dana branża nie ma "nad sobą" żadnej branży to po prostu ładujemy NULL do id_nadbranzy. Taka struktura nie jest jakaś genialnie prosta w utrzymaniu, bo należy np. kasować wszystkie podbranże, gdy skasuje się nadbranżę, ale niewiele się to różni od np. konieczności kasowania wszystkich produktów po usunięciu branży.

Pozdrowienia
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.