From alfred-dev
Designs normalized (3NF) relational database schemas with indexes, constraints, naming conventions, and documentation from functional requirements. Guides entity extraction, relationships, and ERD generation.
npx claudepluginhub 686f6c61/alfred-dev --plugin alfred-devThis skill uses the workspace's default tool permissions.
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.
Designs normalized database schemas with relationships and constraints for PostgreSQL and MySQL. Use for new schemas, table design, data modeling, and normalization analysis.
Designs normalized relational database schemas for PostgreSQL and MySQL from requirements, generating DDL, constraints, indexes, relationships, and migrations.
Designs scalable database schemas with data modeling, migrations, relationships, indexes, normalization, and denormalization for systems handling billions of rows. Activates on schema, migration, Prisma/Drizzle mentions.
Share bugs, ideas, or general feedback.
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.