Artículo
|
Modelo de datos |
Restricciones de integridad
En el mundo real existen ciertas restricciones que deben cumplir los elementos en él existentes; por ejemplo, una persona sólo puede tener un número de DNI y una única dirección oficial. 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.
- Integridad de dominio: restringimos los valores que puede tomar un atributo respecto a su dominio, por ejemplo EDAD >= 18 - 65.
- Integridad de entidad: la clave primaria de una entidad no puede tener valores nulos y siempre deberá ser única, por ejemplo DNI.
- 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 la tabla familiares de los empleados necesitaremos el DNI de empleado, que es la clave ajena de la tabla.
Las restricciones se clasifican en:
- Inherentes
- Están impuestas por el modelo,
- No tiene que ser definidas por el usuario, ya que se encuentran en el propio modelo,
- Se activan en el momento de la definición del esquema cuando se produce un intento de violación,
- Se rechaza todo esquema que no cumple estas restricciones,
- Introducen rigideces en el modelo.
- Semánticas
- Impuestas por el universo del discurso,
- Tienen que ser definidas por los diseñadores,
- Se activan en el momento de la actualización de la base de datos,
- Se rechaza todo ejemplar que no cumpla estas restricciones (o se ponen en marcha otros medios a fin de que no se produzca un estado de inconsistencia),
- Ayudan a capturar la semántica de los datos y a conseguir su consistencia.
- Ajenas
- Se especifican en los programas de aplicación,
- No están almacenadas en el esquema de la base de datos,
- Pueden ser violadas por actualizaciones en las que no se haya programado la restricción,
- El sistema de bases de datos no puede comprobar si son consistentes en sí mismas.
- El optimizador no puede tomarlas en consideración,
- Proporcionan el máximo de flexibilidad,
- Pueden ser programadas en un lenguaje de propósito general o en algún lenguaje propio del sistema de bases de datos,
- Suponen una importante carga de programación y mantenimiento.
- Propias
- Se identifican en el esquema,
- Están almacenadas en el esquema de la base de datos,
- No pueden ser violadas por ninguna actualización.
- Acción General
- Es obligatorio especificar la condición y la acción,
- Son procedimentales (al menos en parte, ya que la acción se especifica siempre mediante un procedimiento),
- Suponen carga de programación,
- Es muy difícil (prácticamente imposible en la mayor parte de los casos) que el sistema de bases de datos pueda comprobar su consistencia,
- El optimizador no puede tomarlas en consideración,
- Hasta ahora no están estandarizadas,
- Están muy ligadas a los productos,
- Son muy flexibles,
- Tienen nombre y existencia propia dentro del programa.
- Procedimientos almacenados
- Es obligatorio especificar la condición (además de la acción),
- Son totalmente procedimentales,
- Pueden ser tan complejas como imponga la semántica del mundo real (tanto en la condición como en la acción),
- Son las más flexibles dentro de las restricciones propias.
- Disparadores
- Combinan los enfoques declarativo (en la condición) y procedimental (en la acción),
- Pueden ser tan complejas como imponga la semántica del mundo real en cuanto a la acción, y bastantes complejas en la condición (todo lo que permite la proposición lógica mediante la que se expresa la condición),
- El cumplimiento de la condición dispara la acción,
- Son más flexibles que las restricciones de acción específica.
- Acción Específica
- La acción está implícita en la misma restricción, por lo que no hay que definirla,
- Son declarativas, puesto que no especifica la acción y la condición, si se define, es declarativa,
- El no cumplimiento de la condición lleva a aplicar la acción,
- Podrían ser definidas mediante un lenguaje de tipo general,
- El sistema de bases de datos puede comprobar si son consistentes en sí mismas,
- El optimizador puede tomarlas en consideración,
- No suponen carga de programación, sólo de definición.
- Condición General
- No se especifica la acción, que es siempre de rechazo (el no cumplimiento de la condición lleva consigo el rechazo de la actualización),
- Es obligatorio declarar la condición mediante una proposición lógica que permite condiciones de complejidad arbitraria,
- Además de la condición, se puede especificar algún otro componente,
- Son más flexibles que las de condición específica,
- Es más difícil optimizar su ejecución que en el caso de las de condición específica.
- Verificación
- No tienen existencia en sí mismas,
- Su definición forma parte de la definición del elemento afectado por la restricción,
- Se aplican a un único elemento y aunque pueden afectar a otros, en este caso se complica su definición,
- Pueden no tener nombre.
- Aserción
- Tienen existencia por sí mismas,
- Se definen con independencia de cualquier elemento del esquema,
- Pueden afectar a más de un elemento,
- Tienen nombre.
- Condición Específica
- Son opciones proporcionadas por el propio modelo,
- No se especifica ninguno de los componentes relativos a una restricción (ni la operación, ni la condición, ni la acción),
- Son poco flexibles,
- El optimizador puede tomarlas en consideración,
- Su ejecución puede ser más fácilmente optimizada que las de condición general.
Comentarios
Últimas noticias
· factura
Últimos artículos















































