![]() |
![]() ![]() |
![]() |
![]()
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
|
|
|
![]()
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ś ![]() [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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.07.2025 - 09:10 |