Elección de claves y tipos
Elija entre claves primarias BIGSERIAL y UUID, decida entre TEXT y VARCHAR(n) y seleccione el tipo adecuado para cada columna.
Elección de claves y tipos es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
Elegir una clave primaria
Tres opciones reales:
- BIGSERIAL — entero de 64 bits que aumenta monótonamente
- UUID — identificador único global de 128 bits
- Clave natural — un identificador del mundo real (correo electrónico, ISBN)
Cuándo conviene BIGSERIAL
La opción predeterminada para la mayoría de las aplicaciones:
- Pequeño (8 bytes), índice rápido y eficiente para la caché
- Monótono → los datos recientes se agrupan al final del índice
- Legible en las URL (por ejemplo,
/posts/42)
Cuándo conviene UUID
Elija UUID cuando:
- Necesite identificadores únicos globalmente (varios centros de datos, aplicaciones offline-first)
- No quiera que los identificadores revelen el volumen de negocio en las URL
- Quiera generar el identificador en el cliente antes de la inserción
Coste: 16 bytes (frente a 8 para BIGINT), y los UUID v4 aleatorizan las inserciones en el índice.
Por qué las claves naturales son arriesgadas
Las direcciones de correo electrónico cambian. Los SKU cambian de nombre. Los códigos de país se dividen. Use una clave sustituta como PK y una restricción UNIQUE sobre la clave natural.
Tipos de columna: cadenas
Para la mayoría de las columnas de texto:
VARCHAR(n)— cuando tiene un límite superior estricto (correos electrónicos, códigos)TEXT— para contenido largo y de formato libreCITEXT— cuando la comparación debe ignorar siempre las mayúsculas y minúsculas (¡correos electrónicos!)
Tipos de columna: números
Para las columnas numéricas:
BIGINTpara identificadores y contadoresNUMERIC(p, s)para importes monetariosREAL/DOUBLE PRECISIONúnicamente para cálculos científicos
Tipos de columna: tiempo
Para las columnas de tiempo:
TIMESTAMPTZpara eventos (predeterminado)DATEpara días del calendario (fechas de nacimiento, festivos)TIMEpara la hora del día sin fecha (horarios de apertura)
Booleano frente a estado
Si una columna puede tener más de dos estados futuros, prefiera un texto de estado con CHECK en lugar de un booleano:
-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))
-- vs the trap of "is_published BOOLEAN" when you later need a third state.Restricciones asociadas
Cada columna debe tener:
- El tipo más limitado que se ajuste a sus necesidades
NOT NULL, a menos que NULL tenga un significado- Un
DEFAULTsi la columna suele tener el mismo valor - Un
CHECKsi existe una regla de dominio - Un índice si se usa en WHERE/JOIN/ORDER
Implicaciones de almacenamiento
Los tipos más pequeños = filas más pequeñas = más filas por página = mejor tasa de aciertos de la caché. Cambiar TEXT por VARCHAR(20) no ahorra espacio (usan el mismo almacenamiento). Cambiar BIGINT por INT reduce a la mitad el ancho de la columna.
Los tipos de las claves foráneas deben coincidir
Los tipos de las columnas FK deben coincidir exactamente con el tipo de la PK referenciada:
-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id) -- where users.id is BIGINT
-- Right:
user_id BIGINT REFERENCES users(id)Resumen
Elegir el tipo es una decisión de diseño.
- BIGSERIAL o UUID para las PK
- NUMERIC para importes monetarios
- TIMESTAMPTZ para eventos
- TEXT con CHECK para estados que pueden evolucionar
- NOT NULL de forma predeterminada
Comprobación rápida
Está almacenando marcas de tiempo de eventos para usuarios de muchas zonas horarias. ¿Qué tipo debe usar?
Preguntas frecuentes
¿La lección «Elección de claves y tipos» es gratis?
Sí — el texto completo de «Elección de claves y tipos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Elección de claves y tipos»?
Elija entre claves primarias BIGSERIAL y UUID, decida entre TEXT y VARCHAR(n) y seleccione el tipo adecuado para cada columna. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Elección de claves y tipos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Modelado de un blog: usuarios, publicaciones y comentarios
- Elección de claves y tipos
- Índices para consultas habituales
- Carga de datos de prueba en la base de datos