Story Transcript
El modelo relacional de datos. 9 2.1 Modelo relacional de datos (Aproximación
Tema II: El modelo relacional de datos. (2.4)
2.4 Restricciones de Integridad.
algebraica). – 2.1.1 Estructuras de datos: tupla, relación. – 2.1.2 Operadores asociados a la estructura relación: Álgebra Relacional. 9 2.2 Esquema relacional: representación de la realidad. 9 2.3 Modelo relacional de datos (Aprox. lógica) – 2.3.1 Lógica de 1er orden. – 2.3.2 Interpretación lógica de una base de datos relacional. Lógica 1er orden como lenguaje. 9 2.4 Restricciones de integridad.
2.4 Restricciones de Integridad. Departamento
Extensión válida del esquema
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom, teléfono:dom_tel, cod_dep: dom_dep)
cod_dep
Extensión “no adecuada” del esquema
Departamento (cod_dep: dom_dep, nombre:dom_nom) Empleado
nro_emp
dni
nombre
teléfono
cod_dep
1
2045021
Juan C. Ródenas
7796
d1
2
1234567
Robert Capilla
?
d2
cod_dep
3
3567896
José V. Dualde
5760
dni
d2
4
1432652
María Frasnedo
3560
d2
nombre
nombre
5
2045021
Cristina Guillot
7439
d8
1
3356223
?
4590
teléfono
?
cod_dep
Departamento
Ventas
d2
Compras
d3
Contabilidad
?
nro_emp
Empleado
nombre
d1
•Hay dos empleados con el mismo DNI. •Hay dos empleados con el mismo número de trabajador. •Hay un empleado sin nombre. •Hay una referencia a un departamento no existente en Departamento
1
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad.
restricción de integridad
Restricciones de Integridad: propiedad del mundo real del cual la base de datos es una representación para que la base de datos sea una representación fiel de la realidad debe cumplir estas restricciones en cualquier instante de su historia
las restricciones deben ser comprobadas después de cada actualización de la base de datos
9Restricciones sobre atributos: de dominio y de valor no nulo 9Restricciones de unicidad 9Restricción de clave primaria 9Restricción de clave ajena (integridad referencial)
si las restricciones se definen en el esquema de la base de datos el SGBD puede velar por su cumplimiento rechazando operaciones del usuario que las violen
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad.
Restricciones de Integridad:
Restricciones de Integridad: restricción de
9El atributo nro_emp identifica de forma únivoca a los empleados
primaria 9El atributo nro_emp identifica de formaclave únivoca a los empleados
9El atributo dni es único para cada empleado
unicidad 9El atributo dni es único para cada empleado
9Se debe conocer el nombre de todo empleado
restricción de 9Se debe conocer el nombre de todo empleado
9El atributo cod_dep de Empleado referencia al departamento de adscripción del empleado
9El atributo cod_dep de Empleado referencia al departamento de adscripción del empleado restricción de clave ajena o
restricción de
valor no nulo
integridad referencial
2
2.4 Restricciones de Integridad. Restricciones de Integridad: 9Restricciones sobre atributos: de dominio y de valor no nulo 9Restricciones de unicidad 9Restricción de clave primaria 9Restricción de clave ajena (integridad referencial)
2.4 Restricciones de Integridad.
Valor NO NULO Dado un conjunto de atributos K de R (K≠∅) se dice que R satisface una restricción de valor no nulo sobre K si se cumple la siguiente propiedad: ∀ t ( t ∈ R → ¬∃ Ai ∈ K y t(Ai) tiene valor nulo) en caso contrario R viola esta restricción.
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom, teléfono:dom_tel, cod_dep: dom_dep) VNN={nombre}
2.4 Restricciones de Integridad. Restricciones de Integridad: 9Restricciones sobre atributos: de dominio y de valor no nulo 9Restricciones de unicidad 9Restricción de clave primaria 9Restricción de clave ajena (integridad referencial)
2.4 Restricciones de Integridad.
Unicidad Dado un conjunto de atributos K de R (K≠∅) se dice que R satisface una restricción de unicidad sobre K si se cumple la siguiente propiedad: ∀t1 ∀t2 ( t1∈R y t2∈R y t1≠ t2→ ∃ Ai∈K (t1(Ai) ≠ t2(Ai))) en caso contrario R viola esta restricción.
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom, teléfono:dom_tel, cod_dep: dom_dep) VNN={nombre} UNI={dni}
3
2.4 Restricciones de Integridad. Restricciones de Integridad: 9Restricciones sobre atributos: de dominio y de valor no nulo 9Restricciones de unicidad 9Restricción de clave primaria 9Restricción de clave ajena (integridad referencial)
2.4 Restricciones de Integridad.
Clave primaria “Un conjunto CP de atributos de una relación R que identifican de forma unívoca sus tuplas”
Si CP se define como clave primaria de R, se dice que R satisface la restricción de clave primaria si: • R satisface la restricción de unicidad sobre CP • R satisface la restricción de valor no nulo sobre CP en caso contrario R viola esta restricción.
Nota: CP debe ser minima, es decir no debe haber un subconjunto propio de CP que a su vez pueda ser clave primaria
2.4 Restricciones de Integridad. Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom, teléfono:dom_tel, cod_dep: dom_dep) CP={nro_emp}, VNN={nombre}, UNI={dni} Departamento (cod_dep: dom_dep, nombre:dom_nom) CP={cod_dep}, VNN={nombre}
2.4 Restricciones de Integridad. Restricciones de Integridad: 9Restricciones sobre atributos: de dominio y de valor no nulo 9Restricciones de unicidad 9Clave primaria 9Clave ajena (integridad referencial)
4
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad. Empleado
Clave ajena (integridad referencial)
cod_dep
dni
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom, teléfono:dom_tel, cod_dep: dom_dep)
nombre
nombre teléfono
CP={nro_emp}, VNN={nombre}, UNI={dni}
cod_dep Departamento (cod_dep: dom_dep, nombre:dom_nom) CP={cod_dep}, VNN={nombre}
cod_dep de Empleado es un atributo de referencia (clave ajena)
su función es hacer referencia a las tuplas de Departamento
9El atributo cod_dep de Empleado referencia al departamento de adscripción del empleado
2.4 Restricciones de Integridad.
Departamento
nro_emp
su valor en una tupla de Empleado, si no es nulo, debe coincidir con el valor del atributo cod_dep de una tupla de Departamento.
2.4 Restricciones de Integridad. Departamento cod_dep
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom, teléfono:dom_tel, cod_dep: dom_dep) CP={nro_emp}, VNN={nombre}, UNI={dni} CAj={cod_dep} → Departamento
f(cod_dep)=cod_dep
Departamento (cod_dep: dom_dep, nombre: dom_nom) CP={cod_dep}, VNN={nombre}
nombre
d1
Ventas
d2
Compras
d3
Contabilidad
Empleado nro_emp
dni
nombre
teléfono
cod_dep
1
2045021
Juan C. Ródenas
7796
d1
2
1234567
Robert Capilla
?
d2
3
3567896
José V. Dualde
5760
d2
4
1432652
María Frasnedo
3560
d1
5
2045333
Cristina Guillot
7439
d8
?
Empleado viola la restricción de clave ajena para el atributo cod_dep
5
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad. Departamento
Clave Ajena
cod_dep
nombre
d1
Ventas
d2
Compras
d3
Contabilidad
Clave Ajena Sea: • R una relación de esquema ρ = {(A1, D1), (A2, D2),…, (An, Dn)}
Empleado nro_emp
dni
nombre
teléfono
cod_dep
1
2045021
Juan C. Ródenas
7796
d1
2
1234567
Robert Capilla
?
d2
3
3567896
José V. Dualde
5760
d2
4
1432652
María Frasnedo
3560
d1
5
2045333
Cristina Guillot
7439
d3
• S una relación de esquema σ = {(B1, E1), (B2, E2),…, (Bm, Em)} • Aρ el conjunto de nombres de atributo de ρ, Aρ = {A1, A2, …, An} • Aσ el conjunto de nombres de atributo de σ, Aσ = {B1, B2, …, Bm}
Empleado satisface la restricción de clave ajena para el atributo cod_dep
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad.
Clave Ajena
Clave Ajena
Una clave ajena CA de R que hace referencia a S se define: 1) un subconjunto K = {Ai, Aj,…, Ak} (K ⊆ Aρ y K ≠ ∅), 2) una biyección f: K→ J tal que:
Tipos de integridad referencial: 1) Debil: Si en una tupla de R todos los atributos son no nulos, existe una tupla en S que tome los mismos valores.
J ⊆ Aσ , J tiene restricción de unicidad, y
2) Parcial: Si en una tupla de R algún atributo que no es nulo, existe una tupla en S que tome los mismos valores.
∀Ai (Ai ∈ K→ Ai y f(Ai) tienen el mismo dominio, y
3) Completa: Si en una tupla de R todos los atributos deben tener valor nulo o todos los valores no nulos. Si es así, existe una tupla en S que toma los mismos valores.
3) un tipo de integridad referencial que puede ser: débil, parcial o completa.
6
2.4 Restricciones de Integridad.
Clave Ajena Si K = {Ai} (sólo contiene un atributo) los tres tipos de integridad referencial coinciden.
Si K = {Ai} (sólo contiene un atributo) se dice que R satisface la restricción de integridad referencial sobre CA si se cumple: “en cualquier tupla de R o Ai tiene valor nulo o existe una tupla en S que tiene en el atributo de J, f(Ai), el mismo valor”. ∀ t ( t ∈ R → ( nulo(t(Ai)) ∨ ∃ m (m ∈ S y t(Ai) = m(f(Ai))) )) en caso contrario R viola esta restricción.
2.4 Restricciones de Integridad. Clave Ajena (integridad referencial)
K
R
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom, teléfono:dom_tel, cod_dep: dom_dep) CP={nro_emp}, VNN={nombre}, UNI={dni} CAj={cod_dep} → Departamento
f(cod_dep) = cod_dep
Departamento (cod_dep: dom_dep, nombre:dom_nom) CP={cod_dep}, VNN={nombre}
J
S f: K → J f (cod_dep) = cod_dep
2.4 Restricciones de Integridad.
Clave Ajena con varios atributos
J tiene restricción de unicidad
en algunos casos se puede omitir
2.4 Restricciones de Integridad.
Ejemplo: Gestión de la programación de cursos en un Centro de Estudios. 9 se mantiene información sobre las distintas materias sobre las que se imparten cursos: código interno de la materia y descripción (Materia)
la clave ajena puede ser parcialmente nula
9se dispone de un registro de profesores: código interno del profesor, nombre y nivel de preparación para impartir distintas materias (Profesor, Oferta) 9se mantiene información sobre la programación de cursos realizada: código interno del curso, materia, profesor y fecha prevista (Cursos)
7
2.4 Restricciones de Integridad. Materia
2.4 Restricciones de Integridad. Materia
Profesor
cod_mat
des
cod_prof
nom bre
BDA
B ases de datos
p2
Je sú s P é re z
LIN U X
Linux
p3
L u is G a rc ía
WWW
W eb
p5
P e d ro S a n z
CP={cod_mat}
Profesor
cod_mat
des
cod_prof
nom bre
BDA
B ases de datos
p2
Je sú s P é re z
LIN U X
Linux
p3
L u is G a rc ía
WWW
W eb
p5
P e d ro S a n z
CP={cod_mat}
¿ satisface Cursos la restricción de clave ajena para {materia, profesor} ?
CP={cod_prof}
CP={cod_prof}
Cursos
Oferta
Oferta cod_mat
cod_prof
nivel
BDA
p2
1
WWW
p5
2
BDA
p3
4
Oferta satisface las restricciones de clave ajena para {cod_mat} y {cod_prof}
fecha
cod_prof
nivel
BDA
p2
1
1
BDA
p2
1/6/99
WWW
p5
2
2
LINUX
?
1/5/00
BDA
p3
4
4
WWW
?
15/2/00
3
?
?
15/3/01
CP={cod_mat, cod_prof}
CP={cod_mat, cod_prof}
curso materia profesor
cod_mat
CAj={cod_mat} → Materia
f(cod_mat=cod_mat
CAj={cod_mat} → Materia
CP= {curso}, VNN={fecha}
CAj={cod_prof} → Profesor
f(cod_pof=cod_prof
CAj={cod_prof} → Profesor
CAj= {materia, profesor} → Oferta
2.4 Restricciones de Integridad.
f(materia)=cod_mat, f(profesor)=cod_prof
2.4 Restricciones de Integridad. Materia
Tres tipos de Integridad Referencial: 9 I.R Débil 9 I.R Parcial 9 I.R Completa
satisface depende depende satisface
Profesor
cod_mat
des
cod_prof
nom bre
BDA
B ases de datos
p2
Je sú s P é re z
LIN U X
Linux
p3
L u is G a rc ía
WWW
W eb
p5
P e d ro S a n z
CP={cod_mat}
I.R Débil: Cursos satisface la restricción de clave ajena para {materia, profesor}
CP={cod_prof}
Cursos
Oferta cod_mat
cod_prof
nivel
BDA
p2
1
WWW
p5
2
BDA
p3
4
curso
materia profesor
fecha
1
B DA
p2
1/6/99
2
LINU X
?
1/5/00
4
WWW
?
15/2/00
3
?
?
15/3/01
CP={cod_mat, cod_prof}
CP= {curso}, VNN={fecha}
CAj={cod_mat} → Materia
CAj= {materia, profesor} → Oferta
CAj={cod_prof} → Profesor
f(materia)=cod_mat, f(profesor)=cod_prof
satisface satisface satisface satisface
CAj={materia} → Materia, f(materia)=cod_mat CAj={profesor} → Profesor, f(profesor)=cod_prof
8
2.4 Restricciones de Integridad.
Clave Ajena Si K contiene más de un atributo, R satisface la restricción de integridad referencial sobre CA si, según el tipo elegido, se cumple la propiedad que se especifica a continuación:
2.4 Restricciones de Integridad. Materia
Profesor
cod_mat
des
cod_prof
nom bre
BDA
B ases de datos
p2
Je sú s P é re z
LIN U X
Linux
p3
L u is G a rc ía
WWW
W eb
p5
P e d ro S a n z
CP={cod_mat}
•I. R. Débil: “para toda tupla de R se debe cumplir que si todos los atributos de K tienen un valor que no es el nulo, entonces debe existir una tupla en S que tome esos mismos valores en los correspondientes atributos de J” ∀ t ( t ∈ R → ( ∃ Ai (Ai ∈ K ∧ nulo(t.Ai)) ∨ ∃ m (m ∈ S ∧ ∀Ai ( Ai∈ K → t.Ai = m.f(Ai) )))) en caso contrario R viola esta restricción.
I.R. Parcial: Cursos viola la restricción de clave ajena para {materia, profesor}
CP={cod_prof}
Cursos
Oferta
curso materia profesor
fecha
cod_mat
cod_prof
nivel
BDA
p2
1
1
BDA
p2
1/6/99
WWW
p5
2
2
LINUX
?
1/5/00
BDA
p3
4
4
WWW
?
15/2/00
3
?
?
15/3/01
CP={cod_mat, cod_prof} CAj={cod_mat} → Materia
satisface viola satisface satisface
CP= {curso}, VNN={fecha}
CAj={cod_prof} → Profesor
CAj= {materia, profesor} → Oferta f(materia)=cod_mat, f(profesor)=cod_prof
2.4 Restricciones de Integridad.
Clave ajena Si K contiene más de un atributo, R satisface la restricción de integridad referencial sobre CA si, según el tipo elegido, se cumple la propiedad que se especifica a continuación:
2.4 Restricciones de Integridad. Materia
Profesor
cod_mat
des
cod_prof
nom bre
BDA
B ases de datos
p2
Je sú s P é re z
LIN U X
Linux
p3
L u is G a rc ía
WWW
W eb
p5
P e d ro S a n z
CP={cod_mat}
•I. R. Parcial: “para toda tupla de R se debe cumplir que si algún atributo de K no tiene valor nulo, entonces debe existir una tupla en S que tenga en los correspondientes atributos de J los mismos valores que los atributos de K que no tienen valor nulo” ∀ t ( t ∈ R → ( ∀Ai (Ai ∈ K → nulo(t(Ai))) ∨ ∃ m (m∈S ∧∀Ai ((Ai∈K ∧¬nulo(t(Ai)) )→t(Ai) = m(f(Ai))) ))))
en caso contrario R viola esta restricción.
I.R. Completa: Cursos viola la restricción de clave ajena para {materia, profesor}
CP={cod_prof}
Cursos
Oferta
curso materia profesor
fecha
cod_mat
cod_prof
nivel
BDA
p2
1
1
BDA
p2
1/6/99
WWW
p5
2
2
LINUX
?
1/5/00
BDA
p3
4
4
WWW
?
15/2/00
3
?
?
15/3/01
CP={cod_mat, cod_prof} CAj={cod_mat} → Materia
CP= {curso}, VNN={fecha}
CAj={cod_prof} → Profesor
CAj= {materia, profesor} → Oferta
satisface viola viola satisface
f(materia)=cod_mat, f(profesor)=cod_prof
9
2.4 Restricciones de Integridad.
Clave ajena
2.4 Restricciones de Integridad.
Clave Ajena con varios atributos.
Si K contiene más de un atributo, R satisface la restricción de integridad referencial sobre CA si, según el tipo elegido, se cumple la propiedad que se especifica a continuación:
•I. R. Completa: “para toda tupla de R se debe cumplir que o todos los atributos de K tienen valor nulo o ninguno tiene valor nulo y entonces debe existir una tupla en S que tenga en los correspondientes atributos de J los mismos valores que los atributos de K”.
los tres tipos de integridad referencial se diferencian en el tratamiento de las claves ajenas parcialmente nulas
∀ t ( t ∈ R → ( ∀Ai (Ai ∈ K → nulo(t(Ai))) ∨ ∃ m (m ∈ S ∧∀Ai (Ai ∈ K → (¬nulo(t(Ai)) ∧ t.Ai = m(f(Ai))) ) ))))
en caso contrario R viola esta restricción.
2.4 Restricciones de Integridad. Los tres tipos de Integridad Referencial permiten expresar distintas normas de funcionamiento de la organización: I.R Débil: permite programar cursos sin conocer temporalmente la materia o el profesor, y en estos casos no se hace ninguna comprobación sobre la oferta disponible. I.R Parcial: permite programar cursos sin conocer temporalmente la materia (resp. profesor), y en estos casos se hace una comprobación de la oferta disponible sobre la materia (resp. profesor).
2.4 Restricciones de Integridad.
Clave Ajena con varios atributos con restricción de valor no nulo.
coinciden los tres tipos de integridad referencial
I.R Completa: no permite programar cursos en los que se conoce sólo uno de los dos atributos (materia, profesor).
10
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad. Material
Ejemplo: Gestión de pedidos de material en una empresa constructora. 9 se mantiene información sobre los distintas materiales con los que se trabaja: código interno del material y descripción (Material) 9se dispone de un registro de provedores: código interno del proveedor, nombre y lista de precios a los que puede suministrar el material (Poveedor, Precios)
Proveedor
Proyecto
cod_mat
des
cod_prov
nombre
cod_proy
título
m1
viga
pv2
Cons SA
py2
IES Cid
m3
ladrillo
pv3
BBT
py6
La FE
m5
hormigón
pv4
Bertolin
CP={cod_mat}
CP={cod_proy}
CP={cod_prov}
Precios
Pedidos
cod_mat
cod_prov
precio
cod_mat
cod_prov
cod_proy
m1
pv3
1000
9se mantiene información sobre los proyectos en ejecución: código interno del proyecto y título (Proyecto)
m1
pv3
py2
96
m1
pv2
1500
m1
pv2
py6
100
m3
pv3
100
m3
pv3
py2
60
9se mantiene información sobre los pedidos realizados con destino a los distintos proyectos en ejecución: material pedido, proveedor, proyecto y cantidad (Pedidos)
m1
pv4
900
m1
pv4
py2
30
CP={cod_mat, cod_prov} CAj={cod_mat} → Material CAj={cod_prov} → Proveedor
2.4 Restricciones de Integridad. Material
Proveedor des
cod_prov
nombre
cod_proy
título
m1
viga
pv2
Cons SA
py2
m3
ladrillo
pv3
BBT
py6
m5
hormigón
pv4
Bertolin
cod_mat
cod_prov
precio
m1
pv3
1000
m1
pv2
1500
m3
pv3
100
m1
pv4
900
CP={cod_mat, cod_prov} CAj={cod_mat} → Material CAj={cod_prov} → Proveedor
CAj= {cod_mat, cod_prov} → Precios CAj={cod_proy} → Proyecto
Proyecto
Precios cod_mat
cod_prov
precio
cod_proy
título
IES Cid
m1
pv3
1000
py2
IES Cid
La FE
m1
pv2
1500
py6
La FE
m3
pv3
100
m1
pv4
900
CP={cod_proy}
CP={cod_prov}
Precios
CP= {cod_mat, cod_prov, cod_proy}
2.4 Restricciones de Integridad. Proyecto
cod_mat
CP={cod_mat}
cant
las claves ajenas {cod_mat}, y {cod_prov} están formadas por un único atributo (no pueden ser parcialmente nulas). Los tres tipos de I.R coinciden.
Precios satisface las restricciones de clave ajena para {cod_mat}, y {cod_prov} en cualquier tipo de I.R
Pedidos los atributos de la clave ajena {cod_mat, cod_prov} tienen restricción de valor NO NULO por formar parte de la CP (la clave ajena no puede ser parcialmente nula). Los tres tipos de integridad referencial coinciden.
cod_mat
cod_prov
cod_proy
m1
pv3
py2
cant
96
m1
pv2
py6
100
m3
pv3
py2
60
m1
pv4
py2
30
CP= {cod_mat, cod_prov, cod_proy} CAj= {cod_mat, cod_prov} → Precios CAj={cod_proy} → Proyecto
11
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad. Proyecto
Precios cod_mat
cod_prov
precio
cod_proy
título
m1
pv3
1000
py2
IES Cid
py6
La FE
m1
pv2
1500
m3
pv3
100
m1
pv4
900
I.R Débil
Pedidos cod_mat
Pedidos satisface la restricción de clave ajena para {cod_mat, cod_prov} en cualquier tipo de I.R
cod_prov
cod_proy
cant
m1
pv3
py2
96
m1
pv2
py6
100
m3
pv3
py2
60
m1
pv4
py2
30
I.R Completa
I.R Parcial
9la clave ajena tiene un único atributo 9todos los atributos de la clave ajena tienen restricción de valor no nulo
CP= {cod_mat, cod_prov, cod_proy} CAj= {cod_mat, cod_prov} → Precios CAj={cod_proy} → Proyecto
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad.
Violación de la Integridad Referencial.
Violación de la Integridad Referencial.
(Operaciones relevantes) Modificar J
S
R
J
Dadas dos relaciones R y S tal que R tiene una clave ajena CA que hace referencia a S, las operaciones que pueden violar la integridad referencial son: • Operaciones sobre R: – Insertar una tupla en R
Clave Ajena
– Modificar el valor de CA en una tupla de R • Operaciones sobre S: – Borrar una tupla de S
K Borrar en S
– Modificar el valor de J en una tupla de S
Modificar K Insertar en R
12
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad.
Mantenimiento de la Integridad Referencial.
Mantenimiento de la Integridad Referencial.
(Operaciones relevantes sobre R).
(Operaciones relevantes sobre S). Modificar J
S
R
S
J
J
Clave Ajena
Clave Ajena
R
K
K
Si la operación relevante sobre S viola la integridad referencia el SGBD tiene tres opciones:
Modificar K
Si la operación relevante sobre R viola la integridad referencia el SGBD rechaza la operación .
Insertar en R
2.4 Restricciones de Integridad.
Borrar en S
9rechazar la operación 9transmitir en cascada la operación 9poner a nulos CA en las tuplas afectadas de R
2.4 Restricciones de Integridad. Departamento
Mantenimiento de la Integridad Referencial
Empleado nro_emp
dni
nombre
teléfono
cod_dep
1
2045021
Juan C. Ródenas
7796
d1
2
1234567
Robert Capilla
?
d2
3
3567896
José V. Dualde
5760
d2
4
1432652
María Frasnedo
3560
d1
5
2045333
Cristina Guillot
7439
d3
cod_dep
nombre
d1
Ventas
d2
Compras
d3
Contabilidad
BORRADO en CASCADA
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom, teléfono:dom_tel, cod_dep: dom_dep)
Departamento
Mantenimiento de la Integridad Referencial
cod_dep
Empleado nro_emp
dni
nombre
teléfono
cod_dep
1
2045021
Juan C. Ródenas
7796
d1
2
1234567
Robert Capilla
?
d2
3
3567896
José V. Dualde
5760
d2
4
1432652
María Frasnedo
3560
d1
5
2045333
Cristina Guillot
7439
d3
nombre
d1
Ventas
d2
Compras
d3
Contabilidad
? BORRADO a NULOS ?
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom, teléfono:dom_tel, cod_dep: dom_dep)
CP={nro_emp}, VNN={nombre}, UNI={dni}
CP={nro_emp}, VNN={nombre}, UNI={dni}
CAj={cod_dep} →Departamento, f(cod_dep)=cod_dep BORRADO en CASCADA
CAj={cod_dep} →Departamento, f(cod_dep)=cod_dep, BORRADO a NULOS
13
2.4 Restricciones de Integridad.
2.4 Restricciones de Integridad. Departamento
Mantenimiento de la Integridad Referencial
cod_dep
nombre
d1 d8
Ventas
Empleado
d2
Compras
d3
Contabilidad
Departamento
Mantenimiento de la Integridad Referencial
cod_dep d1 d8
Empleado
nro_emp
dni
nombre
teléfono
cod_dep
nro_emp
dni
nombre
teléfono
1
2045021
Juan C. Ródenas
7796
d1
1
2045021
Juan C. Ródenas
7796
2
1234567
Robert Capilla
?
d2
2
1234567
Robert Capilla
?
3
3567896
José V. Dualde
5760
d2
3
3567896
José V. Dualde
5760
d2
4
1432652
María Frasnedo
3560
d1
4
1432652
María Frasnedo
3560
d1 d8
5
2045333
Cristina Guillot
7439
d3
5
2045333
Cristina Guillot
7439
d3
? Modificación a NULOS ?
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom,
nombre Ventas
d2
Compras
d3
Contabilidad
cod_dep d1 d8 d2
Modificación en CASCADA
Empleado (nro_emp: dom_emp, dni: dom_dni, nombre:dom_nom,
teléfono:dom_tel, cod_dep: dom_dep)
teléfono:dom_tel, cod_dep: dom_dep)
CP={nro_emp}, VNN={nombre}, UNI={dni}
CP={nro_emp}, VNN={nombre}, UNI={dni}
CAj={cod_dep} →Departamento, f(cod_dep)=cod_dep, Modificación a NULOS
CAj={cod_dep} →Departamento, f(cod_dep)=cod_dep, Modificación en CASCADA
2.4 Restricciones de Integridad.
2.4 Otras Restricciones de Integridad.
Mantenimiento de la Integridad Referencial.
Restricciones de integridad generales son
(Operaciones relevantes sobre S). Modificar J
R
S
– Restricciones de integridad (CREATE ASSERTION ...).
Clave Ajena
J
K
Modificar J en S Borrar en S
a Nulos en CASCADA [restrictivo]
aquéllas que no se pueden expresar con las propiedades anteriores. Estas pueden ser:
Borrar en S
estáticas
– Restricciones de integridad de transición (Disparadores). Para la definición de estas propiedades se puede emplear un lenguaje de tipo lógico: ∀DX:Departamento (∃EX:Empleado(DX.cod_dep = EX.dep))
14
2.4 Otras Restricciones de Integridad.
2.4 Resumen
Para que una base de datos sea válida, se
La definición de una relación se puede
han de cumplir todas las restricciones de integridad que ésta tenga definidas.
La
comprobación de las restricciones generales y todos los otros tipos de restricción (valor no nulo, unicidad, restricción de dominio, ...) es competencia del SGBD que debe asegurar que toda actualización de la base de datos genera una nueva extensión que satisface todas las restricciones.
enriquecer con restricciones:
las
siguientes
• VNN: restricción de valor no nulo, • Uni: restricción de unicidad, • CP: clave primaria, • CAj: clave ajena (incluyendo directriz de comportamiento), • Restricciones de integridad generales.
2.4 Resumen
EJEMPLO: (Esquema relacional genérico) » S(B1:E1, B2:E2,…, Bt:Et) CP: {Bj,…, Bn} Uni: {Bq,…, Br} VNN: {Bs,…, Bt} » R(A1:D1, A2:D2,…, Ar:Dr) CP: {Ai,…, Am} CAj: {Ao,…, Ap} → S f: Ao → Bj … Ap → Bn borrado en cascada modificación a nulo » Restricciones de integridad generales.
15