4.3.3. Anulacion

 

Esta política consiste en permitir la operación de actualización de la tupla y en efectuar operaciones compensatorias que pongan valores nulos a los atributos de la clave foránea de las tuplas que la referencian; esta acción se lleva a cabo para mantener la integridad referencial.

Puesto que generalmente los SGBD relacionales permiten establecer que un determinado atributo de una relación no admite valores nulos, sólo se puede aplicar la política de anulación si los atributos de la clave foránea sí los admiten.

Más concretamente, la anulación en caso de borrado consiste en permitir el borrado de una tupla t que tiene una clave referenciada y, además,  modificar  todas  las  tuplas  que  referencian  t,  de  modo  que  los atributos de la clave foránea correspondiente tomen valores nulos.
De forma similar, la anulación en caso de modificación consiste en permitir la modificación de atributos de la clave primaria de una tupla t que tiene una clave referenciada y, además, modificar todas las tuplas que referencian t, de modo que los atributos de la clave foránea correspondiente tomen valores nulos.

Ejemplo de aplicación de la anulación

El mejor modo de entender en qué consiste la anulación es mediante un ejemplo. Tenemos las siguientes relaciones:

•Relación VENDEDORES:

VENDEDORES

numvendedor

...

1

2

3

• Relación CLIENTES:

CLIENTES

numcliente

...

vendedorasig*

23

1

35

1

38

2

42

2

50

3

* {vendedorasig} referencia VENDEDORES.

a) Si aplicamos la anulación en caso de borrado y, por ejemplo, queremos borrar al vendedor número 1, se modificarán todos los clientes que lo tenían asignado, y pasarán a tener un valor nulo en vendedorasig. Nos quedará:

•Relación VENDEDORES:

 

 

VENDEDORES

numvendedor

...

2

3

•Relación CLIENTES:

CLIENTES

numcliente

...

vendedorasig*

23

NULO

35

NULO

38

2

42

2

50

3

* {vendedorasig} referencia VENDEDORES.

b) Si aplicamos la anulación en caso de modificación, y ahora queremos cambiar el número del vendedor 2 por 5, se modificarán todos los clientes que lo tenían asignado y pasarán a tener un valor nulo en vendedorasig. Nos quedará:

•Relación VENDEDORES:

 

 

VENDEDORES

numvendedor

...

5

3

•Relación CLIENTES:

CLIENTES

numcliente

...

vendedorasig*

23

NULO

35

NULO

38

NULO

42

NULO

50

3