0Pricing
SQL Academy · Lección

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:

  1. BIGSERIAL — entero de 64 bits que aumenta monótonamente
  2. UUID — identificador único global de 128 bits
  3. 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 libre
  • CITEXT — 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:

  • BIGINT para identificadores y contadores
  • NUMERIC(p, s) para importes monetarios
  • REAL/DOUBLE PRECISION únicamente para cálculos científicos

Tipos de columna: tiempo

Para las columnas de tiempo:

  • TIMESTAMPTZ para eventos (predeterminado)
  • DATE para días del calendario (fechas de nacimiento, festivos)
  • TIME para 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 DEFAULT si la columna suele tener el mismo valor
  • Un CHECK si 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

  1. Modelado de un blog: usuarios, publicaciones y comentarios
  2. Elección de claves y tipos
  3. Índices para consultas habituales
  4. Carga de datos de prueba en la base de datos
← Volver a SQL Academy