Restricciones+de+integridad+en+los+modelos+de+datos

=TEMA 5 =

3. Restricciones de integridad en los modelos de datos
Las restricciones de integridad son un conjunto de condiciones que deben cumplir los datos para reflejar correctamente la realidad deseada y que sean considerados una instancia de una Base de datos.  Un ejemplo sería, una base de datos de un organismo que emite permisos de conducir. Tendrá registrado un número de conductores y una restricción sería que no pueden existir personas menores de 18 años que puedan obtener ese permiso. Lo que significa que no es aceptable configurar la base de datos para que existan conductores menores de 18 años.

Componentes de una estricción de integridad

Cuando se diseña una base de datos se debe reflejar fielmente el universo del discurso que estamos tratando, lo que es los mismo, reflejar las restricciones existentes en el mundo real.

Los componentes de una restricción son los siguientes:


 * La operación de actualización (inserción, borrado o eliminación) cuya ejecución ha de dar lugar a la comprobación del cumplimiento de la restricción.


 * La condición que debe cumplirse, la cual es en general una proposición lógica, definida sobre uno o varios elementos del esquema, que puede tomar uno de los valores de verdad (cierto o falso).


 * La acción que debe llevarse a cabo dependiendo del resultado de la condición.

Tipos de integridad
 En general, se puede decir que existen tres tipos de integridad:
 * 1) Integridad de dominio: restringimos los valores que puede tomar un atributo respecto a su dominio, por ejemplo EDAD >= 18 - 65. Por ejemplo, el caso anterior del carnet de conducir.

Pepe no puede tener el carnet ya que no cumple el requisito, tener 18 años.
 *  Nombre ||  Edad ||  Permiso ||
 *  Juan ||  21 ||  A ||
 *  Pepe ||  13 || <span style="font-family: Arial,Helvetica,sans-serif;"> B ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> Lola || <span style="font-family: Arial,Helvetica,sans-serif;">54 || <span style="font-family: Arial,Helvetica,sans-serif;"> C ||

<span style="font-family: Arial,Helvetica,sans-serif;">2. Integridad de entidad: la clave primaria de una entidad no puede tener valores nulos y siempre deberá ser única, por ejemplo DNI. Ejemplo, si tenemos los datos de varias personas que se diferencian gracias a su DNI, usada como calve primaria.

<span style="font-family: Arial,Helvetica,sans-serif;">Si la clave primaria DNI es nula, nunca podremos saber quien es exactamente, ya que pueden existir varias personas que se llamen Juan Ronda Pérez.
 * <span style="font-family: Arial,Helvetica,sans-serif;"> DNI || <span style="font-family: Arial,Helvetica,sans-serif;"> Nombre || <span style="font-family: Arial,Helvetica,sans-serif;"> Apellidos ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> 12345678K || <span style="font-family: Arial,Helvetica,sans-serif;"> Pepe || <span style="font-family: Arial,Helvetica,sans-serif;"> Mesa López ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> NULL || <span style="font-family: Arial,Helvetica,sans-serif;"> Juan || <span style="font-family: Arial,Helvetica,sans-serif;"> Ronda Pérez ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> 87654321Q || <span style="font-family: Arial,Helvetica,sans-serif;"> Rosa || <span style="font-family: Arial,Helvetica,sans-serif;"> Merino Padilla ||


 * <span style="font-family: Arial,Helvetica,sans-serif;"> DNI || <span style="font-family: Arial,Helvetica,sans-serif;"> Nombre || <span style="font-family: Arial,Helvetica,sans-serif;"> Apellidos ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> 12345678K || <span style="font-family: Arial,Helvetica,sans-serif;"> Pepe || <span style="font-family: Arial,Helvetica,sans-serif;"> Mesa López ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> 12345678K || <span style="font-family: Arial,Helvetica,sans-serif;"> Juan || <span style="font-family: Arial,Helvetica,sans-serif;"> Ronda Pérez ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> 87654321Q || <span style="font-family: Arial,Helvetica,sans-serif;"> Rosa || <span style="font-family: Arial,Helvetica,sans-serif;"> Merino Padilla ||

<span style="font-family: Arial,Helvetica,sans-serif;">Si la clave primaria DNI es igual que la de otra persona no se puede diferenciar de la misma forma a una persona, al llamarse de distinta forma además, sería un engaño.

<span style="font-family: Arial,Helvetica,sans-serif;">3. Integridad referencial: las claves ajenas de una tabla hija se tienen que corresponder con la clave primaria de la tabla padre con la que se relaciona. Por ejemplo, en el caso de una vivienda, su localización y su habitante.


 * <span style="font-family: Arial,Helvetica,sans-serif;"> Nombre || <span style="font-family: Arial,Helvetica,sans-serif;"> Vivienda || <span style="font-family: Arial,Helvetica,sans-serif;"> Localidad ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> Pepe || <span style="font-family: Arial,Helvetica,sans-serif;"> 2 || <span style="font-family: Arial,Helvetica,sans-serif;"> Córdoba ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> Juan || <span style="font-family: Arial,Helvetica,sans-serif;"> 7 || <span style="font-family: Arial,Helvetica,sans-serif;"> Málaga ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> Rosa || <span style="font-family: Arial,Helvetica,sans-serif;"> 1 || <span style="font-family: Arial,Helvetica,sans-serif;"> Burgos ||


 * <span style="font-family: Arial,Helvetica,sans-serif;"> ID Vivienda || <span style="font-family: Arial,Helvetica,sans-serif;"> Nombre || <span style="font-family: Arial,Helvetica,sans-serif;"> Tipo ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> 1 || <span style="font-family: Arial,Helvetica,sans-serif;"> Casa Alba || <span style="font-family: Arial,Helvetica,sans-serif;"> Casa ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> 2 || <span style="font-family: Arial,Helvetica,sans-serif;"> Castillo Ruiseñor || <span style="font-family: Arial,Helvetica,sans-serif;"> Apartamento ||
 * <span style="font-family: Arial,Helvetica,sans-serif;"> 3 || <span style="font-family: Arial,Helvetica,sans-serif;"> Mansión Rosario || <span style="font-family: Arial,Helvetica,sans-serif;"> Chalé ||

Teniendo en cuenta que en la segunda tabla la clave primaria es ID vivienda y la ajena de la primera sería vivienda, es imposible que Juan viva en la Vivienda 7, ya que no existe en la otra tabla.