Communitygithub.com

hicucu/rdb-skill

Habilidad de agente de IA para bases de datos relacionales, neutral en cuanto al motor (común para MySQL/MariaDB/MSSQL).

¿Qué es rdb-skill?

Este skill proporciona un conjunto de prácticas recomendadas y principios neutrales al motor para trabajar con bases de datos relacionales (MySQL, MariaDB, MSSQL). Está diseñado para ayudar a agentes de IA, como Claude Code o Cursor, a diseñar esquemas, optimizar consultas, gestionar índices, manejar transacciones y planificar migraciones de forma segura, basándose en evidencia medida (como planes de ejecución) en lugar de reglas generales. El contenido está estructurado en secciones que cubren diseño de esquemas, indexación, optimización de consultas, transacciones y bloqueos, así como migraciones DDL. Además, incluye un cheatsheet de diferencias dialectales entre motores para evitar errores comunes al escribir SQL portable. Es útil para desarrolladores y equipos que mantienen código en múltiples motores de bases de datos relacionales y buscan un enfoque consistente y basado en datos.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add hicucu/rdb-skill

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Base de Datos Relacional (Neutral al Motor)

Resumen

Prácticas recomendadas neutrales al motor para bases de datos relacionales. Los principios y patrones se escriben una vez; solo los puntos donde los dialectos SQL divergen (MSSQL vs MySQL/MariaDB) se marcan en línea o se recogen en la hoja de trucos de dialectos. Optimizar por corrección y el cambio más pequeño respaldado por evidencia medida.

Cuándo usar

  • Diseñar o revisar un esquema (tablas, claves, normalización, tipos de datos).
  • Agregar o corregir índices; diagnosticar consultas lentas o escaneos completos de tablas.
  • Leer un plan de ejecución para encontrar el cuello de botella.
  • Elegir o solucionar problemas de aislamiento de transacciones, bloqueo o interbloqueos.
  • Paginar grandes conjuntos de resultados; eliminar el acceso N+1.
  • Planificar una migración de esquema segura para producción.

No para: análisis profundos internos del motor (internos del motor de almacenamiento como el grupo de búfer de InnoDB, características exclusivas del proveedor, construcciones solo T-SQL, topología de replicación/fragmentación). Utilice la documentación del propio motor o un skill dedicado a un solo motor.

Flujo de trabajo

  1. Establecer el contexto primero. ¿Qué motor + versión principal? Mezcla de lectura/escritura, volumen de filas, objetivo de latencia, OLTP vs analítica. Los consejos cambian con estos.
  2. Leer solo la referencia relevante enlazada en cada sección a continuación.
  3. Proponer el cambio más pequeño que resuelva el problema, con compensaciones.
  4. Validar con evidencia — capturar un plan de ejecución y métricas de filas/tiempo antes y después (ver references/execution-plans.md), no reglas generales.
  5. Para producción, incluir un plan de reversión y verificación posterior al despliegue.

Diseño de Esquemas

  • Modelar relaciones explícitamente; comenzar normalizado (3NF/BCNF) y desnormalizar solo con una razón medida. Cada tabla necesita una clave primaria estable.
  • Elegir el tipo de dato más estrecho correcto; restringir estados no válidos a nivel de esquema (NOT NULL, UNIQUE, CHECK, FK) en lugar de solo en código de aplicación.

Referencias: normalización · claves-y-restricciones · tipos-de-datos

Indexación

  • Indexar columnas utilizadas en WHERE, JOIN y ORDER BY — por selectividad, no por suposición. Orden de índice compuesto: columnas de igualdad primero, luego rango/orden (regla de prefijo más a la izquierda). Un predicado de rango detiene el uso del índice para columnas posteriores.
  • Los índices de cobertura evitan búsquedas en tabla. Auditar y eliminar índices no utilizados/duplicados; cada índice afecta las escrituras.

Referencias: indexación · índices-compuestos

Optimización de Consultas

  • Mantener los predicados SARGables — sin funciones/casteos implícitos en columnas indexadas en WHERE. Seleccionar solo las columnas necesarias. Preferir EXISTS sobre IN (subquery), UNION ALL sobre UNION cuando la deduplicación no es necesaria, y agrupar escrituras grandes.
  • Usar paginación por conjunto de claves (cursor) en lugar de OFFSET grande. Eliminar N+1 mediante agrupación o JOIN.

Referencias: optimización-de-consultas · planes-de-ejecución · paginación

Transacciones y Bloqueo

  • Mantener las transacciones cortas; realizar E/S y trabajo lento fuera de ellas. Acceder a las filas en un orden consistente para evitar interbloqueos; esperar interbloqueos y reintentar con retroceso.
  • Conocer el nivel de aislamiento predeterminado de su motor (es diferente) y las anomalías que cada nivel permite. Usar lecturas con bloqueo (FOR UPDATE) deliberadamente, no por hábito.

Referencias: transacciones-y-aislamiento · bloqueo-e-interbloqueos

Migraciones y DDL

  • Hacer cambios de esquema primero aditivos y compatibles hacia atrás; expandir → rellenar → contraer. El DDL grande/con bloqueo necesita una estrategia en línea y una ruta de reversión.

Referencia: migraciones-y-ddl

Diferencias de Dialectos del Motor

Auto-incremento, uso de comillas para identificadores, paginación, upsert, funciones de cadena, hora actual, EXPLAIN y valores predeterminados de aislamiento divergen entre motores. Confirmar la sintaxis para el motor objetivo antes de escribir SQL portable.

Referencia: hoja-de-trucos-de-dialectos-del-motor

Barreras de Protección

  • Preferir evidencia medida (planes de ejecución, métricas) sobre reglas generales.
  • Indicar el motor y la versión principal cuando el comportamiento dependa de él.
  • Obtener aprobación humana explícita antes de operaciones destructivas (DROP/DELETE/TRUNCATE o cualquier migración no reversible). Siempre confirmar que existe una copia de seguridad primero.

Skills relacionados