Tus datos sólo son buenos si puedes confiar en ellos. Utilice restricciones de la base de datos para garantizar que sea precisa, confiable y que no rompa su modelo de datos.

Conclusiones clave

  • Utilice restricciones SQL para mantener la integridad de los datos y garantizar la uniformidad en su base de datos. La restricción NOT NULL obliga a las columnas a rechazar valores NULL.
  • Implemente restricciones de clave principal para garantizar la unicidad de los valores en una columna o conjunto de columnas. Esto evita registros duplicados en una tabla de base de datos.
  • Las restricciones de clave externa establecen relaciones entre tablas y evitan acciones que destruirían los vínculos entre ellas. Garantizan que un registro en la tabla secundaria haga referencia a la tabla principal.

Una base de datos es esencial para muchas aplicaciones, pero puede resultar complicada si no se tienen pautas para almacenar y procesar datos.

Las restricciones de SQL especifican reglas para almacenar datos en una tabla. Cuando establece restricciones, la base de datos generará un error si intenta almacenar datos que violen estas reglas. Las restricciones ayudan a mantener la integridad de los datos y garantizar la uniformidad en su base de datos.

instagram viewer

Existen varios tipos de restricciones SQL que puede utilizar; Éstos son algunos de los más útiles.

1. Restricción NO NULA

Las columnas de la base de datos, de forma predeterminada, aceptan datos con valores NULL. NULL esencialmente significa que no existe ningún valor. La restricción NOT NULL obliga a una columna a rechazar valores NULL.

Esta restricción garantiza que cada columna debe contener un valor. No puede agregar un registro a la base de datos sin proporcionar datos para ninguna columna con la restricción NOT NULL.

Tomemos el ejemplo de un Clientes mesa. Hay algunos detalles necesarios sobre cada cliente que desea registrar, como su nombre. Agregue la restricción NOT NULL a los campos obligatorios para garantizar que los clientes proporcionen esta información.

A continuación se muestra un ejemplo que muestra cómo se puede utilizar la restricción NOT NULL en un base de datos postgresql:

CREATETABLE Customers (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Mobile_No int NOT NULL,
Age int
);

Si intenta insertar un registro de cliente sin el Edad campo, la base de datos lo aceptará sin errores:

INSERTINTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (123456, 'Dior', 'Christian', 0723000000);

Sin embargo, si intenta insertar un registro sin el Nombre de pila campo, la base de datos lo rechazará con un mensaje de error:

ERROR: null value in column "firstname" violates not-null constraint
Detail: Failing row contains (123456, Dior, null, 723000000, null).

2. Restricción de CLAVE PRIMARIA

Una CLAVE es un atributo único establecido en una columna o campo que identifica la tupla de una tabla (o un registro) en los sistemas de bases de datos. Una restricción PRIMARY KEY garantiza la unicidad de los valores en una columna o conjunto de columnas. Actúa como un identificador único en una fila, evitando registros duplicados en una tabla de base de datos.

Las claves primarias contienen valores únicos y no pueden contener valores NULL. Cada tabla de base de datos SQL debe tener sólo una clave primaria. La CLAVE PRIMARIA puede tener una o varias columnas.

Por ejemplo, está creando una base de datos de registros de clientes. Necesita que cada cliente ingrese sus números de identificación de manera diferente a los demás. Puede aplicar la restricción de clave principal para garantizar que ninguno de sus clientes tenga el mismo número de identificación.

El siguiente código muestra cómo se puede introducir una restricción de clave principal en una base de datos MySQL:

CREATETABLE Customers (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);

La base de datos no aceptará ese valor si un usuario ingresa otro registro con una identificación similar. En cambio, arrojará un error que indica duplicación. El usuario intenta insertar dos registros con el mismo ID en el siguiente ejemplo:

INSERTINTO Customers (ID, LastName, FirstName, Age)
VALUES (1, 'John', 'Doe', 35 );

INSERTINTO Customers (ID, LastName, FirstName, Age)
VALUES (1, 'Mary', 'Jane', 35 );

La base de datos mostrará un mensaje de error:

Duplicate entry '1' for key 'PRIMARY'

Pero si cambia la identificación del segundo cliente, la base de datos acepta la entrada. Por lo tanto, la clave principal garantiza que no haya identificaciones duplicadas en sus registros de clientes.

3. Restricción de CLAVE EXTRANJERA

