Ecco la tua tavola.
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
....
Vedi come hai duplicato il nome del prodotto "Nike Shirt" e il colore "blue". In un database relazionale normalizzato, non vogliamo duplicare alcuna informazione. Cosa pensi accadrebbe se qualcuno cambiasse accidentalmente "Maglietta Nike" in "Gonna Nike" nella riga 4?
Quindi, normalizziamo la tua tavola.
Inizieremo con una tabella dei prodotti.
Product
id product
------ ------------
0 Nike Shirt
In genere, i numeri ID database iniziano con zero, non uno.
Quindi, creiamo una tabella dei colori.
Color
id color
------ -------
0 black
1 white
2 blue
Quindi, creiamo una tabella delle taglie.
Size
id size
------ -----
0 XS
1 S
2 M
3 L
4 XL
5 XXL
Ok, ora abbiamo 3 tabelle di oggetti separate. Come li mettiamo insieme in modo da poter vedere cosa c'è in stock?
Hai avuto l'idea giusta con il tuo tavolo originale.
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
I numeri di prodotto, colore e taglia sono chiavi esterne per le tabelle Prodotto, Colore e Taglia. Il motivo per cui lo facciamo è eliminare la duplicazione delle informazioni. Puoi vedere che qualsiasi informazione viene archiviata in un unico posto e solo in un posto.
L'ID non è necessario nella tabella Stock. Il prodotto, il colore e la dimensione devono essere univoci, quindi quei 3 campi potrebbero creare una chiave composta per la tabella Stock.
In un vero negozio al dettaglio, un prodotto potrebbe avere molti attributi diversi. Gli attributi verrebbero probabilmente archiviati in una tabella chiave/valore . Per la tua tabella semplice, possiamo suddividere la tabella in tabelle relazionali normalizzate.