Mysql
 sql >> Database >  >> RDS >> Mysql

Database MySQL per memorizzare prodotto, colore, taglia e stock

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.