sql >> Databasteknik >  >> RDS >> Mysql

MySQL-databas för att lagra produkt, färg, storlek och lager

Här är ditt bord.

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

Du ser hur du har duplicerat produktnamnet "Nike Shirt" och färgen "blå". I en normaliserad relationsdatabas vill vi inte duplicera någon information. Vad tror du skulle hända om någon av misstag ändrade "Nike Shirt" till "Nike Skirt" på rad 4?

Så låt oss normalisera ditt bord.

Vi börjar med en produkttabell.

Product

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

I allmänhet börjar databas-id-nummer med noll, inte ett.

Låt oss sedan skapa en färgtabell.

Color

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

Låt oss sedan skapa en storlekstabell.

Size

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

Ok, nu har vi 3 separata objekttabeller. Hur sätter vi ihop dem så att vi kan se vad som finns i lager?

Du hade rätt idé med ditt ursprungliga bord.

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

Produkt-, färg- och storleksnumren är främmande nycklar tillbaka till produkt-, färg- och storlekstabellerna. Anledningen till att vi gör detta är att eliminera dubblering av informationen. Du kan se att all information lagras på ett ställe och bara på ett ställe.

ID är inte nödvändigt på aktietabellen. Produkten, färgen och storleken ska vara unika, så dessa tre fält kan utgöra en sammansatt nyckel till lagertabellen.

I en verklig butik kan en produkt ha många olika egenskaper. Attributen skulle förmodligen lagras i en nyckel/värdetabell . För din enkla tabell kan vi dela upp tabellen i normaliserade relationstabeller.



  1. Konvertera 'datetime2' till 'datetimeoffset' i SQL Server (T-SQL-exempel)

  2. Förbättra lösenordshasningen med ett slumpmässigt salt

  3. PHP-kod för att konvertera en MySQL-fråga till CSV

  4. UPPER() – Konvertera till versaler i PostgreSQL