Projektant baz danych — Praca krok po kroku
Dwa wiersze dla tego samego produktu w Z-24
Praca krok po kroku · Lekcja 3 z 6
Zaprojektuj klucz pozycji
Jeśli numer pozycji jest unikalny w ramach zamówienia, użyj pary numer zamówienia i numer pozycji.
- Co zrobić najpierwZamówienie
- Co zrobić dalejNumer pozycji
- Jak zakończyćKlucz
Przykład z pracy
K-8 jest w pozycjach 1 i 2.
Ćwiczenie praktyczne
Zaproponuj klucze dla obu wierszy.
Dwa wiersze dla tego samego produktu w Z-24
Podejmij decyzję
Wróć do notatki z początku sprawy. Zapisz pierwsze działanie i wyjaśnij, jak pomoże rozwiązać sytuację.
Pokaż przykładową reakcję
Zapisuję pozycje z osobnymi numerami i cenami zakupu Zachowujesz oba wiersze i ich odrębne rabaty.
- Zapisuję pozycje z osobnymi numerami i cenami zakupu
- Zachowujesz oba wiersze i ich odrębne rabaty.
- Scalam oba wiersze pod kodem produktu
- Dane o rabatach i pozycjach stają się niejednoznaczne.
- Zapisuję tylko aktualną cenę w katalogu
- Późniejsza zmiana ceny nie odtworzy warunków zamówienia.
Sprawdź się — opcjonalne pytanie
Czym różnią się klucze?
- Numerem pozycji w tym samym zamówieniu
- Kodem produktu
- Nazwą katalogu
Pokaż odpowiedź i wyjaśnienie
Numerem pozycji w tym samym zamówieniu. Osobne klucze utrzymują oba wiersze.
Praca krok po kroku · Lekcja 4 z 6
Zapisz cenę historyczną
Wyjaśnij zespołowi, gdzie przechowujesz bieżącą cenę produktu i cenę uzgodnioną przy zakupie.
- Co zrobić najpierwKatalog
- Co zrobić dalejPozycja
- Jak zakończyćWarunki
Przykład z pracy
W dniu zakupu dwie pozycje mają odmienne rabaty.
Ćwiczenie praktyczne
Przypisz po dwa pola do produktu i pozycji.
Sprawdź się — opcjonalne pytanie
Co odtworzy warunki zakupu?
- Cena wyświetlana dziś w katalogu
- Cena lub wartości zapisane przy pozycji zakupu
- Kolor etykiety
Pokaż odpowiedź i wyjaśnienie
Cena lub wartości zapisane przy pozycji zakupu. Późniejsza zmiana cennika nie zmienia zapisanych warunków.
Dwie pozycje tego samego produktu w SQL
| Zamówienie | Pozycja | Produkt | Cena zakupu |
|---|---|---|---|
| Z-24 | 1 | K-8 | 210,00 zł |
| Z-24 | 2 | K-8 | 185,00 zł |
Identyfikator zamówienia wskazuje wspólny nagłówek. Pozycje różnią się numerem i mogą mieć własną cenę. Klucz obcy łączy je z istniejącym zamówieniem.
Klucze tabeli zamówień i pozycji
CREATE TABLE zamowienia (nr text PRIMARY KEY);
CREATE TABLE pozycje (
nr_zamowienia text REFERENCES zamowienia(nr),
nr_pozycji integer,
kod_produktu text NOT NULL,
cena_zakupu numeric(10, 2) NOT NULL,
PRIMARY KEY (nr_zamowienia, nr_pozycji)
);Sprawdź się w tej sytuacji
Zaproponuj odniesienie ze zwrotu do pozycji 2 i wyjaśnij, co stanie się po podaniu nieznanego numeru zamówienia.