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?
Tip

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

  1. Abre draw.ioCrear diagrama en blanco.
  2. Dibuja el límite del sistema (rectángulo grande) con el título “Sistema TechStyle”.
  3. Coloca los actores (figuras humanas o íconos de sistema) fuera del rectángulo.
  4. Dentro del rectángulo, dibuja los casos de uso (elipses) con nombres verbales: “Registrar Venta”, “Consultar Stock”, etc.
  5. Conecta cada actor con sus casos de uso mediante líneas de asociación (simples, sin flechas especiales).
Note

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
Important

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

  1. Abre MySQL Workbench.
  2. En la pantalla principal, haz clic en “+” junto a MySQL Models para crear un modelo nuevo.
  3. Cambia el nombre del modelo a techstyle_v2 (doble clic en el nombre).
  4. En el panel inferior, haz doble clic en “Add Diagram” para abrir el editor EER.
Tip

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)
Note

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
Important

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’
Note

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_idcategorias.categoria_id
Categoría tiene Subcategoría 1:N (auto) categorias.categoria_padre_idcategorias.categoria_id
Cliente realiza Ventas 1:N ventas.cliente_idclientes.cliente_id
Venta contiene Detalles 1:N detalle_ventas.venta_idventas.venta_id
Producto aparece en Detalles 1:N detalle_ventas.producto_idproductos.producto_id
Proveedor abastece Productos N:M proveedor_producto.proveedor_idproveedores.proveedor_id
Producto es abastecido N:M proveedor_producto.producto_idproductos.producto_id
Venta genera Despacho 1:1 despachos.venta_idventas.venta_id
Venta origina Devoluciones 1:N devoluciones.venta_idventas.venta_id
Producto referenciado en Dev. 1:N devoluciones.producto_idproductos.producto_id
Tip

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

Note

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