UNIDAD IV. Diseño de Base de Datos Relacionales Ricardo I. Roque Covarrubias Base de datos UNIDAD IV. Diseño de Base de Datos Relacionales
Objetivo El alumno establecerá las restricciones a la base de datos relacional para mantener la integridad de la misma. MC Ricardo Israel Roque Covarrubias
Resultado de Aprendizaje El alumno será capaz elaborar a partir de un reporte a partir de un modelo relacional, que incluya: El procedimiento de la Normalización empleando hasta la 3FN. Modelo normalizado en la 3FN. Definición de restricciones de integridad, de acuerdo al modelo. MC Ricardo Israel Roque Covarrubias
Contenido Tipos de restricciones de integridad. Uso de restricciones. Casos de Prueba para restricciones MC Ricardo Israel Roque Covarrubias
Exigir integridad de los datos Integridad de datos declarativa Los criterios se definen en la definición del objeto Asegurada automáticamente por SQL Server Implementada mediante restricciones, valores predeterminados y reglas
Exigir integridad de los datos Integridad de datos procedimental Los criterios se definen en una secuencia de comandos Asegurada mediante secuencia de comandos Implementada mediante desencadenadores y procedimientos almacenados
1. Tipos de restricciones De dominio Entidad Referencial MC Ricardo Israel Roque Covarrubias
Tipos de integridad de datos Integridad de dominio (columnas) Integridad de entidad (filas) Integridad referencial (entre tablas)
Determinación del tipo de restricción que se va a utilizar Tipo de integridad Tipo de restricción Dominio DEFAULT CHECK REFERENTIAL Entidad PRIMARY KEY UNIQUE Referencial FOREIGN KEY CHECK
2. Uso de restricciones Restricciones DEFAULT Restricciones CHECK Restricciones PRIMARY KEY Restricciones UNIQUE Restricciones FOREIGN KEY Integridad referencial en cascada
Creación de restricciones Utilizar CREATE TABLE o ALTER TABLE Puede agregar restricciones a una tabla con datos existentes Puede aplicar restricciones a una sola columna o a varias columnas Una sola columna, se llama restricción de columna Varias columnas, se llama restricción de tabla
Restricciones DEFAULT Sólo se aplica a las instrucciones INSERT Sólo una restricción DEFAULT por columna No se puede utilizar con la propiedad IDENTITY o el tipo de datos rowversion Permite que se especifiquen algunos valores proporcionados por el sistema
Restricciones DEFAULT USE Northwind ALTER TABLE dbo.Customers ADD CONSTRAINT DF_contactname DEFAULT 'UNKNOWN' FOR ContactName
Restricción NOT NULL
La restricción NOT NULL
Restricciones CHECK Se utilizan con las instrucciones INSERT y UPDATE Pueden hacer referencia a otras columnas en la misma tabla No pueden: Contener subconsultas USE Northwind ALTER TABLE dbo.Employees ADD CONSTRAINT CK_birthdate CHECK (BirthDate > '01-01-1900' AND BirthDate < getdate())
La restricción CHECK
Restricciones PRIMARY KEY Sólo una restricción PRIMARY KEY por tabla Los valores deben ser exclusivos No se permiten valores nulos Crea un índice exclusivo en las columnas especificadas USE Northwind ALTER TABLE dbo.Customers ADD CONSTRAINT PK_Customers PRIMARY KEY NONCLUSTERED (CustomerID)
La restricción PRIMARY KEY
Restricciones UNIQUE Permite un valor nulo Permite varias restricciones UNIQUE en una tabla Definidas con una o más columnas Exigida con un índice único USE Northwind ALTER TABLE dbo.Suppliers ADD CONSTRAINT U_CompanyName UNIQUE NONCLUSTERED (CompanyName)
La restricción UNIQUE
Restricciones FOREIGN KEY Deben hacer referencia a una restricción PRIMARY KEY o UNIQUE Proporcionan integridad referencial de una o de varias columnas No crean índices automáticamente Los usuarios deben tener permisos SELECT o REFERENCES en las tablas a las que se hace referencia Usa sólo la cláusula REFERENCES en la tabla de ejemplo
Restricciones FOREIGN KEY USE Northwind ALTER TABLE dbo.Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES dbo.Customers(CustomerID)
La restricción FOREIGN KEY
CASCADE SET NULL NO ACTION RESTRICT MC Ricardo Israel Roque Covarrubias
Integridad referencial en cascada NINGUNA ACCIÓN CASCADA Customers Customers CustomerID (PK) CustomerID (PK) 1 1 UPDATE CustomerID INSERT new CustomerID CASCADA Orders CustomerID (FK) Orders 2 CustomerID (FK) UPDATE old CustomerID to new CustomerID Customers CustomerID (PK) 3 DELETE old CustomerID