Instituto Tecnológico de Tuxtla Gutierez

BUSCADOR

en Web en Blog

martes, 4 de octubre de 2011

2.2.1,2 Resumen -- Integridad , Integridad referencial declarativa

2.2.1 Integridad


Se refiere a las medidas de salvaguardar, que se  incluyen en un sistema de información para evitar la pérdida accidental de los datos.
Asegurar que la información no es alterada sin autorización



Integridad de datos en bases de datos: Integridad de datos se refiere al estado de corrrección y completidud de los datos ingreados en una base de datos.
La SGBD relacional deben encargarse de mantener la integridad de los datos almacenados en una base de datos con respecto a las reglas predefinidas o restricciones. La integridad también puede verificarse inmediatamente antes del momento de introducir los datos a la base de datos (por ejemplo, en un formulario empleando validación de datos).
Un claro ejemplo de error de integridad es el ingreso de un tipo de dato incorrecto dentro de un campo.
Por ejemplo, ingresar un texto cuando se espera un número entero.


Tipos de restricciones.
 
*Estáticas: limitan los estados permitidos de la Base de Datos.
-las más importantes son las que afectan a las claves primarias.
“Ninguna de las partes que componen una clave primaria puede ser NULL
-Las modificaciones de claves primarias deben estar muy bien controladas.
*Dinámicas:  restringen las posibles transiciones de estados de la base datos.
 
 
2.2.1. Integridad referencial declarativa
La integridad referencial declarativa (DRI) y las relaciones entre tablas vienen a garantizar algo importantísimo en los sistemas relacionales, en este caso la consistencia de los datos. No es de recibo que exista en una base de datos una entrega al  cliente 50, y que el cliente 50 no exista!!, y eso es lo que nos garantiza la DRI, que esas cosas no sucedan.
 
Ejemplo :
Puede existir una cabecera que no tenga líneas, aunque la DRI garantiza que si existe una línea su cabecera si existe. Esto puede llevarnos a situaciones a veces difíciles de entender, sobre todo al principio. Si se construye una sentencia select que devuelve los registros de la cabecera, aparecen X registros, si la sentencia se completa con las unión con las líneas aparecen Y, pero Y puede ser hasta menor que X, sería ‘normal’ que fuese mayor, pero ¿menor?
/* Siempre nos basamos en una bd que exista en el sistema y que se llame pruebas */
 pruebas go create table cabecera( id int identity (1,1) primary key not null,
fecha datetime default getdate()) go create table lineas (id int not null, orden int not null,
Descripcion varchar(100) not null, constraint pk_lineas primary key (id,orden), constraint fk_lineas foreign key (id) references cabecera) go
/* además metemos 100 cabeceras */
declare @i int
set @i=0
while @i<100
begin
insert into cabecera default values
select @i=@i+1
end
go
/* y dos lineas *//
insert into lineas values (1,1,’Esto es una prueba’)
insert into lineas values (1,2,’Esto es una prueba linea 2′)
go
select * from cabecera
— 100 filas
Esto es normal, el sistema nos devuelve las 100 filas de la cabecera,
 .
.
El resultado serán las 101 filas, siendo todos los valores de la tabla líneas null, en aquellas que no tienen registros relacionados. Aparece una fila más que cabeceras por que una cabecera tiene dos líneas, por tanto esa cabecera aparecerá dos veces.
go
select * from cabecera left join lineas on cabecera.id=lineas.id where lineas.id is null
— 99 filas = 101 −2 filas.


No hay comentarios:

Publicar un comentario