Restricciones de la base de datos

Integridad en las bases de datos

Definición de una base de datos
Una base de datos es una colección de datos relacionados. Con la palabra "datos" nos referimos a los hechos conocidos que se pueden grabar y que tienen un significado implícito. Por ejemplo, los nombres, números de teléfono y direcciones de un grupo de personas. Esta colección de datos relacionados con un significado implícito es una base de datos.
Sin embargo, la definición anterior es muy genérica. No obstante, el uso común del término "Base de datos" es normalmente más restringido. Una base de datos tiene las siguientes propiedades implícitas:

  • Una base de datos representa algún aspecto del mundo real, lo que en ocasiones se denomina "minimundo" o "universo de discurso". Los cambios introducidos en el minimundo se reflejan en la base de datos.
  • Una base de datos es una colección de datos lógicamente coherente con algún tipo de significado inherente. No es correcto denominar base de datos a un surtido aleatorio de datos.
  • Una base de datos se diseña, construye y rellena con datos para un propósito específico. Dispone de un grupo pretendido de usuarios y algunas aplicaciones preconcebidas en las que esos usuarios están interesados.

En otras palabras, una base de datos tiene algún origen del que se derivan los datos, algún grado de interacción con eventos del mundo real y un público que está activamente interesado en su contenido. Al objeto de que una base de datos sea en todo momento precisa y fiable, debe ser un reflejo exacto del minimundo que representa; por consiguiente, en la base de datos deben reflejarse los cambios tan pronto como sea posible.
Por último cabe destacar que una base de datos puede ser de cualquier tamaño y complejidad. Y además esta puede mantenerse manualmente o de forma automática.

Definición de DBMS
Un DBMS (DataBase Management System) es una colección de programas que permite a los usuarios crear y mantener una base de datos. El DBMS es un sistema de software de propósito general que facilita los procesos de definición, construcción, manipulación y compartición de bases de datos entre varios usuarios y aplicaciones. Definir una base de datos implica especificar los tipos de datos, estructuras y restricciones de los datos que se almacenarán en la base de datos. La definición o información descriptiva de una base de datos también se almacena en esta última en forma de catálogo o diccionario de la base de datos; es lo que se conoce como metadatos. La construcción de la base de datos es el proceso consistente en almacenar los datos en algún medio de almacenamiento controlado por el DBMS. La manipulación de una base de datos incluye funciones como la consulta de la base de datos para recuperar datos específicos, actualizar la base de datos para reflejar los cambios introducidos en el minimundo y generar informes a partir de los datos. Compartir una base de datos permite que varios usuarios y programas accedan a la base de datos de forma simultánea.
Otras funciones importantes ofrecidas por el DBMS son la protección de la base de datos y su mantenimiento durante un largo período. La protección incluye la protección del Sistema contra el funcionamiento defectuoso del hardware o el  software (caídas) y la protección de la seguridad contra el acceso no autorizado o malintencionado. Una gran base de datos típica puede tener un ciclo de vida de muchos años, por lo que el DBMS debe ser capaz de mantener el sistema de bases de datos permitiendo que este evolucione según cambian los requisitos en el tiempo.

Definición de Integridad
La integridad en una base de datos se refiere a la corrección y exactitud de la información contenida. Una base de datos determinada podría estar sujeta a cualquier cantidad de restricciones de integridad (en general) de una complejidad arbitraria. En la mayoría de los sistemas actuales, la verificación de la integridad se realiza mediante códigos de procedimientos escritos por los usuarios.
Algunos ejemplos de restricciones de integridad serían:

  • Los dueños de cuentas de ahorro no pueden solicitar un monto mayor de dinero del que hayan juntado hasta la fecha.
  • Para que un cliente sea considerado especial, deberá tener un mínimo de USD 1.000 en compras promedio al año.

La Integridad es el término utilizado para decir que la información almacenada tiene calidad. El DBMS tiene que asegurar que los datos se almacenan de acuerdo a las políticas previamente determinadas por el DBA. En otras palabras, el DBMS debe principalmente, a este respecto, comprobar las restricciones de integridad, controlar la correcta ejecución de las actualizaciones y recuperar la base de datos en caso de pérdida.
La Integridad conserva la seguridad en un sistema de bases de datos que permite el acceso a múltiples usuarios en tiempos paralelos.
Un control de integridad o restricción es aquel que nos permite definir con precisión el rango de valores válidos para un elemento y/o las operaciones que serán consideraciones válidas en la relación de tales elementos.

