Mysql
 sql >> Base de données >  >> RDS >> Mysql

Base de données MySQL pour stocker le produit, la couleur, la taille et le stock

Voici votre tableau.

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

Vous voyez comment vous avez dupliqué le nom du produit "Nike Shirt" et la couleur "bleu". Dans une base de données relationnelle normalisée, nous ne voulons pas dupliquer d'informations. D'après vous, que se passerait-il si quelqu'un changeait accidentellement "Chemise Nike" en "Jupe Nike" à la ligne 4 ?

Alors, normaliser votre tableau.

Nous allons commencer par un tableau Produit.

Product

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

Généralement, les numéros d'identification de base de données commencent par zéro, et non par un.

Ensuite, créons une table de couleurs.

Color

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

Ensuite, créons une table de taille.

Size

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

Ok, nous avons maintenant 3 tables d'objets distinctes. Comment les assembler pour voir ce qui est en stock ?

Vous avez eu la bonne idée avec votre tableau d'origine.

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

Les numéros de produit, de couleur et de taille sont des clés étrangères qui renvoient aux tables Produit, Couleur et Taille. La raison pour laquelle nous faisons cela est d'éliminer la duplication des informations. Vous pouvez voir que toute information est stockée à un seul endroit et à un seul endroit.

L'identifiant n'est pas nécessaire sur la table Stock. Le produit, la couleur et la taille doivent être uniques, afin que ces 3 champs puissent constituer une clé composée vers la table Stock.

Dans un magasin de détail réel, un produit peut avoir de nombreux attributs différents. Les attributs seraient probablement stockés dans une table clé/valeur . Pour votre tableau simple, nous pouvons diviser le tableau en tableaux relationnels normalisés.