Llaves extranjeras Establecer relaciones entre dos tablas. Puede agregar una clave externa a un campo/columna en una tabla que haga referencia a la clave principal en otra tabla.

La tabla con la clave principal es la tabla principal, mientras que la tabla con la clave externa es la tabla secundaria. Entonces no puede existir un registro en la tabla secundaria sin una referencia a la tabla principal.

La restricción de clave externa evita acciones que destruirían vínculos entre tablas. Por ejemplo, no puedes GOTA una tabla si se vincula a otra con una clave externa. Tendrás que eliminar ambas mesas a la vez.

A diferencia de una clave primaria, puedes duplicar una clave externa y tener más de una en una sola tabla. Los valores de clave externa también pueden ser NULO. En el siguiente ejemplo, debe utilizar el Identificación del cliente para crear un pedido.

CREATETABLE Customers (
customer_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50)
);

CREATETABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);

INSERTINTO Customers(customer_id, first_name, last_name)
VALUES (1, 'Christian', 'Dior');

INSERTINTO Orders(order_id, customer_id, order_date)
VALUES (1, 1, '2023-08-07');

Si intentas crear un pedido sin un existente Identificación del cliente, la base de datos muestra un mensaje de error:

Cannot add or update a child row: a foreign key constraint fails
(`db_9_4ee205c`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY
(`customer_id`) REFERENCES `customers` (`customer_id`))

4. Restricción ÚNICA

Esta restricción garantiza que no haya dos filas que puedan tener los mismos valores para una columna específica. Al igual que las claves primarias, una restricción única mantiene la integridad de los datos y evita entradas duplicadas. Si trabaja con una base de datos mal diseñada sin la restricción UNIQUE, puede terminar teniendo que encontrar y eliminar los duplicados.

A diferencia de las claves primarias, puede tener muchas restricciones ÚNICAS en una tabla. Por ejemplo, al crear un Clientes tabla, es posible que desee tener identificaciones y números de teléfono únicos. Para agregar dicha restricción usando el servidor MySQL, use esta sintaxis:

CREATETABLE Customers (
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Mobile_No BIGINT UNIQUE
);

Si inserta registros con el mismo número de móvil en la base de datos, mostrará un mensaje de error.

INSERTINTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (123456, 'Dior', 'Christian', 254000000 );

INSERTINTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (7891011, 'Dedan', 'Kimathi', 254000000 );

El mensaje de error será algo como esto:

Duplicate entry '254000000' for key 'Mobile_No'

Esta restricción ÚNICA garantiza que la base de datos no tendrá clientes con los mismos ID o números de móvil.

5. VERIFICAR restricción

La restricción CHECK limita el rango de valores colocados en una columna. Agregar una restricción CHECK en una columna permitirá solo valores específicos para esa columna. Hace cumplir la integridad de los datos al garantizar que un usuario solo inserte datos válidos en una tabla.

La restricción CHECK debe evaluar un valor como VERDADERO o DESCONOCIDO para cada fila o entrada de tabla especificada. Si el valor es FALSO, la base de datos muestra un mensaje de error.

Por ejemplo, en la tabla Clientes, es posible que desee atender únicamente a clientes mayores de 18 años. Puede agregar una restricción CHECK para asegurarse de no atender a clientes menores de edad. Puede agregar la restricción en una base de datos PostgreSQL, como se muestra en el siguiente código:

CREATETABLE Customers (
ID int NOT NULL,
Age int CHECK(Age>=18),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Mobile_No BIGINT UNIQUE
);

Ahora, si intentas insertar la edad de un cliente menor de 18 años:

INSERTINTO Customers (ID, Age, LastName, FirstName, Mobile_No)
VALUES (123456, 15, 'Dior', 'Christian', 1254000000 );

La base de datos mostrará un mensaje de error como este:

ERROR: new row for relation "customers" violates check constraint
"customers_age_check"
Detail: Failing row contains (123456, 15, Dior, Christian, 1254000000)

Cómo agregar y eliminar restricciones SQL de bases de datos

Las restricciones de SQL no son inamovibles. Puede agregar o eliminar restricciones en tablas existentes utilizando la instrucción ALTER TABLE. La declaración ALTER le permite trabajar con restricciones para satisfacer sus necesidades de datos.

Hay muchas más restricciones de SQL que puedes aprender para diseñar una base de datos a tu gusto. Puede comenzar con los que se enumeran en este artículo.