Oto Twój stół.
Shirt
id product color size stock
---------------------------------------------
1 Nike Shirt black M 5
2 Nike Shirt white L 10
3 Nike Shirt blue M 2
4 Nike Shirt blue XL 3
....
Widzisz, jak zduplikowałeś nazwę produktu „Koszula Nike” i kolor „niebieski”. W znormalizowanej relacyjnej bazie danych nie chcemy powielać żadnych informacji. Jak myślisz, co by się stało, gdyby ktoś przypadkowo zmienił „koszulkę Nike” na „spódnicę Nike” w rzędzie 4?
Więc normalizujmy Twój stół.
Zaczniemy od tabeli produktów.
Product
id product
------ ------------
0 Nike Shirt
Ogólnie numery identyfikacyjne bazy danych zaczynają się od zera, a nie od jednego.
Następnie utwórzmy tabelę kolorów.
Color
id color
------ -------
0 black
1 white
2 blue
Następnie utwórzmy tabelę rozmiarów.
Size
id size
------ -----
0 XS
1 S
2 M
3 L
4 XL
5 XXL
Ok, teraz mamy 3 oddzielne tabele obiektów. Jak je łączymy, abyśmy mogli zobaczyć, co jest w magazynie?
Masz dobry pomysł ze swoim oryginalnym stołem.
Stock
id product color size stock
---------------------------------------------
0 0 0 2 5
1 0 1 3 10
2 0 2 2 2
3 0 2 4 3
Numery produktu, koloru i rozmiaru są kluczami obcymi w tabelach Produkt, Kolor i Rozmiar. Powodem, dla którego to robimy, jest wyeliminowanie powielania informacji. Możesz zobaczyć, że każda informacja jest przechowywana w jednym miejscu i tylko w jednym miejscu.
Id nie jest konieczne w tabeli Stock. Produkt, kolor i rozmiar powinny być unikalne, aby te 3 pola mogły tworzyć klucz złożony do tabeli Stock.
W prawdziwym sklepie detalicznym produkt może mieć wiele różnych atrybutów. Atrybuty prawdopodobnie byłyby przechowywane w tabeli klucz/wartość . W przypadku Twojej prostej tabeli możemy podzielić ją na znormalizowane tabele relacyjne.