Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Struktura bazy - 4 kategorie , czy dobrze?
kr3t
post 10.01.2004, 15:39:57
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 7.12.2003

Ostrzeżenie: (0%)
-----


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 !


--------------------
KR3T
Go to the top of the page
+Quote Post
bumelang
post 10.01.2004, 19:00:55
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 30.11.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.07.2025 - 09:10