La
integridad de entidad define una fila como entidad única para una tabla
determinada. La integridad de entidad exige la integridad de las columnas de
los identificadores o la clave principal de una tabla, mediante índices y
restricciones UNIQUE, o restricciones PRIMARY KEY.
Ejemplos:
Ø Tenemos la
siguiente relación:
DESPACHOS
|
||
Edificio
|
número
|
superficie
|
Marina
|
120
|
10
|
Marina
|
122
|
15
|
Marina
|
230
|
20
|
Diagonal
|
120
|
10
|
En esta
relación, puesto que la clave primaria está formada por edificio y número, no
hay ningún despacho que tenga un valor nulo para edificio, ni tampoco para
número.
Ø Una empresa dedicada a la venta
de bebidas, podríamos identificar las bebidas de un modo general, a un modo más
individual: Todas las bebidas en un sólo grupo. Todas las bebidas de la misma
marca en un grupo. Agrupar las bebidas en función de si son alcohólicas o no.
Cada bebida de modo individual. Un hecho sobre una determinada bebida, como
puede ser el sabor de un refresco.
La
integridad de dominio viene dada por la validez de las entradas para una
columna determinada. Puede exigir la integridad de dominio para restringir el
tipo mediante tipos de datos, el formato mediante reglas y restricciones CHECK,
o el intervalo de valores posibles mediante restricciones FOREIGN KEY,
restricciones CHECK, definiciones DEFAULT, definiciones NOT NULL y reglas.
Ejemplos:
Ø 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.
Ø 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.
La
integridad referencial protege las relaciones definidas entre las tablas cuando
se crean o se eliminan filas. En SQL Server la integridad referencial se basa
en las relaciones entre claves externas y claves principales o entre claves
externas y claves exclusivas, mediante restricciones FOREIGN KEY y CHECK. La
integridad referencial garantiza que los valores de clave sean coherentes en
las distintas tablas. Para conseguir esa coherencia, es preciso que no haya
referencias a valores inexistentes y que, si cambia el valor de una clave,
todas las referencias a ella se cambien en consecuencia en toda la base de
datos.
Cuando se exige la integridad referencial, SQL Server impide a los
usuarios:
- Agregar
o cambiar filas en una tabla relacionada si no hay ninguna fila asociada
en la tabla principal.
- Cambiar
valores en una tabla principal que crea filas huérfanas en una tabla
relacionada.
- Eliminar
filas de una tabla principal cuando hay filas relacionadas coincidentes.
Ejemplos:
Ø En las tablas Sales.SalesOrderDetail
y Production.Product de la base de datos AdventureWorks2008R2, la
integridad referencial se basa en la relación entre la clave externa (ProductID)
de la tabla Sales.SalesOrderDetail y la clave principal (ProductID)
de la tabla Production.Product. Esta relación garantiza que un pedido de
ventas no pueda nunca hacer referencia a un producto que no existe en la tabla Production.Product.
Ø Supongamos una base de datos con las entidades Persona
y Factura. Toda factura corresponde a una persona y solamente una.
Implica que en todo momento dichos datos sean correctos, sin repeticiones
innecesarias, datos perdidos y relaciones mal resueltas.
Supongamos que
una persona se identifica por su atributo DNI (Documento Nacional de
Identidad). También tendrá otros atributos como el nombre y la dirección. La
entidad Factura debe tener un atributo DNI_cliente que
identifique a quién pertenece la factura.
Por sentido
común es evidente que todo valor de DNI_cliente debe corresponder con
algún valor existente del atributo DNI de la entidad Persona.
Esta es la idea intuitiva de la integridad referencial.
La
integridad definida por el usuario permite definir reglas de empresa
específicas que no pertenecen a ninguna otra categoría de integridad. Todas las
categorías de integridad admiten la integridad definida por el usuario. Esto
incluye todas las restricciones de nivel de columna y nivel de tabla en CREATE
TABLE, procedimientos almacenados y desencadenadores.
Ejemplos:
Ø 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.
Gracias por la información.
ResponderEliminarSaludos desde en Instituto Tecnológico de Tapachula