sql >> Base de Datos >  >> RDS >> Mysql

Base de datos MySQL para almacenar producto, color, talla y stock

Aquí está tu 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
  ....

Ves como has duplicado el nombre del producto "Nike Shirt" y el color "blue". En una base de datos relacional normalizada, no queremos duplicar ninguna información. ¿Qué crees que pasaría si alguien cambiara accidentalmente "Camisa Nike" por "Falda Nike" en la fila 4?

Entonces, vamos a normalizar tu mesa.

Comenzaremos con una tabla de productos.

Product

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

Generalmente, los números de identificación de la base de datos comienzan con cero, no con uno.

A continuación, creemos una tabla de colores.

Color

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

A continuación, creemos una tabla de tallas.

Size

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

Ok, ahora tenemos 3 tablas de objetos separadas. ¿Cómo los juntamos para que podamos ver qué hay en stock?

Tuviste la idea correcta con tu 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

Los números de producto, color y talla son claves foráneas que vuelven a las tablas de Producto, Color y Talla. La razón por la que hacemos esto es para eliminar la duplicación de la información. Puede ver que cualquier información se almacena en un solo lugar y en un solo lugar.

La identificación no es necesaria en la tabla Stock. El producto, el color y el tamaño deben ser únicos, por lo que esos 3 campos podrían formar una clave compuesta para la tabla Stock.

En una tienda minorista real, un producto podría tener muchos atributos diferentes. Los atributos probablemente se almacenarían en una tabla clave/valor . Para su tabla simple, podemos dividir la tabla en tablas relacionales normalizadas.