Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak dobrze zaprojektować bazę danych?
radabus
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 17.08.2009

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


Niby case jest banalny, ale mi sprawia sporo problemów. Baza ma obsługiwać kontenerowiec wraz z zawartością - liczba kontenerów jest zmienna (może się zdarzyć, że ktoś doda lub zabierze jakąś ilość kontenerów), każdy kontener może mieć zmienną zawartość (też może przyjść klient i kupić coś lub dołożyć do kontenera jakiś przedmiot), a oprócz tego niezależny opis (również "edytowalny").

Na początku myślałem, żeby stworzyć 2 tabele, jedna z listą kontenerów i ich opisami, druga z ich zawartością, ale to nie bardzo wychodzi (przecież zmienna by była zarówno ilość kolumn jak i wierszy). Może ktoś podpowiedzieć, jak dobrze zaprojektować taką bazę danych? Czy może zrobić tak, że jedna tabela będzie zbierała listę wszystkich kontenerów (id, opis), a dla każdego kontenera będzie tworzona oddzielna tabela wraz z zawartością (dodawanie i odejmowanie wierszy przy stałej liczbie kolumn)? Ja się trochę w tym wszystkim gubię, wdzięczny byłbym za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
zbierała listę wszystkich kontenerów (id, opis), a dla każdego kontenera będzie tworzona oddzielna tabela wraz z zawartością (dodawanie i odejmowanie wierszy przy stałej liczbie kolumn)?

Sam sobie odpowiedziałeś na pytanie. wink.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
radabus
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 17.08.2009

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


Ale jak je poprawnie powiązać? Tabele dla każdego kontenera mają się nazywać tak, jak ich identyfikatory w tabeli zbiorczej? Właśnie tu się zacinam, jak to zrobić, żeby potem w prosty sposób móc wyciągnąć zawartość żądanego kontenera wraz z opisem.

Jeszcze tak siedząc po nocy, zacząłem się zastanawiać nad innym rozwiązaniem. Stworzyć 2 tabele: pierwsza będzie zawierać spis wszystkich kontenerów (kolumny: id_kontenera, opis_kontenera), druga będzie "wielką" tabelą przedmiotów z kluczem obcym odwołującym się do konkretnego kontenera (kolumny: id_przedmiotu, nazwa_przedmiotu, id_kontenera) - w końcu dany przedmiot może znajdować się tylko w jednym kontenerze.

Które rozwiązanie jest lepsze - to z 2 tabelami, czy z jedną tabelą zbiorczą i osobnymi tabelami dla każdego kontenera?

Ten post edytował radabus 25.02.2011, 03:28:31
Go to the top of the page
+Quote Post
cojack
post
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


radabus - widać że masz problem z zrozumieniem relacji, jeżeli produkt może należeć tylko do jednego kontenera to mamy relację jeden do jeden, jest to najprostsza relacja jaką świat widział. Także sytuacja Ci się upraszcza. Tworzysz jedną tabelę z listą kontenerów, każdy z kontenerów ma na pewno unikatowy identyfikator w życiu, oprócz tego może mieć i równie dobrze w bazie. Także jak to sobie zaimplementujesz Twoja brocha. Druga tabela będzie tabelą produktów, każdy produkt musi mieć identyfikator kontenera by wiedzieć, który gdzie przynależy. No i nie zapomnij o bazie kontenerowców wink.gif Przecież musisz wiedzieć jaki kontener na jaki statek załadować.

Pozdrawiam.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
radabus
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 17.08.2009

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


Dzięki, zaczynam już kojarzyć co i jak. Muszę też się doszkolić w podstawach relacyjnych baz danych, bo widać mam spore braki wink.gif

Przy okazji - jakby ktoś był w stanie polecić porządny manual (w sensie: trochę łopatologiczny), byłoby miło. Na razie jadę z książką w ręku.

Ten post edytował radabus 25.02.2011, 10:04:59
Go to the top of the page
+Quote Post
cojack
post
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Jest takowa, nazywa się tworzenie baz i ciągła nauka na swoich lub cudzych błędach, polecam jeszcze blog: www.depesz.com.

Pozdrawiam.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
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 Aktualny czas: 19.08.2025 - 05:39