lunes, 18 de marzo de 2013

[Informática] Integridad de Entidad e Integridad Referencial

Integridad de entidad
La integridad de entidad define una fila como entidad única para una tabla determinada. La integridad de entidad exige la integridad de las columnas de los identificadores o la clave principal de una tabla, mediante índices y restricciones UNIQUE, o restricciones PRIMARY KEY.

Regla de integridad de entidad de la clave primaria
La regla de integridad de entidad de la clave primaria dispone que los atributos de la clave primaria de una relación no pueden tener valores nulos.

Ejemplo

Tenemos la siguiente relación:
DESPACHOS
edificio
número
superficie
Marina
120
10
Marina
122
15
Marina
230
20
Diagonal
120
10


En esta relación, puesto que la clave primaria está formada por edificio y número, no hay ningún despacho que tenga un valor nulo para edificio, ni tampoco para número.

Esta regla es necesaria para que los valores de las claves primarias puedan identificar las tuplas individuales de las relaciones. Si las claves primarias tuviesen valores nulos, es posible que algunas tuplas no se pudieran distinguir.

Ejemplo de clave primaria incorrecta con valores nulos
En el ejemplo anterior, si un despacho tuviese un valor nulo para edificio porque en un momento dado el nombre de este edificio no se conoce, por ejemplo <NULO, 120, 30>, la clave primaria no nos permitiría distinguirlo del despacho <Marina, 120, 10> ni del despacho <Diagonal, 120,10>. No podríamos estar seguros de que el valor desconocido de edificio no es ni Marina ni Diagonal.

A continuación definimos esta regla de forma más precisa.

La regla de integridad de entidad de la clave primaria establece que si el conjunto de atributos CP es la clave primaria de una relación R, la extensión de R no puede tener ninguna tupla con algún valor nulo para alguno de los atributos de CP.

Un SGBD relacional tendrá que garantizar el cumplimiento de esta regla de integridad en todas las inserciones y, también, en todas las modificaciones que afecten a atributos que pertenecen a la clave primaria de la relación.

Ejemplo
En la relación DESPACHOS anterior, no se debería insertar la tupla <Diagonal, NULO, 15>. Tampoco debería ser posible modificar la tupla <Marina, 120, 10> de modo que pasara a ser <NULO, 120, 10>.

Integridad referencial

La integridad referencial protege las relaciones definidas entre las tablas cuando se crean o se eliminan filas. En SQL Server la integridad referencial se basa en las relaciones entre claves externas y claves principales o entre claves externas y claves exclusivas, mediante restricciones FOREIGN KEY y CHECK. La integridad referencial garantiza que los valores de clave sean coherentes en las distintas tablas. Para conseguir esa coherencia, es preciso que no haya referencias a valores inexistentes y que, si cambia el valor de una clave, todas las referencias a ella se cambien en consecuencia en toda la base de datos.

Cuando se exige la integridad referencial, SQL Server impide a los usuarios:

  • Agregar o cambiar filas en una tabla relacionada si no hay ninguna fila asociada en la tabla principal.
  • Cambiar valores en una tabla principal que crea filas huérfanas en una tabla relacionada.
  • Eliminar filas de una tabla principal cuando hay filas relacionadas coincidentes.

Regla de integridad referencial
Observad que todo lo que impone la regla de integridad referencial
viene implicado por la misma noción
de clave foránea que se ha explicado en
el subapartado 2.5 de esta unidad.
La regla de integridad referencial está relacionada con el concepto de clave foránea. Concretamente, determina que todos los valores que toma una clave foránea deben ser valores nulos o valores que existen en la clave primaria que referencia.
Ejemplo
Si tenemos las siguientes relaciones:
•Relación DESPACHOS:
DESPACHOS
edificio
número
superficie
Marina
120
10
Marina
122
15
Marina
230
20
Diagonal
120
10
 •Relación EMPLEADOS:
