27 Relacionando las TABLAS PRODUCTOS y CATEGORIAS en el Sistema de Ventas con (PHPyMySql) FullStack
Duración: 18 minDescripció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:
| Campo | Tipo | Propósito | Restricción Importante |
|---|---|---|---|
| id_producto | INT(11) | Clave Primaria, Auto Incremental. | |
| codigo, nombre_producto | VARCHAR(255) | Identificadores del producto. | No Nulos. |
| descripcion | TEXT | Detalles extensos del producto. | Puede ser Nulo [05:56]. |
| id_categoria | INT(11) | Clave Foránea (Relación con categorias). | No Nulo [07:31]. |
| id_usuario | INT(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_maximo | INT(11) | Gestión de inventario y alertas. | |
| precio_compra, precio_venta | VARCHAR(255) | Precios del producto. | No Nulos [06:34]. |
| fecha_ingreso | DATE | Fecha de entrada al inventario. | |
| imagen | TEXT | Ruta 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ón | Clave Foránea en almacen | Acción al Eliminar (ON DELETE) | Acción al Actualizar (ON UPDATE) |
|---|---|---|---|
| almacen ↔ categorias | id_categoria | RESTRICT (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 ↔ usuarios | id_usuario | SET 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].
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️