Las restricciones son limitaciones o reglas aplicadas a un campo o columna para asegurar que no se acepten datos que no se consideren válidos. Por ejemplo, si hay que insertar la fecha de nacimiento de una persona, la fecha debe de ser menor que la fecha actual; ya no se permitiría añadir una persona con fecha de nacimiento futurista. A partir SQL Server 2008 están disponibles una serie de restricciones, incluidas las siguientes:
UNIQUE
Una restricción única permite al administrador de bases de datos identificar específicamente qué columna no debería contener valores duplicados.
CHECK
Las restricciones CHECK exigen la integridad del dominio mediante la limitación de los valores que puede aceptar una o varias columnas. Puede crear una restricción CHECK con cualquier expresión lógica (booleana) que devuelva TRUE (verdadero) o FALSE (falso) basándose en operadores lógicos.
TIPO DE DATO
Una restricción de comprobación permite al administrador limitar los tipos de datos que un usuario puede insertar en la base de datos.
DEFAULT
Se usa una restricción predeterminada para insertar un valor predeterminado en una columna. Si no se especifica ningún otro valor, se agregará el valor predeterminado a todos los registros nuevos.
NOT NULL
Una restricción no nula asegura que se incluyan datos en una celda. En otras palabras, la celda no se puede dejar en blanco. También indica que no se puede incluir un nuevo registro o actualizar un registro sin agregar un valor a dicho campo.
PRIMARY KEY
La restricción de clave principal identifica de forma exclusiva cada registro de una tabla de base de datos. La clave principal debe contener valores únicos y no puede contener valores NULL. Cada tabla debe tener una clave principal y, además, cada tabla puede tener únicamente una clave principal.
FOREING KEY
Una restricción de clave externa en una tabla apunta a una clave principal en otra tabla.
Ejemplo con restricciones
Imaginemos que deseamos guardar los datos principales de un compañía X un una base de datos, para lo cual creamos la tabla Empleados con la siguiente estructura y restricciones.
CREATE TABLE Empleados( EmpleadoID INT PRIMARY KEY, Nombres VARCHAR(100) NOT NULL, Apellidos VARCHAR(100) NOT NULL, NumeroIdentificacion VARCHAR(50) UNIQUE, FechaNacimiento DATE, CHECK (FechaNacimiento GETDATE()), Estatus BIT DEFAULT 1 )
Con esta estructura la tabla Empleado no permitiría que se inserte un empleado sin nombres o apellidos, que el número de identificación del empleado sea único y que la fecha de nacimiento sea menor que la fecha actual, también que, si no se indica el estatus del empleado, este por defecto será 1 (true, activo). Los datos insertados en los campos deben de ser compatibles con los tipos de datos definidos para cada campo.
Si no se cumplen estas condiciones, pues no se insertaran los datos emitiendo un mensaje de error. Veamos esto de manera gráfica para hacer un poco más práctico.
La restricción PRIMARY KEY no permite insertar valores nulos o duplicados.


La restricción CHECK(FechaNacimiento < GETDATE()) verifica que la fecha insertada en el campo FechaNacimiento sea menor que la fecha actual que tiene configurada es servidor.

La restricción NOT NULL no permite que sean insertados valores nulos en las columnas Nombres y Apellidos.


La restricción de TIPO DE DATO, en este caso en la columna Estatus, el tipo de datos es BIT el cual solo admite los valores True (1) o False (o), si se intenta colocar otro tipo de dato que no sea compatible será rechazado. Igual paso con los otros tipos de datos.

La restricción UNIQUE no permite dos valores iguales en la columna con la restricción.

Todas estas restricción nos permiten tener integridad en los datos insertados, y que no sean insetardos datos «basura». Las restricciones son muy importantes en el diseño de base datos, y estas no deben de ser manejadas del lado de la aplicación que maneje los datos.
Si te gustó el el artículo, tienes alguna duda o comentario escríbeme por Twitter @robertlluberes