DP-900: cómo usar constraints para garantizar integridad en datos relacionales
Voy a explicar cómo usar constraints en bases de datos relacionales en el contexto del DP-900. Esta competencia describe cómo garantizar la integridad de los datos (por ejemplo, que las relaciones entre tablas se mantengan correctas): tema frecuente en el examen y esencial para soluciones reales en Azure SQL Database o Managed Instance.
Lo que necesitas saber
Las constraints son reglas declarativas aplicadas a columnas o tablas para garantizar que los datos insertados cumplen determinadas condiciones. Las principales constraints relacionales que debes conocer son:
- PRIMARY KEY: identifica de forma única cada fila en una tabla; implica NOT NULL y UNIQUE.
- FOREIGN KEY: garantiza que un valor en una columna corresponde a un valor existente en la tabla referenciada (integridad referencial).
- UNIQUE: asegura que todos los valores en una columna (o conjunto) son distintos.
- NOT NULL: impide valores nulos en esa columna.
- CHECK: define una condición (expresión booleana) que los valores de la fila deben satisfacer.
Ejemplo sencillo: en una base de datos de ventas, la tabla Customers tiene una PRIMARY KEY CustomerID; la tabla Orders tiene OrderID (PK) y CustomerID con FOREIGN KEY apuntando a Customers(CustomerID). Así, no se pueden crear pedidos para clientes inexistentes.
Cómo funciona
Las constraints son evaluadas por el motor de la base de datos siempre que hay operaciones que alteran datos: INSERT, UPDATE, DELETE. Si la regla se viola, la operación falla y se devuelve un error. En Azure SQL Database el comportamiento es idéntico al de SQL Server on-premises.
Algunos detalles importantes:
- Las FOREIGN KEYs pueden tener acciones ON DELETE/ON UPDATE (NO ACTION, CASCADE, SET NULL, SET DEFAULT) que definen el efecto cuando la fila referenciada es eliminada/actualizada.
- UNIQUE permite múltiples columnas (constraint multicolumna) y puede estar respaldada por índices para rendimiento.
- CHECK puede usar expresiones simples: e.g., CHECK (Quantity > 0) — útil para reglas de negocio ligeras directamente en la base de datos.
En la práctica
A continuación tienes ejemplos prácticos en T-SQL para crear tablas y constraints. Imagina que estás creando dos tablas: Customers y Orders.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Name NVARCHAR(100) NOT NULL,
Email NVARCHAR(256) UNIQUE
);
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT NOT NULL,
OrderDate DATE NOT NULL,
Quantity INT NOT NULL CHECK (Quantity > 0),
CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID)
REFERENCES Customers(CustomerID)
ON DELETE CASCADE
);
Explicación rápida:
- CustomerID en Customers es PRIMARY KEY: garantiza unicidad e identifica a cada cliente.
- Email es UNIQUE: impide duplicados en el email de los clientes.
- Orders.CustomerID es FOREIGN KEY con ON DELETE CASCADE: cuando borras un cliente, todos sus pedidos se eliminan automáticamente — útil pero tiene implicaciones que explico en "Errores comunes".
- CHECK en Quantity evita valores ≤ 0.
Errores comunes
1) Usar ON DELETE CASCADE sin evaluar el impacto: puede eliminar muchas filas inesperadamente. Antes de definir CASCADE, piensa en las reglas de negocio y en la política de recuperación de datos.
2) Confiar solo en las constraints para reglas complejas: las constraints son excelentes para integridad básica, pero reglas complejas de negocio (por ejemplo, límites acumulados entre tablas, comprobaciones temporales avanzadas) pueden exigir triggers o lógica en la aplicación.
3) Crear demasiadas constraints o índices sin considerar el rendimiento: UNIQUE y FOREIGN KEY pueden causar overhead en operaciones de escritura; prueba y evalúa los trade-offs entre integridad y rendimiento.
Cómo practicar
Practica estos conceptos creando bases de datos en Azure SQL Database (puedes usar una instancia de evaluación) o localmente con el SQL Server. Ejecuta operaciones INSERT/UPDATE/DELETE para ver cómo se comportan las constraints y experimenta las diferentes opciones de ON DELETE/ON UPDATE.
Para la preparación del examen DP-900 usa el Practice Assessment OFICIAL gratuito de Microsoft y la study guide oficial (ambos gratuitos). Estos recursos oficiales te ayudan a validar conocimientos sin recurrir a contenidos no autorizados.
En resumen
- Constraints (PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK) garantizan la integridad de los datos a nivel de base de datos.
- FOREIGN KEY asegura integridad referencial; ON DELETE/ON UPDATE controlan efectos en cascada.
- Las constraints ayudan a prevenir datos inválidos, pero no sustituyen lógica de negocio compleja.
- Prueba siempre el impacto de las constraints en el rendimiento y en los flujos de escritura antes de aplicarlas en producción.