Schemat bazy księgarni internetowej

0

Dzień Dobry!
Proszę o pomoc przy skonstruowaniu schematu relacji bazy danych dla księgarni internetowej.
W tej chwili mam tyle co na screenie
http://i.imgur.com/aV3wAFz.png?1
Proszę o ocenę tego co już mam i rady co jeszcze zrobić, poprawić.
Z góry dziękuje.

3

Jeśli jest to ćwiczenie akademickie to ok. Jeśli chcesz w oparciu o to zbudować prawdziwy sklep, to trzeba rozbudować, ale baza ma ręce i nogi.
Jeśli pole w tabeli jest FK to zazwyczaj nazywa się je np. KategoriaId, wtedy dla wszystkich intuicyjnie wiadomo czym jest to pole. Ale to nie jest wymóg.
Zamiast np. IdK użyj całego wyrazu, czyli IdKsiążki. Skróty później mogą być mylące.
Status zamówienia też powinien być tylko id i FK z tabeli StatusyZamówienia, gdzie będzie co najmniej Id i NazwaStatusu.
Adres rozbij przynajmniej na trzy pola, ulica z nr domu i ew. lokalu, kod pocztowy, miasto.

Drobna uwaga z języka polskiego, jeśli coś jest policzalne mówimy o liczbie tego czegoś, nie o ilości, więc w KsiążkiWDostawie nie IlośćKsiążek, a LiczbaKsiążek.

Jeśli chcesz rozbudować schemat to:

  • cena może podlegać zmianą w czasie. Jeśli nawet nie potrzebujesz trzymać wartości historycznych, to warto w chwili zamówienia skopiować jej wartość do KsiążkiWZamówieniach, jako cenę jednostową.
  • nie wiem (i nie chce mi się sprawdzać) jak jest kiedy ta sama książka wydawana jest w twardej i miękkiej oprawie, pewnie mają różne ISBN. Ale może warto mieć jakieś powiązanie między takimi rekordami (ale to już bajer do realnego systemu a nie ćw. akademickiego). Podobna sytuacja kiedy książka wydawana jest ponownie w kolejnych latach, rok wydania jest inny, ale to ciągle ta sama książka.
  • klient ma jakiś adres, który wykorzystujesz np. do faktury VAT, ale adres dostawy może być inny
  • promocje, serie książek (kolejne tomy) sprzedawane razem jako zestaw itp.
  • poza ceną dla klienta można trzymać cenę zakupu książki od wydawcy/hurtowni, czy marżę (pewnie powiązane z dostawą). Następnie można użyć tych informacji do raportowania zysku czy ustalania promocji.
  • kategorie póki co masz jako strukturę płaską i jedna książka może należeć tylko do jednej kategorii, w prawdziwym systemie to może być zbyt duże ograniczenie.
  • tagi/słowa kluczowe powiązane z książką umożliwiające łatwiejsze jej wyszukiwanie
2
massther napisał(a):
  • klient ma jakiś adres, który wykorzystujesz np. do faktury VAT, ale adres dostawy może być inny

Można mieć inny adres klienta, inny dostawy i inny do faktury.
Dlatego właśnie dobrze mieć oddzielną tabelę na adresy - w tabeli klient mamy wtedy kolumny na id adresu głównego, id adresu faktury i id adresu dostawy. Wszystkie trzy mogą wskazywać na jeden rekord z tabeli Adresy, a mogą też na różne.
Można też się zastanowić nad tym, czy adresy dostawy i faktury powinny być przypisane do Klienta czy do konkretnego Zamówienia.

0

Dziękuje za uwagi. Poprawiłam. Tak wygląda to teraz: http://i.imgur.com/sNBu4BV.png
Nazwy zmienię na koniec.
Nie wiem czy w adresie powinno być imię i nazwisko adresata? Jeśli tak to czy mam je jeszcze trzymać w klienci?
Czy jeszcze nad czymś powinnam się zastanowić?

0

Jeszcze się zastanawiam nad tymi zmieniającymi się cenami. Lepiej dodawać starą cene do tabeli KsiażkiWzamówieniach czy może dodac idKsiążki i za każdym razem jak się zmieni cena to dodawać tę książkę na nowo z nowym id?

2
Zoie napisał(a):

Nie wiem czy w adresie powinno być imię i nazwisko adresata? Jeśli tak to czy mam je jeszcze trzymać w klienci?

W sumie, adres dostawy czy faktury potrzebuje jakiejś "nazwy adresata". Ale na pewno klient też musi mieć swoją nazwę. (Nazwę, nie imię i nazwisko, no chyba, że nie chcesz obsługiwać firm. ;))

Zoie napisał(a):

Jeszcze się zastanawiam nad tymi zmieniającymi się cenami. Lepiej dodawać starą cene do tabeli KsiażkiWzamówieniach czy może dodac idKsiążki i za każdym razem jak się zmieni cena to dodawać tę książkę na nowo z nowym id?

Ja bym dodawał aktualną w momencie składania zamówienia do tabeli KsiążkiWZamówieniach. Tworzenie nowej książki z okazji każdej zmiany ceny to bardzo nieefektywny pomysł.

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