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 principal

Se 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 diferentes
Deben 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

Entradas más populares de este blog

Modelo Entidad Relación

Álgebra relacional

Creación de bases de datos y archivos de base de datos