MySQL - Pytanie ds. Tabel

0

Witam. Mam stworzoną tabelę invoice, w której chciałbym umieszczać nagłowek faktury i pozycje zakupów (Użytkownik określa ile ich stworzy). Na tym etapie posiadam problem ze zdefiniowaniem w jaki sposób to zrobić. A mianowicie chodzi o to, że nie wiem jak zrobić możliwość dodawania dowolnej ilośći pozycji. Model znajduje się w załączniku.

2

ja bym tabelę heading wrzucił do invoice Nie widzę sensu trzymania tego oddzielnie I tam też trzymasz całkowity koszt zamówienia itp. Następnie oddzielną tabelą było OrderItems (takie Twoje products). I tam był by każdy element w zamówieniu a w nim np:

  • nazwa
  • cena
  • ilość
  • może jakieś atrybuty

Przy czym OrderItems to jest coś innego niż tabela z produktami (dlatego też się tak nazywa), bo wyobraź sobie sytuację, że zmieniasz cenę produktu.
Podobnie zrobiłbym z tabelą Customer a raczej BillingAddress oraz ShippingAddress a ID użytkownika, który dokonał zakupu wrzucić do tabeli orders. Dzięki temu bardzo łatwo wyświetlisz wszystkie zamówienia danego użytkownika.

Brakuje Ci też np statusu zamówienia, ale to jak poprzednie rzeczy ogarniesz :)

0

Możesz tez zrobić osobną tabelę na zamówienie, osobną na nagłówek dokumentu oraz osobną na pozycje zamówień. Tak chyba będzie najsensowniej.
Poza tym popieram to, co pisał wyżej @no_solution_found

1

W jaki sposób mam dodawać kilka pozycji zamówień do głównej tabeli

Tworzysz najpierw pozycję w tabeli zamówienia.
Potem tworzysz nagłówek zamówienia w tabeli z nagłówkami zamówień.
Łączysz sobie nagłówek z zamówieniem.
Tworzysz tabelę ze szczegółami zamówień - czyli (tutaj wpisz to, co będzie Ci potrzebne): produkt, ilość, jednostka miary, cena, rabat, VAT, ID zamówienia którego ta pozycja dotyczy.
Każdy element zamówienia to jeden wpis w tabeli z pozycjami, powiązany z konkretnym zamówieniem przez kolumnę wskazującą na ID konkretnego zamówienia.

Przygotowując dokument (np. do wydruku) wydajesz kilka zapytań:

  1. pobierasz ID konkretnego zamówienia
  2. pobierasz nagłówek zamówienia powiązany z tym ID
  3. wyłapujesz z bazy elementów składowych wszystkie pozycje, które mają podane ID tego zamówienia. Może być taka jedna pozycja, ale może równie dobrze ich być 400 ;)

To oczywiście wszystko napisałem w dużym uproszczeniu, żeby mniej-więcej oddać, jak takie rzeczy się robi. Mam nadzieję, że teraz masz pojęcie jak to ugryźć.

1

W części systemów jest zasada taka:
Tabela nagłówka dokumentów
Tabela pozycji na dokumencie

Dodatkowo część systemów rozbija jeszcze same rodzaje dokumentów (Zamówienia osobno, transakcje osobno, ruchy magazynowe osobno).
Dane dotyczące pozycji na dokumencie trzymane są w całości albo w większości właśnie w tabeli pozycje na dokumencie. Z tego względu, żeby po zmianie na karcie towarowej nie wpływało to również na zmianę na wystawionym dokumencie.

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