Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Baza danych MySQL do przechowywania produktów, kolorów, rozmiarów i zapasów

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 1030 Wystąpił błąd 28 z silnika pamięci masowej

  2. baza danych latin-1 do utf-8

  3. Uzyskiwanie niepoprawnie zakodowanych znaków podczas pobierania wartości z bazy danych MySQL

  4. Autouzupełnianie PHP MySQL

  5. Obsługa daty i czasu w Python/Django MySQL i strefa czasowa