Instituto Tecnológico de Tuxtla Gutierez

BUSCADOR

en Web en Blog

martes, 4 de octubre de 2011

2.2.1 Integridad, Integridad Refencial 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.

Primero repasemos un poco los tipos de relaciones.

Tipos de relaciones.
 
Entre dos tablas de cualquier base de datos relacional pueden haber dos tipos de relaciones, relaciones uno a uno y relaciones uno a muchos:
Relación Uno a Uno: Cuando un registro de una tabla sólo puede estar relacionado con un único registro de la otra tabla y viceversa.
Por ejemplo: tenemos dos tablas una de profesores y otra de departamentos y queremos saber qué profesor es jefe de qué departamento, tenemos una relación uno a uno entre las dos tablas ya que un departamento tiene un solo jefe y un profesor puede ser jefe de un solo departamento.
Relación Uno a Varios: Cuando un registro de una tabla (tabla secundaria) sólo puede estar relacionado con un único registro de la otra tabla (tabla principal) y un registro de la tabla principal puede tener más de un registro relacionado en la tabla secundaria, en este caso se suele hacer referencia a la tabla principal como tabla 'padre' y a la tabla secundaria como tabla 'hijo', entonces la regla se convierte en 'un padre puede tener varios hijos pero un hijo solo tiene un padre (regla más fácil de recordar).
Por ejemplo: tenemos dos tablas una con los datos de diferentes poblaciones y otra con los habitantes, una población puede tener más de un habitante, pero un habitante pertenecerá (estará empadronado) en una única población. En este caso la tabla principal será la de poblaciones y la tabla secundaria será la de habitantes. Una población puede tener varios habitantes pero un habitante pertenece a una sola población. Esta relación se representa incluyendo en la tabla 'hijo' una columna que se corresponde con la clave principal de la tabla 'padre', esta columna es lo denominamos clave foránea (o clave ajena o clave externa).
Una clave foránea es pues un campo de una tabla que contiene una referencia a un registro de otra tabla. Siguiendo nuestro ejemplo en la tabla habitantes tenemos una columna población que contiene el código de la población en la que está empadronado el habitante, esta columna es clave ajena de la tabla habitantes, y en la tabla poblaciones tenemos una columna codigo de poblacion clave principal de la tabla.

 
  Relación Varios a Varios: Cuando un registro de una tabla puede estar relacionado con más de un registro de la otra tabla y viceversa. En este caso las dos tablas no pueden estar relacionadas directamente, se tiene que añadir una tabla entre las dos que incluya los pares de valores relacionados entre sí.
Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los artículos que se venden en la empresa, un cliente podrá realizar un pedido con varios artículos, y un artículo podrá ser vendido a más de un cliente.
No se puede definir entre clientes y artículos, hace falta otra tabla (por ejemplo una tabla de pedidos) relacionada con clientes y con artículos. La tabla pedidos estará relacionada con cliente por una relación uno a muchos y también estará relacionada con artículos por un relación uno a muchos.

Cuando se define una columna como clave foránea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningún valor), o bien un valor que existe en la otra tabla, un error sería asignar a un habitante una población que no está en la tabla de poblaciones. Eso es lo que se denomina integridad referencial y consiste en que los datos que referencian otros (claves foráneas) deben ser correctos. La integridad referencial hace que el sistema gestor de la base de datos se asegure de que no hayan en las claves foráneas valores que no estén en la tabla principal.
La integridad referencial se activa en cuanto creamos una clave foránea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla.[1]









 
2.2.2 Integridad referencial declarativa.

La integridad referencial es un sistema de reglas que utilizan la mayoría de las bases de datos relacionales para asegurarse que los registros de tablas relacionadas son válidos y que no se borren o cambien datos relacionados de forma accidental produciendo errores de integridad. [1]

La integridad de los datos es la propiedad que asegura que información dada es correcta, al cumplir ciertas aserciones.
Las restricciones de integridad aseguran que la información contenida en una base de datos es correcta.
Las restricciones de integridad son propiedades de la base de datos que se deben satisfacer en cualquier momento.
Oracle es un sistema de gestión de base de datos (SGBD) relacional que permite la definición de restricciones de integridad dentro del diseño de su base de datos al ser creada.
Las restricciones de integridad aseguran que la información contenida en la base de datos cumple ciertas restricciones para los diferentes estados.
Existen dos tipos de restricciones:
  • Estáticas: limitan los estados permitidos de la Base de Datos.
  • Dinámicas:  restringen las posibles transiciones de estados de la base datos.
Para incorporar el tratamiento de las restricciones de integridad en el sistema pueden realizarse:
  • Añadiendo código adicional para verificar y asegurar que se cumplen las restricciones.
  • Declarando las restricciones como parte del esquema de la base de datos.
La definición en la fase de diseño de las restricciones de integridad proporciona mayor número de ventajas, ya que:
  • Reduce el costo de desarrollo de software.
  • Es más confiable al ser centralizado y uniforme.
  • Mantenimiento más fácil.
De acuerdo con la forma de especificación del comando CREATE TABLE dada anteriormente, la cláusula <table_constraint> puede entonces tener las siguientes formas:
CONSTRAINT <constraint_name> PRIMARY KEY (>[,>])
CONSTRAINT <constraint_name> UNIQUE ([,])
CONSTRAINT <constraint_name> FOREIGN KEY (<column_name>[,<column_name>]) REFERENCES <table_name>
CONSTRAINT <constraint_name> CHECK (<condition>)
Donde:
es el nombre con el que se designará al “constraint" en el esquema donde se crea la tabla que lo incluye.
es el nombre de una columna de la tabla en la que se define el “constraint"
1
<table_name> es el nombre de una tabla definida en el esquema donde existe la tabla que incluye el “constraint".
<condition> es una expresión lógica de SQL.[2]


Referencias 
[1] http://www.aulaclic.es/sql/b_8_1_1.htm
[2] http://www.paginasprodigy.com.mx/evaristopacheco/taller/integridadReferencialDeclarativa.html

No hay comentarios:

Publicar un comentario