27 Relacionando las TABLAS PRODUCTOS y CATEGORIAS en el Sistema de Ventas con (PHPyMySql) FullStack

Duración: 18 min
Módulo: 📦 Gestión de Productos y Categorías Lección 2 de 15

Descripción

Lección 27: Relación de Tablas Productos y Categorías en la Base de Datos 💾

Este video se enfoca en la creación y la correcta relación de las nuevas tablas almacen (productos) y categorias en la base de datos MySQL, asegurando la integridad referencial con la tabla usuarios.

1. 📋 Diseño de la Tabla almacen (Productos)

La tabla almacen se diseña para ser la más extensa hasta el momento, incluyendo campos esenciales para la gestión de inventario:

CampoTipoPropósitoRestricción Importante
id_productoINT(11)Clave Primaria, Auto Incremental. 
codigo, nombre_productoVARCHAR(255)Identificadores del producto.No Nulos.
descripcionTEXTDetalles extensos del producto.Puede ser Nulo [05:56].
id_categoriaINT(11)Clave Foránea (Relación con categorias).No Nulo [07:31].
id_usuarioINT(11)Clave Foránea (Relación con usuarios). Para registrar qué usuario (encargado de almacén) realizó el registro o actualización [01:04].No Nulo [07:39].
stock, stock_minimo, stock_maximoINT(11)Gestión de inventario y alertas. 
precio_compra, precio_ventaVARCHAR(255)Precios del producto.No Nulos [06:34].
fecha_ingresoDATEFecha de entrada al inventario. 
imagenTEXTRuta de la imagen del producto.Puede ser Nulo (se permite actualizar después) [06:40].

2. 🏷️ Diseño de la Tabla categorias

La tabla de categorías es sencilla y se centra en el nombre de la clasificación:

  • id_categoria: Clave Primaria y Auto Incremental [08:22].
  • nombre_categoria: Nombre de la categoría (ej. "Frutas", "Líquidos") [08:35].
  • fecha_hora_creacion y fecha_hora_update.

3. 🔗 Establecimiento de Relaciones (FOREIGN KEYS)

Una vez creadas las tablas, se definen las siguientes relaciones clave para asegurar la coherencia de los datos:

RelaciónClave Foránea en almacenAcción al Eliminar (ON DELETE)Acción al Actualizar (ON UPDATE)
almacen ↔ categoriasid_categoriaRESTRICT (restringir): No se puede eliminar una categoría si hay productos asociados [12:06].CASCADE (cascada): Si se actualiza el ID de una categoría, se actualiza en todos los productos relacionados [12:14].
almacen ↔ usuariosid_usuarioSET NULL: Si se elimina un usuario, el campo id_usuario en el producto se establece como NULL (el producto se mantiene, pero se pierde el registro del usuario) [13:58]. Nota: Para aplicar esta relación, fue necesario truncar (vaciar) la tabla usuarios primero debido a que contenía datos que impedían la relación [14:26].CASCADE [14:20].

La finalización de estas relaciones (FOREIGN KEYS) permite al sistema tener un modelo de datos coherente, listo para empezar a programar las consultas y controladores del nuevo módulo [16:23].