Skip to content

Clase 5 – Restricciones en SQL: PRIMARY KEY, FOREIGN KEY, UNIQUE y NOT NULL

La integridad de los datos es un aspecto crucial en la administración de bases de datos. Las restricciones en SQL desempeñan un papel fundamental en la garantía de que los datos se almacenen de manera precisa y coherente.

En esta clase, exploraremos en detalle algunas de las restricciones más importantes en SQL, incluyendo PRIMARY KEY, FOREIGN KEY, UNIQUE y NOT NULL.

Proporcionaremos explicaciones detalladas y ejemplos para ayudar a los estudiantes a comprender cómo se aplican estas restricciones en el mundo real.

PRIMARY KEY

La restricción PRIMARY KEY se utiliza para garantizar que los valores en una columna sean únicos y que no puedan ser nulos.

Cada tabla puede tener solo una columna PRIMARY KEY, que sirve como identificador único para cada fila en la tabla.

La sintaxis para definir una PRIMARY KEY es la siguiente:

CREATE TABLE nombre_de_tabla (
    columna1 tipo_de_dato PRIMARY KEY,
    columna2 tipo_de_dato,
    ...
);

Ejemplo de PRIMARY KEY

Supongamos que estamos creando una tabla llamada Estudiantes para almacenar información sobre estudiantes, y queremos asegurarnos de que el número de estudiante sea único para cada uno.

La restricción PRIMARY KEY se vería de la siguiente manera:

CREATE TABLE Estudiantes (
    ID_estudiante INT PRIMARY KEY,
    Nombre VARCHAR(50),
    Edad INT
);

En este ejemplo, hemos definido la columna ID_estudiante como la PRIMARY KEY de la tabla Estudiantes. Esto garantiza que cada estudiante tenga un número de estudiante único.

FOREIGN KEY

La restricción FOREIGN KEY se utiliza para establecer una relación entre dos tablas.

Define una columna o conjunto de columnas en una tabla que hace referencia a la PRIMARY KEY de otra tabla. Esto se utiliza para mantener la integridad referencial en la base de datos, asegurando que no se puedan agregar registros con valores en la columna FOREIGN KEY que no existan en la tabla referenciada.

La sintaxis para definir una FOREIGN KEY es la siguiente:

CREATE TABLE tabla1 (
    columna1 tipo_de_dato PRIMARY KEY,
    columna2 tipo_de_dato,
    ...
);

CREATE TABLE tabla2 (
    columna3 tipo_de_dato,
    columna4 tipo_de_dato,
    FOREIGN KEY (columna3) REFERENCES tabla1(columna1)
);

Ejemplo de FOREIGN KEY

Supongamos que tenemos dos tablas: Estudiantes y Cursos. Queremos asegurarnos de que los registros en la tabla Cursos hagan referencia a estudiantes válidos en la tabla Estudiantes.

Esto se puede lograr con una FOREIGN KEY de la siguiente manera:

CREATE TABLE Estudiantes (
    ID_estudiante INT PRIMARY KEY,
    Nombre VARCHAR(50),
    Edad INT
);

CREATE TABLE Cursos (
    ID_curso INT PRIMARY KEY,
    Nombre VARCHAR(100),
    Estudiante_ID INT,
    FOREIGN KEY (Estudiante_ID) REFERENCES Estudiantes(ID_estudiante)
);

En este ejemplo, hemos creado una relación entre las tablas Estudiantes y Cursos.

La columna Estudiante_ID en la tabla Cursos es una FOREIGN KEY que hace referencia a la PRIMARY KEY ID_estudiante en la tabla Estudiantes.

Esto garantiza que solo se puedan agregar registros en la tabla Cursos con valores válidos en la columna Estudiante_ID.

UNIQUE

La restricción UNIQUE se utiliza para garantizar que los valores en una columna sean únicos, pero a diferencia de PRIMARY KEY, permite que los valores sean nulos.

Cada tabla puede tener múltiples columnas con restricciones UNIQUE.

La sintaxis para definir una UNIQUE constraint es la siguiente:

CREATE TABLE nombre_de_tabla (
    columna1 tipo_de_dato UNIQUE,
    columna2 tipo_de_dato,
    ...
);

Ejemplo de UNIQUE

Supongamos que estamos creando una tabla llamada Empleados y queremos asegurarnos de que el número de seguro social (NSS) de cada empleado sea único, pero permitimos que algunos empleados no tengan un NSS registrado.

La restricción UNIQUE se vería de la siguiente manera:

CREATE TABLE Empleados (
    ID_empleado INT PRIMARY KEY,
    Nombre VARCHAR(50),
    NSS VARCHAR(11) UNIQUE,
    Departamento VARCHAR(50)
);

En este ejemplo, hemos definido la columna NSS como UNIQUE en la tabla Empleados. Esto garantiza que ningún empleado tenga el mismo NSS registrado, pero permite que algunos empleados no tengan un NSS registrado.

NOT NULL

La restricción NOT NULL se utiliza para garantizar que una columna no contenga valores nulos.

Esto es importante cuando se requiere que una columna tenga un valor obligatorio, y no se permite que esté vacía.

La sintaxis para definir una NOT NULL constraint es la siguiente:

CREATE TABLE nombre_de_tabla (
    columna1 tipo_de_dato NOT NULL,
    columna2 tipo_de_dato,
    ...
);

Ejemplo de NOT NULL

Supongamos que estamos creando una tabla llamada Clientes y queremos asegurarnos de que el campo de dirección sea obligatorio para cada cliente.

La restricción NOT NULL se vería de la siguiente manera:

CREATE TABLE Clientes (
    ID_cliente INT PRIMARY KEY,
    Nombre VARCHAR(50),
    Direccion VARCHAR(100) NOT NULL,
    Ciudad VARCHAR(50),
    Codigo_Postal VARCHAR(10)
);

En este ejemplo, hemos definido la columna Direccion como NOT NULL en la tabla Clientes. Esto garantiza que cada cliente tenga una dirección registrada.

Las restricciones en SQL son herramientas fundamentales para garantizar la integridad y consistencia de los datos en una base de datos.

La elección de las restricciones adecuadas, ya sea PRIMARY KEY, FOREIGN KEY, UNIQUE o NOT NULL, depende de los requisitos específicos de cada tabla y la relación entre ellas.

La restricción PRIMARY KEY se utiliza para garantizar la unicidad de valores y que no puedan ser nulos en una columna, mientras que la restricción UNIQUE garantiza que los valores sean únicos pero permite nulos. La restricción FOREIGN KEY establece relaciones entre tablas, asegurando la integridad referencial. Por último, la restricción NOT NULL garantiza que una columna tenga un valor obligatorio.

Como estudiante o profesional de bases de datos, comprender cómo aplicar estas restricciones correctamente es esencial para crear bases de datos efectivas y seguras. La aplicación adecuada de estas restricciones ayuda a evitar errores de datos y a mantener la coherencia en la base de datos, lo que es crucial en aplicaciones del mundo real.