sql >> Databáze >  >> RDS >> Mysql

Databáze MySQL pro ukládání produktu, barvy, velikosti a zásoby

Tady je váš stůl.

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
  ....

Vidíte, jak jste duplikovali název produktu „Košile Nike“ a barvu „modrá“. V normalizované relační databázi nechceme duplikovat žádné informace. Co si myslíte, že by se stalo, kdyby někdo omylem změnil „Nike Shirt“ na „Nike Skirt“ v řadě 4?

Pojďme tedy normalizovat váš stůl.

Začneme tabulkou produktů.

Product

  id    product    
------ ------------
   0    Nike Shirt

Obecně ID databáze začínají nulou, nikoli jedničkou.

Dále vytvoříme tabulku barev.

Color

  id    color   
------  -------
   0    black    
   1    white    
   2    blue 

Dále vytvoříme tabulku velikostí.

Size

  id   size 
------ -----
   0    XS
   1    S
   2    M
   3    L
   4    XL
   5    XXL 

Dobře, nyní máme 3 samostatné tabulky objektů. Jak je poskládáme, abychom viděli, co je skladem?

Se svým původním stolem jste měli správný nápad.

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

Čísla produktu, barvy a velikosti jsou cizí klíče zpět do tabulek Product, Color a Size. Důvodem, proč to děláme, je odstranit duplicitu informací. Můžete vidět, že jakákoliv informace je uložena na jednom místě a pouze na jednom místě.

ID není nutné v tabulce akcií. Produkt, barva a velikost by měly být jedinečné, takže tato 3 pole by mohla tvořit složený klíč k tabulce Sklad.

Ve skutečné maloobchodní prodejně může mít produkt mnoho různých atributů. Atributy by byly pravděpodobně uloženy v tabulce klíč/hodnota . Pro vaši jednoduchou tabulku můžeme tabulku rozdělit na normalizované relační tabulky.



  1. Jak zakázat přihlášení k MySQL root, když není zadáno žádné heslo?

  2. Selektivně odstraňte většinou duplicitní záznamy z MySQL

  3. 2018 Recenze:7 milníků MariaDB, které jste možná zmeškali

  4. Nativní tabulka 'performance_schema'.'???' má špatnou strukturu