Blog Iscjoseluischavezg

Encuentra contenido que te ayudara a iniciar en el maravilloso mundo del desarrollo y lla programación.

José Luis Chávez – Desarrollador web y docente en México

Modelo Entidad-Relación con IA en Draw.io: Sistema de Facturación COMPLETO (Paso a Paso 2026)

¿Alguna vez has intentado crear una base de datos sin hacer un modelo primero y terminas con un desastre de tablas que no se conectan?

Es como construir una casa sin planos arquitectónicos. Empiezas a poner ladrillos y de repente te das cuenta de que las puertas no abren, las ventanas quedan en lugares imposibles y… ¡la estructura se cae!

La solución: Un Modelo Entidad-Relación (MER) profesional.

En este tutorial de 40 minutos, te voy a enseñar exactamente cómo diseñar el diagrama ER completo de un sistema de facturación real, usando dos métodos:

  • Método MANUAL en Draw.io (para que entiendas cada decisión)
  • Método con INTELIGENCIA ARTIFICIAL (¡ahorra 80% de tiempo!)

Al final de este artículo, tendrás tu primer modelo entidad-relación listo para convertir en SQL. ¡Vamos allá!

1. Fundamentos: ¿Qué es un Modelo Entidad-Relación?

Antes de abrir Draw.io, necesitas entender los 3 pilares del modelado de bases de datos:

Entidades

Son los objetos o conceptos sobre los cuales quieres guardar información. En nuestro sistema de facturación:

  • Cliente (la persona que compra)
  • Producto (lo que se vende)
  • Factura (el comprobante de venta)

Analogía práctica: Piensa en las entidades como los sustantivos de tu sistema. Si puedes decir «un/una ___», probablemente es una entidad.

Atributos

Son las características o propiedades de cada entidad. Por ejemplo:

  • Cliente: id_cliente, nombre, email, teléfono, dirección
  • Producto: id_producto, nombre, precio_unitario, stock
Relaciones

Son las conexiones entre entidades. Responden a la pregunta: «¿Cómo se relacionan?»

  • «Un cliente realiza una factura»
  • «Una factura contiene varios productos»

2. Cardinalidad: La CLAVE para relaciones correctas

La cardinalidad define cuántas instancias de una entidad pueden relacionarse con otra. Hay 3 tipos principales:

Uno a Uno (1:1)

Ejemplo: Un usuario tiene un solo perfil.

Usuario ──────── Perfil
1 ──────────────── 1
Uno a Muchos (1:N) – LA MÁS COMÚN

Ejemplo: Un cliente puede tener muchas facturas, pero cada factura es de un solo cliente.

Cliente ──────── Factura
1 ──────────────── N
Muchos a Muchos (N:M) – REQUIERE TABLA INTERMEDIA

Ejemplo: Una factura puede tener muchos productos, y un producto puede estar en muchas facturas.

Factura ──────── Detalle_Factura ──────── Producto
1 ──────────────── N ──────────────── 1
✅ Regla de oro: Las relaciones N:M siempre requieren una tabla intermedia (en este caso, Detalle_Factura) que se convierte en una entidad propia con sus atributos.

3. Análisis del Sistema de Facturación 

Antes de diseñar, hazte estas 3 preguntas críticas:

Pregunta 1: ¿Quiénes participan en la venta?

Respuesta: El Cliente (quien compra) y el Vendedor (quien atiende, opcional).

Pregunta 2: ¿Qué se vende?

Respuesta: Productos organizados en Categorías.

Pregunta 3: ¿Cómo se registra el detalle?

Respuesta: A través de una Factura que contiene múltiples Detalles de Factura (cada producto vendido con cantidad y precio).

Entidades identificadas:
  1. Cliente – Quien compra
  2. Producto – Lo que se vende
  3. Categoría – Clasificación de productos
  4. Factura – Comprobante de venta
  5. Detalle_Factura – Líneas de productos en cada factura

4. Definiendo Entidades y Atributos (Paso a Paso)

Ahora vamos a definir cada entidad con sus atributos. Presta atención a las llaves primarias (PK) y llaves foráneas (FK).

🔹 Entidad: CLIENTE
CLIENTE
─────────────────────
PK id_cliente (INT, AUTO_INCREMENT)
    nombre (VARCHAR 100)
    email (VARCHAR 100, UNIQUE)
    telefono (VARCHAR 20)
    direccion (TEXT)
    fecha_registro (DATETIME)
Entidad: CATEGORÍA
CATEGORIA
─────────────────────
PK id_categoria (INT, AUTO_INCREMENT)
    nombre (VARCHAR 50)
    descripcion (TEXT)
