Integridad de Datos y Constraints

Código de ejemplo

				
					-- Crear una base de datos y tablas para los ejemplos
CREATE DATABASE Tienda;

-- Tabla Clientes con llave primaria y constraints
CREATE TABLE Clientes (
    ClienteID INT PRIMARY KEY,   -- Llave primaria
    Nombre VARCHAR(50) NOT NULL, -- Constraint NOT NULL
    Email VARCHAR(100) UNIQUE,   -- Constraint UNIQUE
    Edad INT CHECK (Edad >= 18)  -- Constraint CHECK
);

-- Tabla Pedidos con llave foránea
CREATE TABLE Pedidos (
    PedidoID INT PRIMARY KEY,     -- Llave primaria
    ClienteID INT,                -- Llave foránea
    Fecha DATE NOT NULL,          -- Constraint NOT NULL
    Monto DECIMAL(10, 2) CHECK (Monto > 0),  -- Constraint CHECK
    FOREIGN KEY (ClienteID) REFERENCES Clientes(ClienteID)  -- Definición de la llave foránea
);

-- Insertar datos en la tabla Clientes
INSERT INTO Clientes (ClienteID, Nombre, Email, Edad)
VALUES
(1, 'Juan', 'juan@example.com', 30),
(2, 'Ana', 'ana@example.com', 25),
(3, 'Pedro', 'pedro@example.com', 20);

-- Insertar datos en la tabla Pedidos
INSERT INTO Pedidos (PedidoID, ClienteID, Fecha, Monto)
VALUES
(1, 1, '2023-01-15', 100.00),
(2, 2, '2023-01-16', 150.00),
(3, 1, '2023-01-17', 200.00),
(4, 3, '2023-01-18', 250.00),
(5, 2, '2023-01-19', 300.00);

				
			

Explicación

  1. Llaves Primarias (PRIMARY KEY):

    • ClienteID INT PRIMARY KEY: La columna ClienteID en la tabla Clientes se define como la llave primaria. Esto significa que cada valor en esta columna debe ser único y no nulo, identificando de manera única cada registro en la tabla.
    • PedidoID INT PRIMARY KEY: La columna PedidoID en la tabla Pedidos se define como la llave primaria, asegurando la unicidad y la no nulidad de los valores.
  2. Llaves Foráneas (FOREIGN KEY):

    • FOREIGN KEY (ClienteID) REFERENCES Clientes(ClienteID): En la tabla Pedidos, la columna ClienteID es una llave foránea que referencia la columna ClienteID en la tabla Clientes. Esto crea una relación entre las dos tablas, asegurando que cada ClienteID en la tabla Pedidos corresponda a un ClienteID existente en la tabla Clientes.
  3. Constraints UNIQUE, NOT NULL, CHECK:

    • UNIQUE: Email VARCHAR(100) UNIQUE: La columna Email en la tabla Clientes tiene una restricción UNIQUE, lo que significa que todos los valores en esta columna deben ser únicos, evitando duplicados.
    • NOT NULL: Nombre VARCHAR(50) NOT NULL y Fecha DATE NOT NULL: Las columnas Nombre en la tabla Clientes y Fecha en la tabla Pedidos tienen la restricción NOT NULL, lo que significa que no pueden contener valores nulos.
    • CHECK: Edad INT CHECK (Edad >= 18) y Monto DECIMAL(10, 2) CHECK (Monto > 0): Las columnas Edad en la tabla Clientes y Monto en la tabla Pedidos tienen restricciones CHECK, que aseguran que los valores cumplan con ciertas condiciones. En este caso, Edad debe ser mayor o igual a 18 y Monto debe ser mayor que 0.