EMPLEADOS
DNI
nombre
apellido
edificiodesp
númerodesp
40.444.255
Juan
García
Marina
120
33.567.711
Marta
Roca
Marina
120
55.898.425
Carlos
Buendía
Diagonal
120
77.232.144
Elena
Pla
NULO
NULO
donde edificiodesp y númerodesp de la relación EMPLEADOS forman una clave foránea que referencia la relación DESPACHOS. Debe ocurrir que los valores no nulos de edificiodesp y númerodesp de la relación EMPLEADOS estén en la relación DESPACHOS como valores de edificio y número. Por ejemplo, el empleado <40.444.255, Juan García, Marina, 120> tiene el valor Marina para edificiodesp, y el valor 120 para númerodesp, de modo que en la relación DESPA CHOS hay un despacho con valor Marina para edificio y con valor 120 para número.
La necesidad de la regla de integridad relacional proviene del hecho de que las claves foráneas tienen por objetivo establecer una conexión con la clave primaria que referencian. Si un valor de una clave foránea no estuviese presente en la clave primaria correspondiente, representaría una referencia o una conexión incorrecta.
Referencia incorrecta
Supongamos que en el ejemplo anterior hubiese un empleado con los valores <56.666.789, Pedro, López, Valencia, 325>. Ya que no hay un despacho con los valores Valencia y 325 para edificio y número, la tupla de este empleado hace una referencia incorrecta; es decir, indica un despacho para el empleado que, de hecho, no existe.
A continuación explicamos la regla de modo más preciso.

La regla de integridad referencial establece que si el conjunto de atributos CF es una clave foránea de una relación R que referencia una relación S (no necesariamente diferente de R), que tiene por clave primaria CP, entonces, para toda tupla t de la extensión de R, los valores para el conjunto de atributos CF de t son valores nulos, o bien valores que coinciden con los valores para CP de alguna tupla s de S.


En el caso de que una tupla t de la extensión de R tenga valores para CF que coincidan con los valores para CP de una tupla s de S, decimos que t es una tupla que referencia s y que s es una tupla que tiene una clave primaria referenciada por t.
Un SGBD relacional tendrá que hacer cumplir esta regla de integridad. Deberá efectuar comprobaciones cuando se produzcan las siguientes operaciones:
a)  Inserciones en una relación que tenga una clave foránea.
b)  Modificaciones que afecten a atributos que pertenecen a la clave foránea de una relación.
c)  Borrados en relaciones referenciadas por otras relaciones.
d)  Modificaciones que afecten a atributos que pertenecen a la clave primaria de una relación referenciada por otra relación.
Ejemplo
Retomamos el ejemplo anterior, donde edificiodesp y númerodesp de la relación EMPLEADOS forman una clave foránea que referencia la relación DESPACHOS:
•Relación DESPACHOS:
DESPACHOS
edificio
número
superficie
Marina
120
10
Marina
122
15
Marina
230
20
Diagonal
120
10
 •Relación EMPLEADOS:
EMPLEADOS
DNI
nombre
apellido
edificiodesp
númerodesp
40.444.255
Juan
García
Marina
120
33.567.711
Marta
/td>
Roca
Marina
/td>
120
55.898.425
Carlos
Buendía
Diagonal
120
77.232.144
Elena
Pla
NULO
NULO
Las siguientes operaciones provocarían el incumplimiento de la regla de integridad referencial:
•   Inserción de <12.764.411, Jorge, Puig, Diagonal, 220> en EMPLEADOS.
•   Modificación   de   <40.444.255,   Juan,   García,   Marina,   120>   de   EMPLEADOS   por
<40.444.255, Juan, García, Marina, 400>.
•   Borrado de <Marina, 120, 10> de DESPACHOS.
•   Modificación de <Diagonal, 120, 10

Un SGBD relacional debe procurar que se cumplan las reglas de integridad del modelo.  Una forma habitual  de  mantener  estas reglas  consiste en  rechazar toda operación de actualización que deje la base de datos en un estado en el que alguna regla no se cumpla. En algunos casos, sin embargo, el SGBD tiene la posibilidad de aceptar la operación y efectuar acciones adicionales compensatorias, de modo que el estado que se obtenga satisfaga las reglas de integridad, a pesar de haber ejecutado la operación.
Esta última política se puede aplicar en las siguientes operaciones de actualización que violarían la regla de integridad:
a)  Borrado de una tupla que tiene una clave primaria referenciada.
b)  Modificación de los valores de los atributos de la clave primaria de una tupla que tiene una clave primaria referenciada.
En los casos anteriores, algunas de las políticas que se podrán aplicar serán las siguientes: restricción, actualización en cascada y anulación. A continuación explicamos el significado de las tres posibilidades mencionadas.


0 Opiniones:

Publicar un comentario

Copyright © 2014 Black Moral Яesistance | Designed With By Blogger Templates | Distributed By Gooyaabi Templates
Scroll To Top