Diseñar un esquema de base de datos normalizado

Convierte requisitos de negocio en un esquema relacional normalizado con entidades, claves, restricciones, índices, DDL y consultas de validación. Pensado para ChatGPT, Claude y Gemini. Incluye 6 variables personalizables y se copia gratis en un clic.

Avanzado · Código · Pendiente de revisión editorial

Pensado para:

Prompt

Actúa como arquitecto de datos con experiencia en modelado relacional y en {{motor}}.

Contexto de la aplicación: {{aplicacion}}.
Requisitos funcionales (lo que el sistema debe registrar y permitir): {{requisitos}}.
Volumen estimado: {{volumen}}.
Consultas más frecuentes: {{consultas}}.

Entrega, en este orden:
1. Lista de entidades y atributos derivados de los requisitos, señalando cualquier ambigüedad que necesites que te aclare.
2. Diagrama entidad-relación en sintaxis Mermaid (`erDiagram`) con cardinalidades.
3. Justificación de la normalización hasta 3FN (y dónde convendría desnormalizar a propósito, con el motivo).
4. DDL completo para {{motor}}: tipos de datos adecuados, claves primarias (y criterio: enteros, UUID o ULID), claves foráneas con `ON DELETE` razonado, `NOT NULL`, `UNIQUE`, `CHECK` y valores por defecto.
5. Índices recomendados para las consultas frecuentes, explicando cada uno.
6. Estrategia para borrado lógico, auditoría (`created_at`, `updated_at`) y datos personales sensibles.
7. Tres consultas SQL de ejemplo que demuestren que el esquema cubre los casos de uso principales.
8. Riesgos de evolución del esquema y cómo gestionarlos con migraciones.

Restricciones:
- No añadas entidades que no se deduzcan de los requisitos sin avisarme.
- Nombres de tablas y columnas en {{idioma_nombres}}, en snake_case.
- Si falta información crítica, pregúntame antes de escribir el DDL.

Cómo usarlo

  1. Escribe los requisitos como frases sencillas: «un cliente puede tener varias direcciones».
  2. Añade las consultas que más usarás; definen los índices.
  3. Pega el diagrama Mermaid en un visor compatible para revisarlo.
  4. Ejecuta el DDL en una base de datos de pruebas antes de crear las migraciones definitivas.

Ejemplo de uso

Aplicación: gestión de una academia · Requisitos: alumnos, cursos, grupos, matrículas y pagos mensuales · Motor: PostgreSQL 16.

Resultado de ejemplo

4. DDL (extracto, PostgreSQL 16)

CREATE TABLE students (
  id          bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  full_name   text NOT NULL,
  email       text NOT NULL UNIQUE,
  created_at  timestamptz NOT NULL DEFAULT now(),
  deleted_at  timestamptz                -- borrado lógico
);

CREATE TABLE enrollments (
  id              bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  student_id      bigint NOT NULL REFERENCES students (id) ON DELETE RESTRICT,
  class_group_id  bigint NOT NULL REFERENCES class_groups (id) ON DELETE RESTRICT,
  enrolled_on     date NOT NULL DEFAULT current_date,
  UNIQUE (student_id, class_group_id)
);

CREATE TABLE monthly_payments (
  id             bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  enrollment_id  bigint NOT NULL REFERENCES enrollments (id) ON DELETE RESTRICT,
  period         date NOT NULL CHECK (extract(day FROM period) = 1),
  amount_cents   integer NOT NULL CHECK (amount_cents >= 0),
  paid_at        timestamptz,
  UNIQUE (enrollment_id, period)
);

-- Índice parcial para "alumnos con pagos pendientes"
CREATE INDEX idx_payments_unpaid ON monthly_payments (period) WHERE paid_at IS NULL;

ON DELETE RESTRICT evita perder el historial de pagos si alguien borra un alumno; por eso se usa borrado lógico. Los importes van en céntimos para evitar errores de redondeo.

Ambigüedades

  • ¿Un pago cubre una matrícula o todas las del alumno en ese mes? [COMPLETAR]…

Datos clave

Categoría
Programación y desarrollo · SQL
Tipo de resultado
Código
Nivel
Avanzado
Pensado para
ChatGPT, Claude y Gemini
Verificado en
Pendiente de verificación editorial
Variables
Motor de base de datos, Aplicación, Requisitos, Volumen estimado, Consultas frecuentes y Idioma de los nombres
Idioma
Español
Precio
Gratis, sin registro
Actualizado
07/11/2026

Preguntas frecuentes

¿Siempre hay que normalizar hasta 3FN?

Es un buen punto de partida para evitar duplicados e incoherencias. En informes o tablas con muchísimas lecturas puede compensar desnormalizar, pero debe ser una decisión consciente y documentada.

¿UUID o identificadores enteros?

Los enteros son compactos y rápidos; los UUID o ULID evitan exponer el número de registros y facilitan generar identificadores fuera de la base de datos. El prompt te pide justificar la elección.

¿Para qué sirve este prompt?

Convierte requisitos de negocio en un esquema relacional normalizado con entidades, claves, restricciones, índices, DDL y consultas de validación.

¿Con qué herramientas de IA funciona?

Está pensado para ChatGPT, Claude y Gemini. Todavía no lo hemos verificado en estas herramientas, por lo que los resultados pueden variar entre ellas.

¿Cómo personalizo el prompt?

Pulsa «Personalizar» y rellena las variables (Motor de base de datos, Aplicación, Requisitos, Volumen estimado, Consultas frecuentes y Idioma de los nombres). El texto se actualiza al instante y después puedes copiarlo con un clic. Los valores se guardan solo en tu navegador.

¿Necesito experiencia para usarlo?

Es de nivel avanzado: está pensado para personas con experiencia en el tema que sepan evaluar y ajustar el resultado.

¿Este prompt es gratis?

Sí. Todos los prompts de HomeCasa Prompts son gratuitos, sin registro ni suscripción. Puedes usarlos también en proyectos profesionales.

¿Puedo fiarme del resultado de la IA?

Úsalo como un borrador de calidad: revisa siempre datos, cifras y afirmaciones importantes antes de publicarlos o tomar decisiones.

Prompts relacionados