Schemat bazy danych

0

Mam do wykonania projekt prostej bazy danych. Jako temat wybrałem sklep internetowy. W mojej bazie przechowuje informacje o klientach, produktach, producentach, dostawcach i koszyku zamówień. Poniżej zamieściłem schemat mojego projektu. Czy mógłby ktoś go sprawdzić i napisać co jest źle? Niepokoi mnie fakt, że po lewej stronie dostałem zamkniętą pętlę. Czy coś takiego nie jest błędem?

Schemat mojej bazy znajduje się pod poniższym linkiem:
http://img197.imageshack.us/img197/9522/baza.jpg

0

Nie rozumiem powiązania Klienta z Dostawcą. Klient jest powiązany ze swoim Zamówieniem a Zamówienie z Dostawcą. Nie trzeba (nie należy ;]) wiązać już Klienta z Dostawcą bo oni są powiązani.
Czy "szczegóły zamówienia" to jest tak na prawdę "pozycja zamówienia"? Jeśli tak to zamawiający powinien polecieć do Zamówienia, bo przecież zawsze jest ten sam. Jeśli to nie jest "pozycja zamówienia" to powinna, bo przecież w jednym zamówieniu moze być wiele różnych produktów!
"Dział" produktu to jest "Kategoria"?
Nie rozumiem po co dostawca ma mieć IDZamówienia. To powiazanie powinno iść w drugą stronę -> zamówienie potrzebuje informacji o tym kto będzie dostawcą.

To wszystko przy założeniu że "dostawca" to jest ktoś kto wiezie towar klientowi a nie ktoś kto nam dowozi towar ;] Bo jesli to byłby taki dostawca to wszystko byłoby źle :P

0
Shalom napisał(a):

Nie rozumiem powiązania Klienta z Dostawcą. Klient jest powiązany ze swoim Zamówieniem a Zamówienie z Dostawcą. Nie trzeba (nie należy ;]) wiązać już Klienta z Dostawcą bo oni są powiązani.

Czyli tabela Szczegóły dostawy (albo przynajmniej relacja Szczegóły dostawy->klienci) jest do usunięcia?

Shalom napisał(a):

Czy "szczegóły zamówienia" to jest tak na prawdę "pozycja zamówienia"?

To jest taki jakby nasz koszyk.

Shalom napisał(a):

Jeśli tak to zamawiający powinien polecieć do Zamówienia, bo przecież zawsze jest ten sam. Jeśli to nie jest "pozycja zamówienia" to powinna, bo przecież w jednym zamówieniu moze być wiele różnych produktów!

Ale tak chyba jest. Tabele zamówienia i produkty są relacją wiele do wiele, gdzie tabelą łączącą jest szczegóły zamówienia.

Shalom napisał(a):

"Dział" produktu to jest "Kategoria"?

Tak. Np. książki, muzyka itd. Mam nadzieję, że relacja Produkty -> Dział jest ok (jeden konkretny produkt może być w jednym dziale, ale w jednym dziale może być wiele różnych produktów). Analogicznie Produkty -> Producenci. Jeden konkretny produkt jest produkowany przez konkretnego producenta, ale jeden producent może produkować wiele produktów.

Shalom napisał(a):

Nie rozumiem po co dostawca ma mieć IDZamówienia. To powiazanie powinno iść w drugą stronę -> zamówienie potrzebuje informacji o tym kto będzie dostawcą.

Podobnie jak powyżej. Pomyślałem, że jedno zamówienie, musi być zrealizowane przez jednego dostawcę. Z kolei jeden dostawca może zrealizować wiele zamówień. Mamy zatem relację jeden do wielu.

Shalom napisał(a):

To wszystko przy założeniu że "dostawca" to jest ktoś kto wiezie towar klientowi a nie ktoś kto nam dowozi towar ;]

Tak, to jest ktoś, kto wiezie towar klientowi :).

0

No właśnie trochę chyba nie ogarniasz...
Patrz gdzie masz klucze obce!
Dostawca ma klucz obcy IDZamówienia, a nie powinien! To Zmówienie powinno mieć klucz obcy Dostawcy
Koszt dostawy dałbym do Zamówienia.
SzczegółyZamówienia mają klucz obcy do Klienta a nie powinny bo przecież zamawiajacy w ramach Zamówienia jest taki sam, więc to Zamówienie powinno mieć klucz obcy od Klienta.

