Clase 9 Integridad Referencial

Download Report

Transcript Clase 9 Integridad Referencial

Rocio Contreras Aguila
Primer Semestre 2010
INTEGRIDAD REFERENCIAL
EXIGIR LA INTEGRIDAD DE LOS DATOS

Para poder ejecutar esto SQL Server nos
permite definir datos y nos entrega
herramientas para poder exigir la Integridad
Referencial, como:
 PRIMARY
KEY
 FOREIGN KEY
 UNIQUE
 CHECK
 DEFAULT
RESTRICCIONES PRIMARY KEY

Una tabla suele tener una columna o una
combinación de columnas cuyos valores
identifican de forma única cada fila de la tabla.

Estas columnas se denominan claves principales
de la tabla y exigen la integridad de entidad de la
tabla.

Puede crear una clave principal mediante la
definición de una restricción PRIMARY KEY cuando
cree o modifique una tabla.
RESTRICCIONES PRIMARY KEY

Una tabla sólo puede tener una restricción
PRIMARY KEY y ninguna columna a la que se
aplique una restricción PRIMARY KEY puede
aceptar valores NULL.

Debido a que las restricciones PRIMARY KEY
garantizan datos únicos, con frecuencia se
definen en una columna de identidad.
RESTRICCIONES PRIMARY KEY

Cuando especifica una restricción PRIMARY KEY
en una tabla, el motor de la base de datos exige la
unicidad de los datos mediante la creación de un
índice único para las columnas de clave principal.

Este índice también permite un acceso rápido a
los datos cuando se utiliza la clave principal en las
consultas. Aparte de los índices que podamos
crear de acuerdo al análisis que realicemos de
nuestras consultas posteriores.
RESTRICCIONES PRIMARY KEY

Si se define una restricción PRIMARY KEY para
más de una columna, puede haber valores
duplicados dentro de la misma columna, pero
cada combinación de valores de todas las
columnas de la definición de la restricción
PRIMARY KEY debe ser única.
RESTRICCIONES PRIMARY KEY

Ejemplo:
RESTRICCIONES FOREIGN KEY
RESTRICCIONES FOREIGN KEY

Una clave foránea(FK) es una columna o
combinación de columnas que se utiliza para
establecer y exigir un vínculo entre los datos de
dos tablas.

Puede crear una clave externa mediante la
definición de una restricción FOREIGN KEY
cuando cree o modifique una tabla o al asignar
la relación en el diagrama.
RESTRICCIONES FOREIGN KEY

En una referencia de clave externa, se crea un
vínculo entre dos tablas cuando las columnas
de una de ellas hacen referencia a las
columnas de la otra que contienen el valor de
clave principal.

Esta columna se convierte en una clave externa
para la segunda tabla
RESTRICCIONES FOREIGN KEY

No es necesario que una restricción FOREIGN KEY
esté vinculada únicamente a una restricción
PRIMARY KEY de otra tabla; también puede
definirse para que haga referencia a las columnas
de una restricción UNIQUE de otra tabla.

Una restricción FOREIGN KEY puede contener
valores NULL, pero si alguna columna de una
restricción FOREIGN KEY compuesta contiene
valores NULL, se omitirá la comprobación de los
valores que componen la restricción FOREIGN KEY.
RESTRICCIONES FOREIGN KEY

Una restricción FOREIGN KEY puede hacer
referencia a columnas de tablas de la misma
base de datos o a columnas de una misma
tabla. Se denominan tablas con referencia a sí
mismas.
RESTRICCIONES FOREIGN KEY

Aunque el fin principal de una restricción FOREIGN
KEY es controlar los datos que pueden
almacenarse en la tabla de la clave externa;
también controla los cambios realizados en los
datos de la tabla de la clave principal.

Si forzamos la acrualización en ambas tablas
evitamos que al eliminar la clave principal de una
aparezca como foránea si ya no existe.
RESTRICCIONES FOREIGN KEY: ÍNDICES

Se recomienda crear un índice en la clave
foránea por:

Los cambios en las restricciones PRIMARY KEY
se comprueban con restricciones FOREIGN KEY
en las tablas relacionadas.

Estas columnas se usan en criterios de
combinación en JOINS entre tablas.
RESTRICCIONES UNIQUE

Puede utilizar restricciones UNIQUE para garantizar que
no se escriben valores duplicados en columnas
específicas que no forman parte de una clave principal.

Tanto la restricción UNIQUE como la restricción
PRIMARY KEY exigen la unicidad

Se debe utilizar la restricción UNIQUE y no PRIMARY KEY
si desea exigir la unicidad de una columna o una
combinación de columnas que no forman la clave
principal.
RESTRICCIONES UNIQUE

En una tabla se pueden definir varias
restricciones UNIQUE, pero sólo una restricción
PRIMARY KEY.

Para modificar una restricción UNIQUE, deberá
eliminar la restricción UNIQUE existente y, a
continuación, volver a crearla con la nueva
definición.
RESTRICCIONES UNIQUE

Ejemplo:
Descripcion varchar(150) NOT NULL
 UNIQUE NONCLUSTERED


Nota: clustered = agrupado
RESTRICCIONES CHECK

Las restricciones CHECK exigen la integridad
del dominio mediante la limitación de los
valores que puede aceptar una columna.

Este constraint actúa cuando el usuario
emplea una instrucción INSERT o UPDATE.
RESTRICCIONES CHECK

Son similares a las restricciones FOREIGN KEY
porque controlan los valores que se insertan en
una columna.

La diferencia está en que las restricciones
FOREIGN KEY obtienen la lista de valores válidos
de otra tabla, mientras que las restricciones
CHECK determinan los valores válidos a partir de
una expresión lógica que no se basa en datos de
otra columna.
RESTRICCIONES CHECK
ALTER TABLE <Nombre de la tabla>
 ADD CONSTRAINT <Nombre del Constraint>
 CHECK <Regla a validar>
 GO

RESTRICCIONES CHECK: EJEMPLO 1

Implementar un check constraint que verifique
que las tumbas tengan un cupo máximo en el
caso de Panteones
ALTER TABLE TipoTumbas
ADD CONSTRAINT CK_TT_V1
CHECK (cupos < 20)
GO
RESTRICCIONES CHECK: EJEMPLO 2

Implementar un check constraint que verifique
que los sectores tengan más de un cupo y
menos de 500
ALTER TABLE Sectores
ADD CONSTRAINT CK_Sectores
CHECK (cupo > 1 and cupo<=500)
GO
RESTRICCIONES DEFAULT

Estos constraints trabajan al momento de
utilizar la función INSERT y asignan un valor
automáticamente a la columna que no se le
asignó.

Cada columna de un registro debe contener un
valor, aunque sea un valor NULL.
RESTRICCIONES DEFAULT
ALTER TABLE <Nombre de la tabla>
ADD CONSTRAINT <Nombre del constraint>
DEFAULT <Valor En forma predeterminada>
FOR <columna>
GO
RESTRICCIONES DEFAULT : EJEMPLO 1

Asignar un valor en forma predeterminada a la
tabla Tipo_Tumbas de forma que el campo
capacidad por defecto sea 1
ALTER TABLE Tipo_Tumbas
ADD CONSTRAINT DF_TTumba
DEFAULT 1
FOR capacidad
GO
INTEGRIDAD

Aplicar las restricciones que correspondan al
modelo de datos del ejercicio CEMENTERIO de
forma tal que los datos que se puedan validar
con Check o Default queden implementados.

Entregar Script.