Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Banco de dados MySQL para armazenar produto, cor, tamanho e estoque


Aqui está sua mesa.
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
  ....

Você vê como duplicou o nome do produto "Camisa Nike" e a cor "azul". Em um banco de dados relacional normalizado, não queremos duplicar nenhuma informação. O que você acha que aconteceria se alguém acidentalmente trocasse "Camisa Nike" por "Saia Nike" na linha 4?

Então, vamos normalizar sua mesa.

Começaremos com uma tabela Product.
Product

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

Geralmente, os números de identificação do banco de dados começam com zero, não com um.

Em seguida, vamos criar uma tabela de cores.
Color

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

Em seguida, vamos criar uma tabela de Tamanho.
Size

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

Ok, agora temos 3 tabelas de objetos separadas. Como podemos juntá-los para que possamos ver o que está em estoque?

Você teve a ideia certa com sua mesa original.
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

Os números de produto, cor e tamanho são chaves estrangeiras para as tabelas Produto, Cor e Tamanho. A razão pela qual fazemos isso é eliminar a duplicação das informações. Você pode ver que qualquer informação é armazenada em um lugar e apenas um lugar.

O id não é necessário na tabela Stock. O produto, a cor e o tamanho devem ser exclusivos, para que esses 3 campos possam formar uma chave composta para a tabela Stock.

Em uma loja de varejo real, um produto pode ter muitos atributos diferentes. Os atributos provavelmente seriam armazenados em uma tabela de chave/valor . Para sua tabela simples, podemos dividir a tabela em tabelas relacionais normalizadas.