Integridad de Datos#
Introducción#
La integridad de datos es un principio fundamental en las bases de datos relacionales que garantiza la precisión, consistencia y validez de los datos almacenados. Implementar la integridad de datos correctamente ayuda a prevenir errores, minimizar inconsistencias y mantener la confianza en la información que se maneja. MySQL ofrece múltiples mecanismos para garantizar esta integridad, como restricciones y valores predeterminados.
En esta clase aprenderás los conceptos clave de la integridad de datos, los tipos de integridad, cómo aplicar restricciones y valores predeterminados, y cómo habilitar o deshabilitar restricciones según sea necesario.
Objetivos#
Comprender los tipos de integridad de datos y su importancia.
Aplicar restricciones para garantizar la integridad en bases de datos.
Configurar valores predeterminados y reglas para mantener la consistencia de los datos.
Manejar la habilitación y deshabilitación de restricciones.
Tipos de Datos#
![https://phoenixnap.com/kb/wp-content/uploads/2024/02/mysql-data-types-subtypes.png](https://phoenixnap.com/kb/wp-content/uploads/2024/02/mysql-data-types-subtypes.png)
Figura 21 Clasificación de los tipos de datos en MySQL. Tomado de MySQL Data Types Explained.#
![https://www.mysqltutorial.org/wp-content/uploads/2024/01/mysqldatatypes.jpg](https://www.mysqltutorial.org/wp-content/uploads/2024/01/mysqldatatypes.jpg)
Figura 22 Especificaciones de los tipos de datos en MySQL. Tomado de MySQL Data Types - MySQL Tutorial.#
Para mayor información sobre los tipos de datos consultar cualquier de los siguientes recursos:
Tipos de Integridad de Datos#
Integridad de entidad:
Garantiza que cada fila en una tabla sea única e identificable.
Ejemplo: El atributoid
debe ser único y no nulo. Claves primarias (PRIMARY KEY).Integridad referencial:
Asegura que las relaciones entre tablas sean consistentes.
Ejemplo: Unid_cliente
en una tabla de pedidos debe existir en la tabla de clientes. Claves foráneas (FOREIGN KEY).Integridad de dominio:
Restringe los valores que se pueden almacenar en una columna.
Ejemplo: Una columna deedad
debe contener valores entre 0 y 120. Tipos de datos, CHECK, NOT NULL.Integridad de definidas por el usuario:
Se basa en reglas definidas por el usuario para cumplir requisitos específicos.
Ejemplo: El descuento máximo permitido para un producto no debe exceder el 50%. Restricciones personalizadas. Utilización de Triggers.
Exigir Integridad de los Datos#
En MySQL, la integridad de datos se asegura mediante la definición de restricciones en las tablas. Estas restricciones se configuran al crear o modificar una tabla. A continuación, se explican las herramientas principales:
PRIMARY KEY: Garantiza la unicidad y no permite valores nulos.
FOREIGN KEY: Vincula una columna a la clave primaria de otra tabla.
NOT NULL: Evita valores nulos en una columna.
UNIQUE: Asegura que los valores de una columna sean únicos.
CHECK: Restringe los valores según una condición lógica.
DEFAULT: Proporciona un valor predeterminado cuando no se especifica uno.
Ejemplo:
CREATE TABLE Clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
correo VARCHAR(100) UNIQUE,
telefono VARCHAR(15) CHECK (LENGTH(telefono) = 10)
);
Definición de Restricciones#
Las restricciones son reglas impuestas a las columnas de una tabla para asegurar la integridad de los datos. Estas se definen al momento de crear una tabla o mediante alteraciones posteriores.
Ejemplo: Definición al crear una tabla
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50),
DepartmentID INT,
Salary DECIMAL(10, 2) CHECK (Salary > 0),
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);
Ejemplo: Agregar restricciones a una tabla existente
ALTER TABLE Employees
ADD CONSTRAINT chk_salary CHECK (Salary > 0);
Tipos de Restricciones#
Restricciones a nivel de columna: Se aplican directamente a una columna en su declaración.
Restricciones a nivel de tabla: Se definen al final de la declaración de la tabla y pueden involucrar múltiples columnas.
Ejemplos#
NOT NULL:
Garantiza que una columna no tenga valores nulos.CREATE TABLE Products ( ProductID INT NOT NULL );
UNIQUE:
Restringe a valores únicos dentro de una columna o conjunto de columnas.CREATE TABLE Customers ( Email VARCHAR(100) UNIQUE );
PRIMARY KEY:
Define una columna o conjunto de columnas como identificador único.CREATE TABLE Orders ( OrderID INT PRIMARY KEY );
FOREIGN KEY:
Enlaza dos tablas para asegurar la integridad referencial.CREATE TABLE Sales ( SaleID INT, ProductID INT, FOREIGN KEY (ProductID) REFERENCES Products(ProductID) );
CHECK:
Restringe los valores basados en una condición lógica.CREATE TABLE Accounts ( Balance DECIMAL(10, 2), CHECK (Balance >= 0) );
También funciona:
CREATE TABLE Accounts ( Balance DECIMAL(10, 2) CHECK (Balance >= 0) );
DEFAULT:
Asigna un valor predeterminado si no se especifica uno.CREATE TABLE Users ( Status VARCHAR(10) DEFAULT 'Active' );
Deshabilitación de Restricciones#
En ciertas situaciones, puede ser necesario deshabilitar restricciones, por ejemplo, al importar grandes volúmenes de datos. Esto se hace temporalmente para evitar errores por restricciones de integridad.
Ejemplo: Deshabilitar y habilitar claves foráneas
SET FOREIGN_KEY_CHECKS = 0; -- Deshabilitar restricciones de clave foránea
-- Operaciones de modificación masiva aquí
SET FOREIGN_KEY_CHECKS = 1; -- Habilitar restricciones de clave foránea
Uso de Valores Predeterminados y Reglas#
Los valores predeterminados y reglas ayudan a mantener la consistencia en los datos cuando no se proporciona un valor explícito.
Ejemplo: Valores predeterminados
CREATE TABLE Payments (
PaymentID INT,
Amount DECIMAL(10, 2),
Status VARCHAR(20) DEFAULT 'Pending'
);
Conclusiones#
La implementación de integridad de datos es fundamental para garantizar que los datos almacenados sean confiables y consistentes.
Las restricciones como
NOT NULL
,UNIQUE
,PRIMARY KEY
, yFOREIGN KEY
proporcionan herramientas poderosas para mantener la calidad de los datos.MySQL ofrece flexibilidad para deshabilitar temporalmente restricciones en operaciones específicas, pero es importante habilitarlas nuevamente para mantener la integridad.
El uso de valores predeterminados y disparadores facilita la automatización de reglas y la prevención de errores en las bases de datos.
Recursos Adicionales#
MySQL Documentation: Constraints
W3Schools: SQL Constraints
GeeksforGeeks: Integrity Constraints in DBMS