0

A połączenie Produkty->Dział, Produkty->Producenci jest ok?

0

Oczywiście że nie. Widzisz gdzie masz klucze obce?
Pomiędzy "produktem" a "producentem" w ogóle nie ma powiazania kluczami obcymi, a produkt powinien znać id_producenta.
Pomiędzy Produktem i Działem znów masz powiazanie w złą stronę. To Produkt powinien znać id_kategorii a nie odwrotnie. Ty w ogóle rozumiesz jak to będzie potem w bazie?
Powinno być tak:

Dział:

  1. Ryby
  2. Grzyby
  3. Drób

Produkty:

  1. Dorsz, id_działu=1
  2. Szczupak, id_działu=1
  3. Muchomory, id_działu=2
    itd.

a u ciebie chcesz duplikować dla każdego Produktu wpis dla Działu w bazie...

0

Popracowałem trochę nad tym i mam nadzieję, że poniższy schemat będzie już bardziej poprawny. Zrezygnowałem na razie z tabeli szczególy dostawy oraz z tabel adresy i telefony klientów (w razie potrzeby je dodam).

http://img707.imageshack.us/img707/4817/bazac.jpg

0

Jest gorzej niż było.

  1. Czemu klient jest powiązany z JENDNYM dostawcą? Czy to jest normalne że dany klient może dostawać dostawy tylko od jednego dostawcy?
  2. Czemu klient w ogóle nie jest powiazany z Zamówieniem? o_O
    Moim zdaniem powiązanie Klient-Dostawca jest do kosza, a zamiast tego ma być Klient-Zamówienie
  3. Czemu produkt może być tylko w jednej hurtowni? To przeciez bez sensu. To musi być powiązanie wiele:wiele! Przecież w jednej hurtowni masz dużo różnych produktów a jednocześnie każdy produkt może być w wielu hurtowniach.

POMYŚL! Nie rób tego "na pałę", tylko się nad tym zastanów.

0
Shalom napisał(a):

Moim zdaniem powiązanie Klient-Dostawca jest do kosza, a zamiast tego ma być Klient-Zamówienie

Tak, zauważyłem to w chwilę po napisaniu posta i tę poprawkę już naniosłem.

  1. Czemu produkt może być tylko w jednej hurtowni? To przeciez bez sensu. To musi być powiązanie wiele:wiele! Przecież w jednej hurtowni masz dużo różnych produktów a jednocześnie każdy produkt może być w wielu hurtowniach.

O tym też myślałem. Zatem muszę dorobić tabelę łączącą Produkty i Hurtownie np. Szczegóły produktu, w której na pewno będzie IDproduktu i IDhurtowni. Czy poza tymi dwoma powinny znajdować się tam jeszcze jakieś inne atrybuty?

0

Na przykład cena jednostki, bo w różnych hurtowniach może być różna.

0

Ostatecznie uzyskałem coś takiego:
http://img12.imageshack.us/img12/6895/bazav.jpg
Mam nadzieję, że będzie ok.

0

Tak, o ile "ilość" w produkcie to jest info "ile mamy na składzie".

0

Żeby się w tym lepiej poczuć zrobiłem jeszcze jeden taki projekt:
http://img94.imageshack.us/img94/9711/baza2f.jpg

byłbym wdzięczny za wskazanie błedów.

0

Te krotności powiązań to rozumiem ustawiałeś totalnie losowo?
1 seans może mieć wiele filmów? o_O ale dany film moze być wyświetlany tylko podczas 1 seansu?
1 bilet moze mieć wiele zniżek ale dana zniżka moze dotyczyć tylko jednego biletu?
Film może mieć wiele przedziałów wiekowych?
1 seans może być wyświetlany w wielu salach? o_O ale w danej sali można wyświetlić tylko jeden film?
Bo o ile klucze obce chyba wreszcie zrozumiałeś, to z krotnością powiązań masz chyba problemy...

0

Poprawione:
http://img507.imageshack.us/img507/5540/baza2u.png

Teraz już chyba to rozumiem i mam nadzieję, że będzie ok.

0

Lepiej ;] Kolejne lekcje:

1 użytkowników online, w tym zalogowanych: 0, gości: 1