7. Modelo relacional de datos -Reglas de integridad relacional- 0. Bases de Datos 1
Last updated Apr 8, 2024
by
sr_labs Admin
# Modelo relacional de datos
[https://es.slideshare.net/SergioRios/unidad-4-modelo-de-datos-para-la-implementacin](oembed:https://es.slideshare.net/SergioRios/unidad-4-modelo-de-datos-para-la-implementacin)
Una base de datos contiene unos datos que, en cada momento, deben reflejar la realidad o, más concretamente, la situación de una porción del mundo real. En el caso de las bases de datos relacionales, esto significa que la extensión de las relaciones (es decir, las tuplas que contienen las relaciones) deben tener valores que reflejen la realidad correctamente.\
\
Denominamos integridad la propiedad de los datos de corresponder a representaciones plausibles del mundo real.\
\
Como es evidente, para que los datos sean íntegros, es preciso que cumplan varias condiciones.
# Regla de integridad de la clave primaria
Está relacionada con la definición de clave primaria. Concretamente, establece que toda clave primaria que se elija para una relación no debe tener valores nulos ni repetidos.

En esta tabla donde la clave primaria es matrícula, los elementos marcados con amarillo no cumplen con la regla antes mencionada, es decir, en el tercer alumno hay un valor nulo y la matrícula del último se repite con la del primero.
# Integridad referencial
La integridad referencial es propiedad de la base de datos. La misma significa que la clave externa de una tabla de referencia siempre debe aludir a una fila válida de la tabla a la que se haga referencia. La integridad referencial garantiza que la relación entre dos tablas permanezca sincronizada durante las operaciones de actualización y eliminación.
Todas las bases de datos relacionales gozan de esta propiedad gracias a que el software gestor de base de datos vela por su cumplimiento. En cambio, las bases de datos jerárquicas requieren que los programadores se aseguren de mantener tal propiedad en sus programas.
***Regla de integridad referencial*:** se aplica a las llaves ajenas: si en una relación hay alguna llave ajena o clave foránea, sus valores deben coincidir con valores de la llave primaria a la que hace referencia, o bien, deben ser completamente nulos.
La regla de integridad referencial se enmarca en términos de estados de la base de datos: indica lo que es un estado ilegal, pero no dice cómo puede evitarse.
La cuestión es ¿qué hacer si estando en un estado legal, llega una petición para realizar una operación que conduce a un estado ilegal? Existen dos opciones: rechazar la operación, o bien aceptar la operación y realizar operaciones adicionales compensatorias que conduzcan a un estado legal.
Por lo tanto, para cada clave foránea de la base de datos habrá que contestar a tres preguntas:
1\.- Regla de los nulos: ¿Tiene sentido que la clave foránea acepte nulos?\
2\.- Regla de borrado: ¿Qué ocurre si se intenta borrar la tupla referenciada por la clave foránea?
* Restringir: no se permite borrar la tupla referenciada.
* Propagar (cascada): se borra la tupla referenciada y se propaga el borrado a las tuplas que la referencian mediante la clave foránea.
* Anular: se borra la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave foránea (sólo si acepta nulos).

3\.- Regla de modificación: ¿Qué ocurre si se intenta modificar el valor de la clave primaria de la tupla referenciada por la clave foranea?
* Restringir: no se permite modificar el valor de la clave primaria de la tupla referenciada.
* Propagar (cascada): se modifica el valor de la clave primaria de la tupla referenciada y se propaga la modificación a las tuplas que la referencian mediante la clave foranea.
* Anular: se modifica la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave foranea (sólo si acepta nulos).
***Reglas de negocio:*** *a*demás de las dos reglas de integridad anteriores, los usuarios o los administradores de la base de datos pueden imponer ciertas restricciones específicas sobre los datos, denominadas reglas de negocio.
Por ejemplo, si en una oficina de la empresa inmobiliaria sólo puede haber hasta veinte empleados, el SGBD debe dar la posibilidad al usuario de definir una regla al respecto y debe hacerla respetar. En este caso, no debería permitir dar de alta un empleado en una oficina que ya\
tiene los veinte permitidos.
## Ejemplo: Cómo funciona
Supongamos una base de datos con las entidades *Persona* y *Factura*. Toda factura corresponde a una persona y solamente una. Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones mal resueltas.
Supongamos que una persona se identifica por su atributo *DNI* (Documento Nacional de Identidad). También tendrá otros atributos como el nombre y la dirección. La entidad *Factura* debe tener un atributo *DNI_cliente* que identifique a quién pertenece la factura.
Por sentido común es evidente que todo valor de *DNI_cliente* debe corresponder con algún valor existente del atributo *DNI* de la entidad *Persona*. Esta es la idea intuitiva de la integridad referencial.
Existen tres tipos de integridad referencial:
1. Integridad referencial débil: si en una tupla de R todos los valores de los atributos de K tienen un valor que no es el nulo, entonces debe existir una tupla en S que tome esos mismos valores en los atributos de J;
2. Integridad referencial parcial: si en una tupla de R algún atributo de K toma el valor nulo, entonces debe existir una tupla en S que tome en los atributos de J los mismos valores que los atributos de K con valor no nulo; y
3. Integridad referencial completa: en una tupla de R todos los atributos de K deben tener el valor nulo o bien todos tienen un valor que no es el nulo y entonces debe existir una tupla en S que tome en los atributos de J los mismos valores que toman los de K.
### La integridad referencial en juego
Cuando se crea una nueva instancia de *Factura*, la integridad referencial exige que el atributo *DNI_cliente* coincida con el atributo *DNI* de alguna instancia de la entidad *Persona*. En caso contrario, no se permite la operación.
Cuando se intenta eliminar una instancia de *Persona*, la integridad referencial exige que no exista ninguna factura asociada, es decir, se comprueba que no existe ninguna instancia de *Factura* cuyo atributo *DNI_cliente* coincida con el atributo *DNI* de la instancia a borrar. En caso contrario, no se permite la operación.
# Links de interés
Reglas de integridad, [http://findesemestreconalep.blogspot.com/2010/02/reglas-de-integridad.html](http://findesemestreconalep.blogspot.com/2010/02/reglas-de-integridad.html)
Integridad referencial, Wikipedia, [https://es.wikipedia.org/wiki/Integridad_referencial](https://es.wikipedia.org/wiki/Integridad_referencial)
Like
·