Tema 6 · Índices & Claves

Claves Primarias (PRIMARY KEY), Índices Únicos y Auto Increment (A_I)

Aprende a definir Claves Primarias, activar Auto Increment en phpMyAdmin y utilizar Índices Únicos para garantizar la unicidad de correos y usuarios.

¿Por qué Toda Tabla Debe Tener una Clave Primaria (PRIMARY KEY)?

La Clave Primaria es la columna que identifica de forma única e irrepetible a cada fila de una tabla relacional.

Sin una clave primaria:

  • phpMyAdmin deshabilitará la edición y el borrado rápido en la pestaña Examinar (mostrando el mensaje: "La selección actual no contiene una columna única. No se pueden editar registros").
  • El motor de base de datos no podrá indexar eficientemente las búsquedas.
  • Será imposible crear claves foráneas para relacionar esta tabla con otras.

Cómo Activar Auto Increment (A_I) en phpMyAdmin

Para que cada nuevo usuario o producto registrado reciba automáticamente el número 1, 2, 3... sin que tengas que calcularlo en tu código PHP:

  1. En la fila de tu columna identificadora (habitualmente id), desplázate hacia la derecha.
  2. Localiza la columna con el encabezado A_I (Auto_Increment).
  3. Marca la casilla de verificación.
  4. Al marcarla, phpMyAdmin abrirá automáticamente una ventana emergente preguntándote si deseas asignar el índice como PRIMARY; confirma haciendo clic en Continuar.

Diferencias entre los Tipos de Índices en phpMyAdmin

Índice Símbolo en phpMyAdmin Propósito Ejemplo Típico
PRIMARY Llave dorada Identificador principal de la tabla. No admite valores nulos ni duplicados. Solo puede existir 1 por tabla. id INT UNSIGNED A_I
UNIQUE (Único) Huella / Llave azul Garantiza que no existan dos filas con el mismo valor, pero permite valores NULL. email VARCHAR(180) UNIQUE, codigo_sku
INDEX (Normal) Lupa / Índice Crea un árbol B-Tree para acelerar búsquedas rápidas con WHERE, ordenamientos con ORDER BY o columnas de relación. categoria_id, creado_en

⚡ Definición de Tabla de Usuarios con Índices Primarios y Únicos

Estructura SQL que implementa PRIMARY KEY en el ID y UNIQUE en el email:

indices-usuarios.sql
Solo lectura
CREATE TABLE `usuarios` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `nombre` VARCHAR(100) NOT NULL,
  `email` VARCHAR(150) NOT NULL,
  `password_hash` VARCHAR(255) NOT NULL,
  `creado_en` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  -- Llave primaria obligatoria
  PRIMARY KEY (`id`),
  -- Índice único para evitar cuentas con el mismo correo electrónico
  UNIQUE KEY `idx_email_unico` (`email`),
  -- Índice normal para agilizar búsquedas por fecha
  INDEX `idx_fecha_registro` (`creado_en`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿Qué sucede si intentas insertar en phpMyAdmin un nuevo usuario con un correo electrónico que ya existe en una columna configurada con el índice "UNIQUE"?
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual de phpMyAdmin: Gestión de Bases de Datos y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.