Entidad: PRODUCTO
PRODUCTO
─────────────────────
PK id_producto (INT, AUTO_INCREMENT)
FK id_categoria (INT)
    nombre (VARCHAR 100)
    descripcion (TEXT)
    precio_unitario (DECIMAL 10,2)
    stock (INT)
Entidad: FACTURA
FACTURA
─────────────────────
PK id_factura (INT, AUTO_INCREMENT)
FK id_cliente (INT)
    fecha_emision (DATETIME)
    total (DECIMAL 10,2)
    estado (ENUM: ‘pendiente’, ‘pagada’, ‘cancelada’)
Entidad: DETALLE_FACTURA (Tabla Intermedia)
DETALLE_FACTURA
─────────────────────
PK id_detalle (INT, AUTO_INCREMENT)
FK id_factura (INT)
FK id_producto (INT)
    cantidad (INT)
    precio_unitario (DECIMAL 10,2)
    subtotal (DECIMAL 10,2)
⚠️ Importante: La tabla Detalle_Factura tiene dos llaves foráneas porque conecta Factura con Producto. Además, tiene atributos propios como cantidad y precio_unitario (el precio al momento de la venta, no el precio actual del producto).

5. Estableciendo Relaciones y Cardinalidad

Ahora conectamos todo con las relaciones correctas:

Relación 1: Cliente → Factura
  • Tipo: Uno a Muchos (1:N)
  • Lógica: Un cliente puede tener muchas facturas, pero cada factura pertenece a un solo cliente
  • Implementación: La FK id_cliente va en la tabla Factura
Relación 2: Categoría → Producto
  • Tipo: Uno a Muchos (1:N)
  • Lógica: Una categoría puede tener muchos productos, pero cada producto pertenece a una sola categoría
  • Implementación: La FK id_categoria va en la tabla Producto
Relación 3: Factura ↔ Producto (a través de Detalle_Factura)
  • Tipo: Muchos a Muchos (N:M) resuelto con tabla intermedia
  • Lógica: Una factura puede tener muchos productos, y un producto puede estar en muchas facturas
  • Implementación: La tabla Detalle_Factura tiene FKs a ambas tablas
Diagrama de Relaciones:
CLIENTE (1) ──────< (N) FACTURA
                        │
                        │ (1)
                        │
                        ▼ (N)
                 DETALLE_FACTURA
                        │
                        │ (N)
                        │
                        ▼ (1)
                    PRODUCTO (N) ──────> (1) CATEGORIA

6. Creación MANUAL en Draw.io (Paso a Paso)

Ahora vamos a visualizar todo esto en Draw.io. Esta herramienta es gratuita y perfecta para diagramas ER.

Paso 1: Acceder a Draw.io
  1. Ve a https://app.diagrams.net/
  2. Haz clic en «Create New Diagram»
  3. Selecciona «Entity Relation» en las plantillas
  4. Haz clic en «Create»
Paso 2: Configurar el lienzo
  • En el panel izquierdo, busca la sección «Entity Relation»
  • Verás formas predefinidas para: Entidades, Atributos, Relaciones
  • Ajusta el zoom al 100% para trabajar cómodamente
Paso 3: Crear las entidades
  1. Arrastra un rectángulo de «Entity» al lienzo
  2. Escribe: CLIENTE
  3. Dentro del rectángulo, añade los atributos:
    • id_cliente (PK)
    • nombre
    • email
    • telefono
    • direccion
    • fecha_registro
  4. Repite para: CATEGORIA, PRODUCTO, FACTURA, DETALLE_FACTURA
Paso 4: Establecer las relaciones
  1. Selecciona la herramienta de «Relationship» (línea con rombo)
  2. Conecta CLIENTE con FACTURA:
    • En el lado de CLIENTE: 1
    • En el lado de FACTURA: N
    • Etiqueta de la relación: "realiza"
  3. Conecta CATEGORIA con PRODUCTO:
    • Cardinalidad: 1:N
    • Etiqueta: "clasifica"
  4. Conecta FACTURA con DETALLE_FACTURA:
    • Cardinalidad: 1:N
    • Etiqueta: "contiene"
  5. Conecta PRODUCTO con DETALLE_FACTURA:
    • Cardinalidad: 1:N
    • Etiqueta: "incluye"
Paso 5: Marcar llaves primarias y foráneas
  • Usa el símbolo PK para llaves primarias
  • Usa el símbolo FK para llaves foráneas
  • Coloca estos símbolos junto a cada atributo correspondiente
Paso 6: Guardar y exportar
  1. Ve a File → Save As
  2. Elige formato: .drawio (editable) o .png (imagen)
  3. ¡Listo! Tu diagrama ER está completo
✅ Consejo Pro: Guarda siempre el archivo .drawio por si necesitas hacer modificaciones futuras. La imagen PNG es solo para documentación.

