Claves Primarias, Claves Foráneas, Índices y Restricciones en DB2: Guía Completa
Cuando diseñamos una base de datos en DB2, es esencial entender cómo estructurar las tablas para garantizar integridad, rendimiento y relaciones entre los datos. En esta entrada, exploraremos las claves primarias, claves foráneas, índices y restricciones en DB2, con ejemplos prácticos y una comparativa para facilitar su comprensión.
Claves Primarias (Primary Keys)
Una clave primaria identifica de forma única cada fila de una tabla. Solo puede haber una clave primaria por tabla, y sus valores no pueden ser nulos ni repetidos.
Ejemplo
CREATE TABLE EMPLEADOS (
EMP_ID INT NOT NULL,
NOMBRE VARCHAR(50),
DEPARTAMENTO_ID INT,
PRIMARY KEY (EMP_ID)
);
En este ejemplo, la columna EMP_ID
es la clave primaria. Esto asegura que cada empleado tenga un identificador único.
Claves Foráneas (Foreign Keys)
Una clave foránea establece una relación entre dos tablas, vinculando la clave primaria de una tabla con una columna de otra tabla. Esto es clave para modelar relaciones como «uno a muchos» o «muchos a muchos».
Ejemplo
CREATE TABLE DEPARTAMENTOS (
DEP_ID INT NOT NULL,
NOMBRE VARCHAR(50),
PRIMARY KEY (DEP_ID)
);
CREATE TABLE EMPLEADOS (
EMP_ID INT NOT NULL,
NOMBRE VARCHAR(50),
DEPARTAMENTO_ID INT,
PRIMARY KEY (EMP_ID),
FOREIGN KEY (DEPARTAMENTO_ID) REFERENCES DEPARTAMENTOS (DEP_ID)
);
Aquí, DEPARTAMENTO_ID
en la tabla EMPLEADOS
es una clave foránea que referencia a DEP_ID
en DEPARTAMENTOS
. Esto garantiza que un empleado solo pueda estar asignado a un departamento existente.
Índices (Indexes)
Los índices mejoran el rendimiento de las consultas al permitir accesos rápidos a las filas de una tabla. Pueden ser únicos o no únicos y se utilizan comúnmente en columnas frecuentemente buscadas.
Ejemplo
CREATE INDEX IDX_NOMBRE_EMPLEADO ON EMPLEADOS (NOMBRE);
Este índice acelera las búsquedas en la columna NOMBRE
de la tabla EMPLEADOS
. Si necesitas evitar valores duplicados, usa un índice único:
CREATE UNIQUE INDEX IDX_EMPLEADO_UNICO ON EMPLEADOS (EMP_ID);
Tipos de Restricciones
Las restricciones aseguran la integridad de los datos en las tablas. DB2 soporta varios tipos de restricciones:
- NOT NULL: Evita que una columna contenga valores nulos.
- UNIQUE: Garantiza que todos los valores de una columna sean únicos.
- PRIMARY KEY: Combina las restricciones
NOT NULL
yUNIQUE
. - FOREIGN KEY: Garantiza que los valores en una columna coincidan con valores en otra tabla.
- CHECK: Define una condición que los valores de una columna deben cumplir.
Ejemplo
CREATE TABLE PRODUCTOS (
PRODUCTO_ID INT NOT NULL,
NOMBRE VARCHAR(50) NOT NULL,
PRECIO DECIMAL(10, 2) CHECK (PRECIO > 0),
PRIMARY KEY (PRODUCTO_ID)
);
En este caso:
NOT NULL
asegura quePRODUCTO_ID
yNOMBRE
siempre tengan valores.CHECK (PRECIO > 0)
asegura que los precios sean positivos.
Comparativa
Concepto | Función | Restricciones Asociadas |
---|---|---|
Clave Primaria | Identifica filas únicas | PRIMARY KEY, NOT NULL |
Clave Foránea | Relaciona tablas | FOREIGN KEY |
Índices | Mejora el rendimiento de las consultas | UNIQUE (opcional) |
Restricciones | Garantizan la integridad de los datos | NOT NULL, UNIQUE, CHECK |
Entender y aplicar correctamente estos conceptos es fundamental para construir bases de datos robustas en DB2. Si tienes dudas o ejemplos adicionales, no dudes en dejarlos en los comentarios. ¡Espero que esta guía sea útil!