Sei sulla pagina 1di 30

Integridad de los datos

La integridad de los datos es la consistencia, coherencia y correctitud de los datos almacenados en la base de datos. SQL Server soporta la declarativa referencial. integridad de datos

La integridad declarativa referencial refuerza la integridad de datos automticamente cuando se insertan, actualizan o borran datos.

Integridad de entidad (de llave) Cada entidad posee exactamente una llave primaria. Cada valor de una llave primaria identifica la tupla de manera nica. No se permiten valores nulos para los atributos que conforman la llave primaria

Integridad de dominio (de datos) Control de la sintaxis y la semntica de un dato. Permite verificar que los valores, introducidos para un atributo, sean vlidos. Ejemplos:
Cdula : Texto(11)
Formato: (n-nnnn-nnnn)

Provincia: Texto(15)
Enumerado: (San Jos, Alajuela, Cartago, )

Restricciones entre las relaciones de dos entidades. Bsicamente se definen 3 tipos:


Integridad en la insercin Integridad en la actualizacin Integridad en el borrado

Sobre estos 3 tipos de integridad referencial se definen las conocidas operaciones en cascada.

Ejemplos:
Si se inserta un estudiante y se le vincula a una carrera, el cdigo de dicha carrera debe estar previamente registrada Si se actualiza la cdula de una persona en la entidad PERSONA debe hacerse la misma actualizacin en las entidades dbiles con las que se relaciona (HIJO,...) Si se elimina una factura se debe eliminar las lneas de detalle correspondientes a dicha factura

Integridad del negocio (definidas por el usuario) Reglas del negocio Ejemplo: En el ITCR un estudiante no podr estar matriculado en ms de dos carreras Por lo general se implementan en la capa de negocios, como triggers o como procedimientos almacenados en la base de datos.

Restriccin: Definicin Las restricciones definen reglas sobre los valores permitidos para cada campo en una tabla. Permiten adems, administrar los tipos de integridad vistos con anterioridad

Restricciones
Definicin de valores vlidos para un columna: check constraints y default constraint. Forzar unicidad de datos en una tabla: unique / primary key constraints. Forzar la integridad referencial: primary key y foreign keys constraints.

Restricciones en SQL Server Existen 5 tipos:


1. 2. 3. 4. 5.

No nulos (NOT NULL) Llave primaria (PRIMARY KEY) Valores nicos (UNIQUE) Llave fornea (FOREIGN KEY) Chequeo de valores (CHECK)

NOT NULL Constraints: Evita que se inserten valores nulos (en blanco) en un campo de una tabla Refuerza la integridad de dominio En SQL Server la restriccin NOT NULL generalmente es usada a nivel de la columna como parte de ella.

Check constraints Mecanismo para restringir los valores a ser definidos en una columna. Refuerza la integridad de dominio y de negocio. En un constraint se puede usar cualquier clusula Where, operadores lgicos, aritmticos, de comparacin, LIKE, IN y BETWEEN. Pero no acceder otra tabla. Partes: Nombre y Predicado o condicin

Check constraints Sintaxis Permitida


[CONSTRAINT nombre_restriccion] CHECK [NOT FOR REPLICATION] (Predicado o condicion)

Un constraint puede darse a nivel de columna o a nivel de tabla.

Check constraints: A nivel de columna


Create table empleado ( Codigo int not null, Nombre varchar(50) not null, Salario numeric(12,2) not null Constraint empleado_ck1 Check (salario > 50000.00), Bono numeric(9,2) ) ;

Check constraints: A nivel de tabla


Create table empleado ( Codigo int not null, Nombre varchar(50) not null, Salario numeric(12,2) not null, Bono numeric(9,2), Constraint empleado_ck1 Check (salario > 50000.00));

Deshabilitar | Habilitar el manejo de restricciones Check


Alter table empleado Check|NoCheck Constraint empleado_ck1; Alter table empleado Check|NoCheck Constraint All;

Primary Key, Unique y Default no pueden deshabilitarse

Default constraints Se puede definir una restriccin DEFAULT a una columna para suministrar un valor cuando el usuario no ingresa valor alguno. Excepciones: Timestamp Identity

Default constraints Sintaxis Permitida [CONSTRAINT nombre_restriccin] DEFAULT (expresion_constante| funcion_niladic| NULL) [FOR nombre_columna]

Default constraints:
Create table empleado ( Codigo int not null, Nombre varchar (50) not null, Salario numeric(12,2) not null, Estado char(1) Constraint empleado_def1 Default 'A');

Defaults Un default puede ser definido de manera global y asociado a diferentes columnas Sintaxis
Create Default [dueo].nombre_por_omision As expresion_constante

Uso de Defaults
EXEC sp_bindefault nombre_valorPorOmision, nombre_objeto [, futureonly]

Unique / primary key constraints Permite asegurar que todas las filas de una tabla sean nicas a partir de las columnas que son afectadas por el constraint. Este tipo de restricciones pueden ser definidas de dos maneras: como llave primaria (Primary key constraints) o como restriccin de unicidad (Unique constraint).

Unique / primary key constraints Primary Key Las columnas no permiten nulos. Refuerza la integridad de entidad. Unique constraint Las columnas pueden permitir nulos. Refuerza la integridad del negocio. La restriccin Primary crea un ndice en forma automtica.

Primary key constraints Sintaxis


[CONSTRAINT nombre_restriccin] PRIMARY KEY [CLUSTERED|NONCLUSTERED] (nombre_columna_1 [, nombre_columna_2 [,..., nombre_columna_16]]) [WITH FILL FACTOR=factor_de_relleno] [ON nombre_segmento]

Primary Key constraints:


Create table empleado ( Codigo int not null, Nombre varchar (50) not null, Salario numeric(12,2) not null, Estado char(1), Constraint empleado_PK Primary Key Clustered (Codigo);

Unique Constraints Sintaxis


[CONSTRAINT nombre_restriccin] UNIQUE [CLUSTERED|NONCLUSTERED] (nombre_columna_1 [, nombre_columna_2 [,..., nombre_columna_16]]) [WITH FILL FACTOR=factor_de_relleno] [ON nombre_segmento]

Foreign key constraints Permite definir la relacin entre dos tablas. Esta restriccin valida los datos con respecto a la llave primaria a la que se hizo referencia en el momento de insertar o actualizar los datos en la columna o columnas afectadas. Esta restriccin no crea un ndice en forma automtica y refuerza la integridad referencial.

Foreign Key Constraints Sintaxis


[constraint nombre_restriccion] FOREIGN KEY nombre_columna_1 [,...,nombre_columna_16]] REFERENCES [dueo.]tabla_referenciada [(columna_referenciada_1 [,...,nombre_referenciada_16]]

Rules Las reglas hacen posible el verificar que los datos estn entre un rango especfico de valores En una rule se puede usar cualquier clusula Where, operadores logicos, aritmticos, de comparacin, LIKE, IN y BETWEEN. Pero no acceder otra tabla

Rules Sintaxis CREATE RULE [dueo.]nombre_por_omission AS @expression_condicional. Uso de Rules EXEC sp_bindrule nombre_regla, nombre_objeto [, futureonly]

Rules
Create rule state_rule as @state in ('IL', 'WI', 'IN', 'IA') Create rule grade_rule as @grade like '[A-F] [ +-]'

Potrebbero piacerti anche