lunes, 17 de marzo de 2014

Restricciones, valores por defecto y reglas en SQL Server



1. Crear una nueva base de datos llamada Prueba y las tablas Emp y Dept. Crear la integridad de los datos utilizando reglas, valores por defecto entre otros, dependiendo del análisis que hagamos previamente.
  • Creo la base de datos 
create database Prueba 
on primary 
(Name = 'Prueba_Data' ,
Filename = 'D:\Prueba_Data.mdf' ,
Size = 5MB ,
MaxSize = 8MB ,
Filegrowth = 2%) 
Log on 
(Name = 'Emp_Log' ,
Filename = 'D:\Prueba_Log.ldf' ,
Size = 6MB ,
MaxSize = 8MB ,
Filegrowth = 2%)

  • Creo las tablas y utilizo los valores Null y Not Null convenientemente. 
use Prueba
go 
create table Emp 
(Emp_no int not null ,
Apellido nvarchar(20) not null ,
Oficio nvarchar(20) not null ,
Dir int null  ,
Fecha_alt smalldatetime null ,
Salario int null ,
Comision int null ,
Dept_no int null) 
go 
create table Dept 
(Dept_no int not null ,
Dnombre nvarchar(19) not null ,
Loc nvarchar(20) null)

  • Poner Restricción Primary Key en Departamento 
Alter Table Dept 
add constraint PK_Dept Primary Key(Dept_no) 

  • Poner Primary Key en Empleados 
Alter Table Emp 
add constraint Pk_Emp Primary Key(Emp_no)

  • Poner la Foreign Key en Empleados 
Alter Table Emp 
add constraint FK_Emp Foreign Key (Dept_no) 
references Dept (Dept_no) 
on Update Cascade 
on Delete Cascade 

  • Creo una restricción Check para el Salario 
Alter Table Emp 
add constraint CK_Salario Check (Salario > 0) 

  • Creo una restricción Check para la Comisión 
Alter Table Emp 
add constraint CK_Comisión Check (Comision >= 0)

  • Creo una restricción Check para la Fecha 
Alter Table Emp 
add constraint CK_Fecha Check (Fecha_alt > '01/01/1970' and Fecha_alt <= GetDate()) 

  • Creo un Valor Predeterminado para Fecha 
alter table Emp 
add constraint DF_Fecha Default GetDate() for Fecha_alt 

  • Creo un Valor Predeterminado Comisión 
Alter Table Emp 
add constraint DF_Comision Default 0 for Comision 

  • Creo una restricción Default para la localidad en Departamento 
Alter Table Dept 
add constraint DF_Loc Default 'DESCONOCIDA' for Loc

  • Creo una regla para que todos los empleados tengan asociado director 
GO
Create Rule Director_Rule as @Director in(7566,7698,7782,7839) 
GO
--Para vincular regla a la columna
exec sp_bindrule Director_Rule, 'Emp.Dir'
--Para desvincular regla a la columna
exec sp_unbindrule 'Emp.Dir', Director_Rule 



2. Insertar los datos convenientemente para verificar la integridad de nuestra base de datos
  • Inserto un departamento
  • Inserto un empleado
  • Cambio el código de director (Dir) a uno que exista en la regla.
  • Cambio la fecha de ingreso del empleado (Fecha_alt) a una que este entre el intervalo definido en la restricción Check.


Espero haber ayudado en algo. Hasta la próxima oportunidad! 




No hay comentarios:

Publicar un comentario en la entrada