Tema II: El modelo relacional de datos. (2.4)

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 Int

1 downloads 114 Views 710KB Size

Recommend Stories


Tema II: El modelo relacional de datos. (2.2)
Tema II: El modelo relacional de datos. (2.2) El modelo relacional de datos. Objetivos: 9 conocer las estructuras de datos del modelo: la tupla y la

Tema II: El modelo relacional de datos. (2.4)
Tema II: El modelo relacional de datos. (2.4) El modelo relacional de datos. Objetivos: 9 conocer las estructuras de datos del modelo: la tupla y la

TEMA 4: MODELO RELACIONAL
Modelo Relacional TEMA 4: MODELO RELACIONAL 4.1 Introducción Los modelos Entidad-Relación y Relacional son representaciones abstractas de porciones d

TEMA 24: El modelo OSI de comunicación de datos
Tema 24 – El modelo OSI de comunicación de datos TEMA 24: El modelo OSI de comunicación de datos. Índice 1 INTRODUCCIÓN______________________________

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

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.