Rocio Contreras Aguila Primer Semestre 2010 INTEGRIDAD REFERENCIAL

  • Slides: 26
Download presentation
Rocio Contreras Aguila Primer Semestre 2010 INTEGRIDAD REFERENCIAL

Rocio Contreras Aguila Primer Semestre 2010 INTEGRIDAD REFERENCIAL

EXIGIR LA INTEGRIDAD DE LOS DATOS � Para poder ejecutar esto SQL Server nos

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

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

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

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

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 PRIMARY KEY � Ejemplo:

RESTRICCIONES FOREIGN KEY

RESTRICCIONES FOREIGN KEY

RESTRICCIONES FOREIGN KEY � Una clave foránea(FK) es una columna o combinación de columnas

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

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

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

RESTRICCIONES FOREIGN KEY � Una restricción FOREIGN KEY puede hacer referencia a columnas de

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

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

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

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

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:

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

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

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

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 las tumbas tengan un

RESTRICCIONES CHECK: EJEMPLO 1 Implementar un check constraint que verifique las tumbas tengan un cupo máximo en el caso de Panteones ALTER TABLE Tipo. Tumbas ADD CONSTRAINT CK_TT_V 1 CHECK (cupos < 20) GO

RESTRICCIONES CHECK: EJEMPLO 2 Implementar un check constraint que verifique los sectores tengan más

RESTRICCIONES CHECK: EJEMPLO 2 Implementar un check constraint que verifique 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

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

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

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

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.