Implementación de integridad de datos
Restricciones PRIMARY KEY
Una restricción PRIMARY KEY identifica una o más columnas de una tabla que constituyen una clave principalSe permite una restricción PRIMARY KEY por tabla
El valor debe ser único en las columnas constituyentes
No se permiten valores nulos en las columnas constituyentes
EJEMPLO
CREATE TABLE [HumanResources].[Department]( [DepartmentID] [smallint] IDENTITY(1,1) NOT NULL, [Name] [dbo].[Name], … CONSTRAINT [PK_Department_DepartmentID] PRIMARY KEY CLUSTERED ([DepartmentID] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] )
Restricciones DEFAULT
Una restricción DEFAULT define un valor de columna predeterminado cuando no se proporciona ningún valor
Cada columna sólo puede tener una restricción DEFAULT Sólo es aplicable a instrucciones INSERT Se permiten algunas funciones suministradas por el sistema
EJEMPLO
CREATE TABLE [Production].[Location]( ... [Availability] [decimal](8, 2) NOT NULL CONSTRAINT [DF_Location_Availability] DEFAULT ((0.00)), [ModifiedDate] [datetime] NOT NULL CONSTRAINT [DF_Location_ModifiedDate] DEFAULT (getdate()) )
Restricciones CHECK
Las restricciones CHECK restringen los valores que se pueden introducir en una columna con INSERT o con UPDATE
Puede definir varias restricciones CHECK por columna
Puede hacer referencia a columnas de la misma tabla
No puede contener subconsultas
EJEMPLO
ALTER TABLE [HumanResources].[EmployeeDepartmentHistory] WITH CHECK ADD CONSTRAINT [CK_EmployeeDepartmentHistory_EndDate] CHECK (([EndDate]>=[StartDate]
Restricciones UNIQUE
Las restricciones UNIQUE aseguran que todos los valores de una columna son únicos
Sólo se permite un valor nulo en una columna única
Pueden incluir una o más columnas
EJEMPLO
CREATE TABLE [HumanResources].[Employee]( [EmployeeID] [int] IDENTITY(1,1) NOT NULL, [NationalIDNumber] [nvarchar](15) NOT NULL UNIQUE NONCLUSTERED, … )
Restricciones FOREIGN KEY
Las restricciones FOREIGN KEY garantizan integridad
referencial entre columnas de la misma tabla o
de tablas diferentesDeben hacer referencia a una restricción PRIMARY KEY o UNIQUE
El usuario debe tener permiso REFERENCES en la tabla a la que se hace referencia
EJEMPLO
ALTER TABLE [Sales].[SalesOrderHeader] WITH CHECK ADD CONSTRAINT [FK_SalesOrderHeader_Customer_CustomerID] FOREIGN KEY([CustomerID]) REFERENCES [Sales].[Customer] ([CustomerID])
Consideraciones sobre la comprobación de restricciones
- Asignar nombres significativos a las restricciones
- Crear, cambiar y eliminar restricciones sin necesidad de eliminar y volver a crear la tabla
- Realizar comprobación de errores en las aplicaciones y las transacciones
- Deshabilitar las restricciones CHECK y FOREIGN KEY:
- Para mejorar el rendimiento al ejecutar trabajos por lotes grandes
- Para evitar comprobar los datos existentes al agregar nuevas restricciones a una tabla
Comentarios
Publicar un comentario