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.