Reglas de Integridad
Una vez definida la estructura de datos del modelo relacional (es decir, una vez que se determina el modelo conceptual) pasamos a estudiar las reglas de integridad que los datos almacenados en dicha estructura deben cumplir para garantizar que son correctos.
Al definir cada atributo sobre un dominio se impone una restricción sobre el conjunto de valores permitidos para cada atributo. A este tipo de restricciones se les denomina restricciones de dominio. Hay además dos reglas de integridad muy importantes que son restricciones que se deben cumplir en todas las bases de datos relacionales y en todos sus estados o instancias (las reglas se deben cumplir todo el tiempo). Estas reglas son la de integridad de entidades y la de integridad referencial. Antes de definirlas es preciso conocer el concepto de nulo  y dominio.
Nulo: Es un indicador que le dice al usuario que el dato falta o no es aplicable. Por conveniencia, un dato que falta normalmente se dice que tiene valor Nulo, pero el valor de Nulo no es un valor de dato real. En vez de ello es una señal o un recordatorio de que el valor falta o es desconocido.
Dominio: Posibles valores que puede tener un campo. Un dominio no es más que un tipo de dato; posiblemente un tipo simple definido por el sistema o por el usuario. El Dominio de un atributo define los valores posibles que puede tomar este atributo. Además de los Dominios "naturales", usados como tipos de datos, el administrador del sistema puede generar sus propios dominios definiendo el conjunto de valores permitidos. Esta característica, usada en forma correcta, se convierte en mecanismo de control, restricción y validación de los datos a ingresar.

Reglas de Integridad - Dominio
Un Dominio de valores posibles puede estar asociado a cada atributo. Los límites de Dominio son la forma más elemental de restricciones de Integridad. Son fáciles de probar en el sistema siempre que se introduce un nuevo dato en el sistema.
Por ejemplo:


Tipos de datos en SQL
Dato
Longitud
Descripción
Bit
1 byte
Valores true/false
Byte
1 byte
Entero entre 0 y 255
Counter
4 bytes
Campo ID (long)
Currency
8 bytes
Numérico
Datetime
8 bytes
Fecha
Text
1 byte/caracter
De 0 a 255 caracteres





Tipos de datos en SQL
Dato
Longitud
Descripción
Bit1 byteValores true/false
Byte1 byteEntero entre 0 y 255
Counter4 bytesCampo ID (long)
Currency8 bytesNumérico
Datetime8 bytesFecha
Text1 byte/caracterDe 0 a 255 caracteres



Una definición bien adecuada de restricciones de dominio no sólo nos permite probar valores insertados en la base de datos. También nos permite probar consultas para asegurarnos de que las comparaciones que se hacen tienen sentido.

Reglas de Integridad - Relación
Las reglas de Integridad de relación son restricciones que se deben cumplir en todas las bases de datos relacionales y en todos sus estados o instancias, es decir, se deben cumplir todo el tiempo.
Existen básicamente dos reglas de Integridad asociadas con el modelo relacional: la Integridad de Entidad y la Integridad Referencial. Estas dos reglas son generales y tienen relación con las llaves primarias y foráneas.
Integridad de Entidad
Las restricciones de entidades aseguran la integridad de las entidades que son modeladas por el sistema. En el nivel más simple, la existencia de una clave principal es una restricción de entidad que impone la regla "cada entidad debe estar identificada de forma única".
En esta no está permitido que algún componente de la clave primaria acepte valores nulos.
Las razones de esta regla son:

  • Las tuplas en las relaciones base representan entidades en la realidad.
  • Las entidades en la realidad son identificables por definición.
  • Sus contrapartes en la base de datos también deben ser identificables.
  • Los valores de la clave primaria sirven como identificadores en la base de datos.
  • Los valores de clave primaria no pueden ser nulos.

Integridad Referencial
La regla de Integridad referencial define que la base de datos no debe contener valores de claves foráneas sin concordancia.
Esta regla se aplica a las claves foráneas. Si en una relación hay alguna clave foránea, entonces sus valores deben coincidir con los valores de la clave primaria a la que hace referencia, o bien, debe ser completamente nulo.