7. Generación con INTELIGENCIA ARTIFICIAL (¡Ahorra 80% de tiempo!)

Ahora viene la magia de la IA. Puedes generar tu diagrama ER automáticamente usando herramientas como ChatGPT, Claude o Gemini.

Paso 1: Preparar el prompt

Copia y pega este prompt optimizado en tu IA favorita:

Actúa como un experto en bases de datos relacionales. Diseña un Modelo Entidad-Relación completo para un sistema de facturación con las siguientes entidades y atributos: 1. CLIENTE: id_cliente (PK), nombre, email, telefono, direccion, fecha_registro 2. CATEGORIA: id_categoria (PK), nombre, descripcion 3. PRODUCTO: id_producto (PK), id_categoria (FK), nombre, descripcion, precio_unitario, stock 4. FACTURA: id_factura (PK), id_cliente (FK), fecha_emision, total, estado 5. DETALLE_FACTURA: id_detalle (PK), id_factura (FK), id_producto (FK), cantidad, precio_unitario, subtotal Relaciones: – Un cliente puede tener muchas facturas (1:N) – Una categoría puede tener muchos productos (1:N) – Una factura puede tener muchos detalles (1:N) – Un producto puede estar en muchos detalles (1:N) Genera el código en formato Mermaid.js para visualizar el diagrama ER.
Paso 2: Obtener el resultado

La IA te devolverá algo como esto:

«`mermaid erDiagram CLIENTE ||–o{ FACTURA : «realiza» CLIENTE { int id_cliente PK string nombre string email string telefono text direccion datetime fecha_registro } CATEGORIA ||–o{ PRODUCTO : «clasifica» CATEGORIA { int id_categoria PK string nombre text descripcion } PRODUCTO ||–o{ DETALLE_FACTURA : «incluye» PRODUCTO { int id_producto PK int id_categoria FK string nombre text descripcion decimal precio_unitario int stock } FACTURA ||–o{ DETALLE_FACTURA : «contiene» FACTURA { int id_factura PK int id_cliente FK datetime fecha_emision decimal total string estado } DETALLE_FACTURA { int id_detalle PK int id_factura FK int id_producto FK int cantidad decimal precio_unitario decimal subtotal }
Paso 3: Visualizar el diagrama
  1. Copia el código mermaid generado
  2. Ve a https://mermaid.live/
  3. Pega el código en el editor
  4. ¡Listo! Verás tu diagrama ER renderizado automáticamente
Paso 4: Exportar a Draw.io
  1. En Mermaid Live, haz clic en «Actions»
  2. Selecciona «Export PNG/SVG»
  3. O copia el código y pégalo en Draw.io usando el plugin de Mermaid
⚠️ Advertencia importante: La IA es increíblemente rápida, pero siempre valida el resultado. Revisa que:
  • Todas las llaves primarias y foráneas estén correctas
  • Las cardinalidades coincidan con tu análisis
  • No falten atributos importantes
  • Los tipos de datos sean apropiados
Comparativa: Manual vs IA
Aspecto Manual Con IA
Tiempo 30-40 minutos 5-10 minutos
Aprendizaje ✅ Alto ⚠️ Medio
Precisión ✅ Depende de ti ⚠️ Requiere validación
Recomendado para Principiantes (aprender) Profesionales (rapidez)
¿Qué sigue después de esto?

Ahora que tienes tu Modelo Entidad-Relación completo, estás listo para:

  1. ✅ Convertir el MER en un Modelo Relacional
  2. ✅ Generar el código SQL para crear las tablas en MySQL
  3. ✅ Insertar datos de prueba con sentencias INSERT
  4. ✅ Escribir consultas SELECT con JOIN para obtener información combinada
🎬 Próximo video de la serie: «Del Modelo Entidad-Relación al Código SQL: Convierte tu Diagrama en Tablas MySQL Funcionales»
¿Prefieres aprender con video?

Si eres de los que aprende mejor viendo el proceso paso a paso, suscríbete al canal de YouTube donde subo tutoriales prácticos cada semana:

🔴 Suscribirse al Canal de YouTube

¿Qué sigue después de esto? 

Ahora que tienes tu Modelo Entidad-Relación completo, estás listo para:

  1. ✅ Convertir el MER en un Modelo Relacional
  2. ✅ Generar el código SQL para crear las tablas en MySQL
  3. ✅ Insertar datos de prueba con sentencias INSERT
  4. ✅ Escribir consultas SELECT con JOIN para obtener información combinada

 

¿Te fue útil este tutorial? ¡Compártelo! 🙌

Comparte con tus compañeros de clase o ese amigo que siempre hace bases de datos sin modelo. 😉

Facebook
Threads
WhatsApp
Email
Ir a zona de recursos