Temas Semana 7 Unidad 3
Temas Semana 7 Unidad 3
Temas Semana 7 Unidad 3
Contenido
3.4. Restricciones ............................................................................................................... 1
Restricciones Inherentes del Modelo Relacional. ............................................................. 1
Restricciones Semánticas o de Usuario. .......................................................................... 3
3.5. Integridad de dominio ................................................................................................... 5
Semana 7 Unidad 3 - del 04 de marzo al 10 de marzo
3.4. Restricciones
• Cada atributo de cada tupla solo puede tomar un único valor sobre el dominio sobre el
que está definido.
• Ningún atributo que forme parte de la clave primaria de una relación puede tomar un
valor nulo (regla de integridad de entidad)
Estas restricciones son las que marcan la diferencia entre una tabla y una relación, ya que una
tabla presenta las filas y las columnas en un orden, del cual carecen las relaciones. Por otro
lado, una tabla podría contener filas repetidas. De todos modos, es muy común utilizar el
término tabla para referirse a una relación.
Preocupado por los productos que decían ser sistemas gestores de bases de datos
relacionales (RDBMS) sin serlo, Codd publica las 12 reglas que debe cumplir todo DBMS para
ser considerado relacional. Estas reglas en la práctica las cumplen pocos sistemas
relacionales. Las reglas son:
1
1. Información. Toda la información de la base de datos debe estar representada
explícitamente en el esquema lógico. Es decir, todos los datos están en las tablas.
6. Actualización de vistas. El DBMS debe encargarse de que las vistas muestren la última
información.
8. Independencia física. Los datos deben de ser accesibles desde la lógica de la base de
datos aún cuando se modifique el almacenamiento.
9. Independencia lógica. Los programas no deben verse afectados por cambios en las
tablas.
2
11. Independencia de la distribución. El sublenguaje de datos debe permitir que sus
instrucciones funcionen igualmente en una base de datos distribuida que en una que
no lo es.
1. ¿Puede aceptar nulos esa clave foránea? Por ejemplo, (tomando como referencia las
relaciones PROVEEDORES, ARTICULOS) ¿tiene sentido la existencia de un articulo
cuyo proveedor se desconoce? Evidentemente, no. En algunos casos esta respuesta
podría ser distinta, por ejemplo, en una base de datos con las relaciones EMPLEADOS
3
y DEPARTAMENTOS, podría existir un empleado no asignado de momento a un
departamento.
2. ¿Qué deberá suceder si se intenta eliminar una tupla referenciada por una clave
foránea? Por ejemplo, si se intenta eliminar un proveedor del cual existe algún artículo.
En general, para estos casos existen por lo menos tres posibilidades:
• Anular: Se asignan nulos en la clave foránea de todas las tuplas que la referencien
y se elimina la tupla referenciada. En nuestro ejemplo, no tiene mucho sentido,
pero consistiría en asignar nulos al NIF-PROV de todas las tuplas de articulos
pertenecientes al proveedor que queremos borrar, y posteriormente borrar al
proveedor.
3. ¿Qué deberá suceder si hay un intento de modificar la clave primaria de una tupla
referenciada por una clave foránea? Por ejemplo, si se intenta modificar la clave de un
proveedor del cual existe algún artículo. Se actúa con las mismas tres posibilidades
que en el caso anterior:
• Restringir
• Propagar en cascada.
• Anular
4. Restricción de Valor por Defecto (DEFAULT), permite que cuando se inserte una tupla
o registro en una tabla, para aquellos atributos para los cuales no se indique un valor
exacto se les asigne un valor por defecto.
4
determinados atributos de una relación de la BD, aparte de las restricciones vistas
anteriormente.
7. Disparadores (TRIGGERS), a veces puede interesar espeficar una acción distinta del
rechazo cuando no se cumple una determinada restricción semántica. En este caso,
se recurre al uso de disparadores o triggers que nos permiten además de indicar una
condición, especificar la acción que queremos que se lleve a cabo si la condición se
hace verdadera. Los disparadores pueden interpretarse como reglas del tipo evento-
condición-acción (ECA) que pueden interpretarse como reglas que especifican que
cuando se produce un evento, si se cumple una condición, entonces se realiza una
determinada acción.
La regla de integridad de dominio está relacionada, como su nombre indica, con la noción de
dominio. Esta regla establece dos condiciones.
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
Recordemos que los dominios pueden ser de dos tipos: predefinidos o definidos por el usuario.
Observemos que los dominios definidos por el usuario resultan muy útiles, porque nos
5
permiten determinar de forma más específica cuáles serán los valores admitidos por los
atributos.
Ejemplo
Esta segunda condición sirve para establecer que los operadores que pueden aplicarse sobre
los valores dependen de los dominios de estos valores; es decir, un operador determinado sólo
se puede aplicar sobre valores que tengan dominios que le sean adecuados.
Ejemplo
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
6
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. El lenguaje estándar SQL no incluye actualmente esta posibilidad.
7
Referencias bibliográficas
Elizabeth Pulido Romero, Óscar Escobar Domínguez y José Ángel Núñez Pérez. Base de
datos. Ciudad de México: Grupo Editorial Patria, 2019. eLibro.