skills/datos/schema-design/SKILL.md
Diseñar esquemas de base de datos normalizados con índices y documentación. Activar cuando el usuario quiera diseñar base de datos, crear tablas, definir relaciones, aplicar normalizacion, configurar indices, crear un modelo de datos o generar un ERD.
npx skillsauth add 686f6c61/alfred-dev schema-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Este skill guía el proceso de diseñar un esquema de base de datos relacional a partir de requisitos funcionales. El diseño no es solo crear tablas que almacenen datos, sino modelar el dominio del negocio de forma que garantice integridad, rendimiento y evolución sostenible.
El esquema resultante debe estar normalizado hasta la tercera forma normal (3NF) como mínimo, con índices justificados, constraints que protejan la integridad y documentación que permita a cualquier miembro del equipo entender cada tabla y columna sin necesidad de leer el código de la aplicación.
Analizar los requisitos y extraer entidades. A partir de los requisitos funcionales, identificar las entidades del dominio. Cada sustantivo relevante es un candidato a entidad: usuario, pedido, producto, factura. Documentar qué atributos tiene cada entidad y cuáles son obligatorios.
Definir las relaciones entre entidades. Para cada par de entidades relacionadas, determinar la cardinalidad:
Documentar la dirección de la relación y si es obligatoria u opcional en cada extremo.
Normalizar hasta 3NF. Aplicar las formas normales secuencialmente:
Si hay motivos de rendimiento para desnormalizar, documentar la justificación explícitamente.
Aplicar convenciones de naming. Mantener coherencia en todo el esquema:
users, order_items, payment_methods.email, created_at, total_amount.id o <tabla_singular>_id.<tabla_referenciada_singular>_id.idx_<tabla>_<columnas>.created_at y updated_at en todas las tablas.Definir constraints e integridad referencial. Para cada tabla:
Diseñar los índices. Los índices se crean para consultas concretas, no de forma preventiva:
Adaptar al ORM del proyecto. Traducir el diseño a la sintaxis del ORM utilizado (Prisma, Drizzle, SQLAlchemy, Django ORM, TypeORM). Asegurarse de que las relaciones, índices y constraints se expresan correctamente en el modelo del ORM, ya que no todos soportan las mismas funcionalidades.
Registrar las decisiones de modelado. Registrar las decisiones de modelado en la memoria del proyecto con memory_log_decision. Esto incluye el motivo de cada desnormalización, la elección de tipos de datos especiales y las concesiones de rendimiento vs. integridad.
Documentar el esquema. Cada tabla debe tener un comentario que explique su propósito. Las columnas no obvias deben documentar qué representan, sus valores posibles y sus restricciones. Si el motor lo permite, usar comentarios nativos (COMMENT ON); si no, documentar en un fichero adjunto o en el propio código del ORM.
deleted_at) sin evaluar las consecuencias en queries, índices y unicidad.TIMESTAMP para fechas, DECIMAL para dinero, UUID para identificadores distribuidos.testing
Abrir y operar el companion visual de Selina para elegir una direccion de estilo en proyectos con interfaz. Skill manual: levanta un servidor local y escribe artefactos visuales.
tools
Configurar un repositorio GitHub con branch protection, templates y labels
tools
Crear releases con versionado semantico, notas y artefactos
testing
Crear pull requests completas con descripcion, labels y reviewers