Klucz obcy z tabeli A lub z tabeli B

0

Mam problem z zaprojektowaniem schematu bazy danych. Mam 2 tabele: PRODUKTY, POSIŁKI. Chcę mieć możliwość przechowywania danych o zjedzonych produktach lub posiłkach.

Wpadłem na dwa rozwiązania:

  1. Tworzę trzecią tabelę ZJEDZONE z kolumnami:
    id - klucz główny
    id_zjedzonego - klucz obcy z tabeli PRODUKTY lub POSIŁKI
    czy_produkt - wartość 1 jeśli jest to produkt, 0 wwp

  2. Tworzę trzecią i czwartą tabelę - ZJEDZONE_PRODUKTY, ZJEDZONE_POSIŁKI .

Które z rozwiązań jest bardziej poprawne?

Dodatkowo mam problem z zastosowaniem schematu przy użyciu Hibernate. W przypadku rozwiązania drugiego wydaje się to łatwe do napisania w Hibernate. W przypadku rozwiązania pierwszego mam problem jakby to miało wyglądać.

0

logiczniej by było, żeby produkty i posiłki były w jednej tabeli

1

Nie wiem co dokładnie próbujesz stworzyć ale z doświadczenia w pisaniu aplikacji do obsługi restauracji podpowiem Ci, że produkty z posiłkami dobrze połączyć tzw. recepturami. Technicznie rzecz biorąc to robiąc posiłek z produktów to jest to moduł produkcyjny. Na stan zawsze przyjmujesz produkty, natomiast tworząc posiłek musisz zdjąć ze stanu odpowiednią ilość produktów. Potem przy rozliczeniu (każdy posiłek ma cenę) wiesz ile zapłaciłeś za produkty, ile kosztowało przygotowanie posiłku, a ile zarobiłeś.

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