Laboratorio 5: Diseñando el Modelo Completo en MySQL Workbench
Semana 5 · W05 · Unidad II · Modelamiento de Datos · Universidad San Sebastián
1 Contexto
En el laboratorio de la semana pasada, Juan diseñó el modelo base de TechStyle con 4 tablas. Pero esta semana llegaron nuevas demandas del negocio: María (Gerente de Marketing) quiere rastrear proveedores, Carlos (Gerente de Logística) necesita gestionar despachos, y Roberto quiere registrar devoluciones.
Tu tarea: ampliar el modelo de datos de TechStyle hasta cubrir todos los requerimientos del negocio, documentarlo con un Diagrama de Casos de Uso UML, construirlo en MySQL Workbench y generar el script SQL completo.
Al terminar este laboratorio tendrás el plano de arquitectura completo de la base de datos que implementarán en MySQL durante las semanas 6 y 7.
2 Instrucciones generales
- Trabajarás en los mismos grupos del laboratorio anterior.
- Duración total: 2 horas 30 minutos.
- Guarda tu trabajo frecuentemente.
Herramientas necesarias:
| Herramienta | Uso | Descarga |
|---|---|---|
| MySQL Workbench 8.0 | Diseño EER y generación de SQL | mysql.com/products/workbench — ya debería estar instalado |
| draw.io | Diagrama de Casos de Uso UML | Solo navegador |
| Cualquier editor de texto | Revisión del SQL generado | VS Code, Bloc de notas |
Estructura del laboratorio:
| Parte | Actividad | Tiempo |
|---|---|---|
| 1 | Diagrama de Casos de Uso | 45 min |
| 2 | Diseñar el EER Diagram en MySQL Workbench | 75 min |
| — | Presentación al grupo y cierre | 30 min |
3 Parte 1 — Diagrama de Casos de Uso
Duración: 30 minutos
3.1 Paso 1: Identificar actores y casos de uso
Antes de diseñar cualquier tabla, documenta quién usa el sistema de TechStyle y para qué.
1.1 Lista los actores del sistema. Un actor es cualquier persona o sistema externo que interactúa con TechStyle:
| Actor | Descripción breve | ¿Humano o sistema externo? |
|---|---|---|
Pista: considera al menos 5 actores. Piensa en quién registra ventas, quién gestiona despachos, quién consulta reportes, quién maneja proveedores y si hay algún sistema externo (pago, despacho).
1.2 Para cada actor, lista sus casos de uso principales (las acciones que realiza en el sistema):
| Actor | Casos de uso |
|---|---|
3.2 Paso 2: Dibujar el diagrama en draw.io
- Abre draw.io → Crear diagrama en blanco.
- Dibuja el límite del sistema (rectángulo grande) con el título “Sistema TechStyle”.
- Coloca los actores (figuras humanas o íconos de sistema) fuera del rectángulo.
- Dentro del rectángulo, dibuja los casos de uso (elipses) con nombres verbales: “Registrar Venta”, “Consultar Stock”, etc.
- Conecta cada actor con sus casos de uso mediante líneas de asociación (simples, sin flechas especiales).
Convención de nombres: los casos de uso se nombran con verbo en infinitivo: “Registrar Venta”, no “Registro de Venta” ni “Ventas”.
3.3 Paso 3: Del diagrama a las entidades
Completa la siguiente tabla conectando cada caso de uso con las entidades que genera en el modelo de datos:
| Caso de Uso | ¿Guarda o consulta datos? | Entidad(es) que genera o usa |
|---|---|---|
| Registrar Venta | Guarda | VENTA, DETALLE_VENTA |
| Gestionar Clientes | Guarda | CLIENTE |
| Registrar Despacho | ||
| Procesar Devolución | ||
| Gestionar Proveedores | ||
| Consultar Stock | ||
| Generar Reporte de Ventas |
Conclusión esperada: el modelo de W04 (4 tablas) no cubre todos los casos de uso. Necesitas al menos 5 entidades adicionales para el sistema completo.
Exporta el diagrama: Archivo → Exportar como → PNG. Guárdalo como W05_casos_uso.png.
4 Parte 2 — Diseñar el EER Diagram en MySQL Workbench
Duración: 50 minutos
4.1 Paso 4: Crear el modelo en Workbench
- Abre MySQL Workbench.
- En la pantalla principal, haz clic en “+” junto a MySQL Models para crear un modelo nuevo.
- Cambia el nombre del modelo a
techstyle_v2(doble clic en el nombre). - En el panel inferior, haz doble clic en “Add Diagram” para abrir el editor EER.
Atajos útiles en Workbench: - T: selecciona la herramienta de tabla para crear una nueva tabla - Ctrl+Z: deshacer - Ctrl+A: seleccionar todo - Rueda del ratón: zoom in/out
4.2 Paso 5: Crear las 9 tablas del modelo
Crea las tablas en el siguiente orden obligatorio (primero las que no tienen FK):
4.2.1 Tabla 1: categorias
Haz clic con la herramienta de tabla en el diagrama y configúrala:
| Columna | Tipo | Opciones |
|---|---|---|
categoria_id |
INT | PK, NOT NULL, AUTO_INCREMENT |
nombre_categoria |
VARCHAR(50) | NOT NULL |
descripcion |
VARCHAR(200) | NULL |
categoria_padre_id |
INT | NULL (FK auto-referencial — se configura después) |
La FK auto-referencial categoria_padre_id → categorias.categoria_id la agregarás después de crear la tabla, usando la herramienta de relación.
4.2.2 Tabla 2: clientes
| Columna | Tipo | Opciones |
|---|---|---|
cliente_id |
INT | PK, NOT NULL, AUTO_INCREMENT |
nombre |
VARCHAR(50) | NOT NULL |
apellido |
VARCHAR(50) | NOT NULL |
email |
VARCHAR(100) | NOT NULL, UNIQUE |
region |
VARCHAR(50) | NOT NULL |
segmento |
VARCHAR(20) | NULL |
fecha_registro |
DATE | NOT NULL |
4.2.3 Tabla 3: proveedores
| Columna | Tipo | Opciones |
|---|---|---|
proveedor_id |
INT | PK, NOT NULL, AUTO_INCREMENT |
nombre_proveedor |
VARCHAR(100) | NOT NULL |
rut |
VARCHAR(12) | NOT NULL, UNIQUE |
contacto |
VARCHAR(100) | NULL |
email |
VARCHAR(100) | NULL |
telefono |
VARCHAR(20) | NULL |
4.2.4 Tabla 4: productos
| Columna | Tipo | Opciones |
|---|---|---|
producto_id |
INT | PK, NOT NULL, AUTO_INCREMENT |
nombre_producto |
VARCHAR(100) | NOT NULL |
categoria_id |
INT | NOT NULL (FK → categorias) |
precio_venta |
DECIMAL(10,2) | NOT NULL |
costo_unitario |
DECIMAL(10,2) | NOT NULL |
stock |
INT | NOT NULL, DEFAULT 0 |
activo |
TINYINT(1) | NOT NULL, DEFAULT 1 |
4.2.5 Tabla 5: ventas
| Columna | Tipo | Opciones |
|---|---|---|
venta_id |
INT | PK, NOT NULL, AUTO_INCREMENT |
fecha |
DATE | NOT NULL |
cliente_id |
INT | NOT NULL (FK → clientes) |
4.2.6 Tabla 6: detalle_ventas
| Columna | Tipo | Opciones |
|---|---|---|
venta_id |
INT | PK, NOT NULL (FK → ventas) |
producto_id |
INT | PK, NOT NULL (FK → productos) |
cantidad |
INT | NOT NULL |
precio_unitario |
DECIMAL(10,2) | NOT NULL |
descuento_pct |
DECIMAL(5,2) | NULL, DEFAULT 0 |
Clave primaria compuesta: en Workbench, marca ambas columnas como PK (clic en el ícono de llave de cada una). La PK compuesta garantiza que no pueda repetirse la misma combinación (venta_id, producto_id) — es decir, el mismo producto no puede aparecer dos veces en la misma venta.
4.2.7 Tabla 7: proveedor_producto
| Columna | Tipo | Opciones |
|---|---|---|
proveedor_id |
INT | PK, NOT NULL (FK → proveedores) |
producto_id |
INT | PK, NOT NULL (FK → productos) |
precio_compra |
DECIMAL(10,2) | NOT NULL |
plazo_entrega_dias |
INT | NULL |
proveedor_principal |
TINYINT(1) | NOT NULL, DEFAULT 0 |
4.2.8 Tabla 8: despachos
| Columna | Tipo | Opciones |
|---|---|---|
despacho_id |
INT | PK, NOT NULL, AUTO_INCREMENT |
venta_id |
INT | NOT NULL, UNIQUE (FK → ventas) |
direccion_entrega |
VARCHAR(200) | NOT NULL |
fecha_despacho |
DATE | NULL |
fecha_entrega_estimada |
DATE | NULL |
fecha_entrega_real |
DATE | NULL |
estado |
VARCHAR(20) | NOT NULL, DEFAULT ‘Pendiente’ |
UNIQUE en venta_id enforza la relación 1:1 con ventas: cada venta puede tener máximo un despacho.
4.2.9 Tabla 9: devoluciones
| Columna | Tipo | Opciones |
|---|---|---|
devolucion_id |
INT | PK, NOT NULL, AUTO_INCREMENT |
venta_id |
INT | NOT NULL (FK → ventas) |
producto_id |
INT | NOT NULL (FK → productos) |
fecha_devolucion |
DATE | NOT NULL |
cantidad_devuelta |
INT | NOT NULL |
motivo |
VARCHAR(200) | NULL |
estado |
VARCHAR(20) | NOT NULL, DEFAULT ‘Pendiente’ |
monto_reembolsado |
DECIMAL(10,2) | NULL |
4.3 Paso 6: Dibujar las relaciones
Usa las herramientas de relación de la paleta izquierda de Workbench para conectar las tablas. Para cada relación, selecciona la herramienta apropiada y haz clic primero en la tabla hija (la que tiene la FK), luego en la tabla padre (la que tiene la PK referenciada).
| Relación | Tipo | Tabla hija → Tabla padre |
|---|---|---|
| Producto tiene Categoría | 1:N | productos.categoria_id → categorias.categoria_id |
| Categoría tiene Subcategoría | 1:N (auto) | categorias.categoria_padre_id → categorias.categoria_id |
| Cliente realiza Ventas | 1:N | ventas.cliente_id → clientes.cliente_id |
| Venta contiene Detalles | 1:N | detalle_ventas.venta_id → ventas.venta_id |
| Producto aparece en Detalles | 1:N | detalle_ventas.producto_id → productos.producto_id |
| Proveedor abastece Productos | N:M | proveedor_producto.proveedor_id → proveedores.proveedor_id |
| Producto es abastecido | N:M | proveedor_producto.producto_id → productos.producto_id |
| Venta genera Despacho | 1:1 | despachos.venta_id → ventas.venta_id |
| Venta origina Devoluciones | 1:N | devoluciones.venta_id → ventas.venta_id |
| Producto referenciado en Dev. | 1:N | devoluciones.producto_id → productos.producto_id |
Para la relación auto-referencial de categorias: usa la herramienta “1:N Non-Identifying” y haz clic dos veces en la misma tabla categorias. Workbench creará la FK apuntando a sí misma.
4.4 Paso 7: Verificar el diagrama
Antes de continuar, revisa:
Guarda el modelo: File → Save Model As → W05_techstyle_model.mwb.
El laboratorio continúa la próxima semana: en W06_lab generarás el script SQL desde este modelo (Forward Engineering), lo ejecutarás en MySQL Server y cargarás los primeros datos reales de TechStyle.
5 Entregable
Sube a la plataforma los siguientes archivos comprimidos en W05_lab_[apellido1]_[apellido2].zip:
| Archivo | Contenido |
|---|---|
W05_casos_uso.png |
Diagrama de Casos de Uso exportado desde draw.io |
W05_techstyle_model.mwb |
Modelo EER de MySQL Workbench con las 9 tablas y sus relaciones |
6 Criterios de Evaluación
| Criterio | Puntaje |
|---|---|
| Diagrama de Casos de Uso: actores correctos, casos de uso completos, conexión a entidades (Parte 1) | 40 pts |
| EER Diagram: 9 tablas completas, relaciones y cardinalidades correctas, FK auto-referencial de categorías (Parte 2) | 60 pts |
| Total | 100 pts |