3.5 INTEGRIDAD DE DOMINIO
La regla de integridad de dominio está relacionada, como su nombre
indica, con la noción de dominio. Esta regla establece dos condiciones.
La primera condición consiste en que un
valor no nulo de un atributo Ai debe pertenecer al dominio del atributo
Ai; es decir, debe pertenecer a dominio(Ai).
Esta condición
implica que todos los valores no nulos que contiene la base de datos
para un determinado atributo deben ser del dominio declarado para dicho
atributo.
Ejemplo
Si en la relación EMPLEADOS(DNI, nombre, apellido, edademp) hemos declarado que dominio(DNI) es el dominio predefinido de los enteros, entonces no podremos insertar, por ejemplo, ningún empleado que tenga por DNI el valor “Luis”, que no es un entero.
ecordad que los conceptos
de dominio predefinido y dominio
definido por el usuario se han explicado
en el subapartado 2.2 de esta unidad
didáctica.
|
Recordemos
que los dominios pueden ser de dos tipos: predefinidos o definidos por
el usuario. Observad que los dominios definidos por el usuario resultan
muy útiles, porque nos permiten determinar de forma más
específica cuáles serán los valores admitidos por los atributos.
Ejemplo
Supongamos ahora que en la relación EMPLEADOS(DNI, nombre, apellido, edademp) hemos declarado que dominio(edademp)
es el dominio definido por el usuario edad. Supongamos también que el
dominio edad se ha definido como el conjunto de los enteros que están
entre 16 y 65. En este caso, por ejemplo, no será posible insertar un
empleado con un valor de 90 para edademp.
Lectura recomendada |
Para estudiar con más detalle la segunda condición
de la regla de integridad
de dominio, podéis consultar la siguiente obra:
C.J. Date (2001). Introducción a los sistemas de bases de datos (7ª ed., cap. 19). Prentice Hall.
|
La
segunda condición de la regla de integridad de dominio es más compleja,
especialmente en el caso de dominios definidos por el usuario; los SGBD
actuales no la soportan para estos últimos dominios. Por estos motivos
sólo la presentaremos superficialmente.
Esta segunda condición sirve para
establecer que los operadores que pueden aplicarse sobre los valores
dependen de los dominios de estosvalores; es decir, un operador
determinado sólo se puede aplicar sobre valores que tengan dominios que
le sean adecuados.
Ejemplo
Analizaremos esta
segunda condición de la regla de integridad de dominio con un ejemplo
concreto. Si en la relación EMPLEADOS(DNI, nombre, apellido, edademp) se
ha declarado que dominio(DNI) es el dominio predefinido de los enteros,
entonces no se permitirá consultar todos aquellos empleados cuyo DNI
sea igual a ‘Elena’ (DNI = ‘Elena’). El motivo es que no tiene sentido
que el operador de comparación = se aplique entre un DNI que tiene por
dominio los enteros, y el valor ‘Elena’, que es una serie de caracteres.
De este modo, el
hecho de que los operadores que se pueden aplicar sobre los valores
dependan del dominio de estos valores permite detectar errores que se
podrían cometer cuando se consulta o se actualiza la base de datos. Los
dominios definidos por el usuario son muy útiles, porque nos permitirán
determinar de forma más específica cuáles serán los operadores que se
podrán aplicar sobre los valores.
Ejemplo
Veamos otro ejemplo con dominios definidos por el usuario. Supongamos que en la conocida relación EMPLEADOS(DNI, nombre, apellido, edademp) se ha declarado que dominio(DNI) es el dominio definido por el usuario númerosDNI y que dominio(edademp) es el dominio definido por el usuario edad. Supongamos que númerosDNI corresponde
a los enteros positivos y que edad corresponde a los enteros que están
entre 16 y 65. En este caso, será incorrecto,por ejemplo, consultar los
empleados que tienen el valor de DNI igual al valor de edademp. El motivo es que, aunque tanto los valores de DNI como
los de edademp sean enteros, sus dominios son diferentes; por ello,
según el significado que el usuario les da, no tiene sentido
compararlos.
Sin embargo, los
actuales SGBD relacionales no dan apoyo a la segunda condición de la
regla de integridad de dominio para dominios definidos por el usuario.
Si se quisiera hacer, sería necesario que el diseñador tuviese alguna
forma de especificar, para cada operador que se desease utilizar, para
qué combinaciones de dominios definidos por el usuario tiene sentido que
se aplique.
Comentarios
Publicar un comentario