Capi Tulo 02 - Modelo Entidad-relacio n

Post on 31-Jan-2016

223 views 0 download

description

bases de datos

Transcript of Capi Tulo 02 - Modelo Entidad-relacio n

Fundamentos de Bases de datos, 5ª Edición.©Silberschatz, Korth y Sudarshan

Consulte www.db-book.com sobre condiciones de uso

Capítulo 2: Modelo entidad-relación

2.2 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Capítulo 2: Modelo entidad-relación

Estructura de bases de datos relacionales Operaciones fundamentales del álgebra relacional Otras operaciones del álgebra relacional Operaciones del álgebra relacional extendida Valores nulos Modificación de la base de datos

2.3 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Ejemplo de una relación

2.4 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Estructura básica

Formalmente, dados los conjuntos D1, D2, …. Dn una relación r es un subconjunto de

D1 x D2 x … x Dn

Así, una relación es un conjunto de n-tuplas (v1, v2, …, vn) donde cada

vi ∈ Di

Ejemplo: Sinombre_cliente = {Gómez, López, Santos, Pérez}calle_cliente = {Arenal, Mayor, Goya}ciudad_cliente = {León, Cerceda, Vigo}

Entonces r = { (Gómez, Arenal, León), (López, Goya, León),(Santos, Arenal, Vigo),(Pérez, Mayor, Vigo) }

es una relación sobre

nombre_cliente x calle_cliente x ciudad_cliente

2.5 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Atributos

Cada atributo de una relación tiene un nombre El conjunto de valores permitidos para cada atributo se denomina

dominio del atributo Se requiere (normalmente) que los valores de los atributos sean

atómicos; esto es , indivisibles Nota: los valores de los atributos multivalorados son no atómicos Nota: los valores de los atributos compuestos son no atómicos

El valor especial null es miembro de todos los dominios El valor null crea complicaciones en la definición de algunas

operaciones Ignoraremos el efecto de los valores null en una primera

presentación y consideraremos sus efectos con posterioridad

2.6 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Esquema de la relación

A1, A2, …, An son atributos

R = (A1, A2, …, An ) es un esquema de la relación

Ejemplo:

Esquema_cliente = (nombre_cliente, calle_cliente, ciudad_cliente)

r(R) es una relación en el esquema de la relación REjemplo:cliente (Esquema_cliente)

2.7 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Instancia de relación

Los valores actuales (instancia de relación) de una relación se especifican en una tabla

Un elemento t de r es una tupla, representada por una fila en una tabla

AbrilAmoBadorreyFernández

nombre_cliente

PreciadosEmbajadoresDeliciasJazmín

calle_cliente

ValsaínArganzuelaValsaínLeón

ciudad_cliente

cliente

atributos(o columnas)

tuplas(o filas)

2.8 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Las relaciones no son ordenadas

El orden de la tuplas es irrelevante (las tuplas se pueden guardar con un orden arbitrario) Ejemplo: la relación cuenta con las tuplas desordenadas

2.9 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Base de datos

Una base de datos consta de múltiples relaciones

La información sobre una empresa se divide en partes, en la que cada relación almacena una parte de la información

cuenta : almacena la información de cuentasimpositor : almacena información de los clientes con sus cuentas cliente : almacena información sobre las cuentas

Almacena toda la información como una única relación tal como banco(númro_cuenta, saldo, nombre_cliente, …)

resultando

Repetición de información (ej., dos clientes comparten una cuenta)

Necesidad de valores null (ej., representar un cliente sin ninguna cuenta)

La teoría de normalización (Capítulo 7) trata de cómo diseñar esquemas de relación

2.10 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

La relación cliente

2.11 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

La relación impositor

2.12 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Claves

Sea K ⊆ R K es una superclave de R si los valores de K son suficientes para

identificar una tupla única de entre todas de la relación r(R) Por las “posibles r ” quiere decir una relación r que pudiera existir en

la empresa que se está modelando.

Ejemplo: {nombre_cliente, calle_cliente} y{nombre_cliente}

son ambas superclaves de Cliete, si no hubiese dos posibles clientes que pudiesen tener el mismo nombre.

K es una clave candidata si K es minimalEjemplo: {nombre_cliente} es una clave candidata para Cliente, ya que es una superclave (suponiendo que no pueda haber dos clientes con el mismo nombre), y ningún subconjunto de ella es una superclave.

Clave primaria

2.13 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Lenguajes de consulta

Lenguaje en el que un usuario solicita información de la base de datos Categorías de los lenguajes

Procedimental No procedimental, o declarativo

Lenguajes “puros”: Álgebra relacional Cálculo relacional de tuplas Cálculo relacional de dominios

Los lenguajes puros son la base de los lenguajes de consulta que utilizan los usuarios.

2.14 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Algebra relacional

Lenguaje procedimental Seis operadores básicos

selección: σ proyección: ∏ unión: ∪ diferencia de conjuntos: – producto cartesiano: x

renombramiento: ρ Los operadores tienen como operandos una o dos relaciones y

producen como resultado una nueva relación.

2.15 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación selección – Ejemplo

Relación rA B C D

α

α

β

β

α

β

β

β

1

5

12

23

7

7

3

10

σA=B ^ D > 5 (r)A B C D

α

β

α

β

1

23

7

10

2.16 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación selección Notación: σ p(r) p se denomina predicado de selección Se define como:

σp(r) = {t | t ∈ r and p(t)}

Donde p es una fórmula del cálculo proposicional que consta de términos conectados por : ∧ (and), ∨ (or), ¬ (not)Cada término puede ser uno de :

<atributo> op <atributo> o <constante>donde op es una de las siguientes: =, ≠, >, ≥. <. ≤

Ejemplo de selección:

σ nombre_sucursal=“Navacerrada”(cuenta)

2.17 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación proyección – Ejemplo

Relación r: A B C

α

α

β

β

10

20

30

40

1

1

1

2

A C

α

α

β

β

1

1

1

2

=

A C

α

β

β

1

1

2

∏A,C (r)

2.18 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación proyección

Notación:

donde A1, A2 son nombres de atributos y r es un nombre de relación.

El resultado se define como una relación de k columnas que se obtiene eliminando las columnas que no están en la lista.

Las filas duplicadas se eliminan del resultado, ya que las relaciones son cunjuntos

Ejemplo: Para eliminar el atributo nombre_sucursal de cuenta

∏número_cuenta, saldo (cuenta)

)( ,,, 21r

kAAA ∏

2.19 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación unión – Ejemplo

Relaciones r, s:

r ∪ s:

A B

α

α

β

1

2

1

A B

α

β

2

3

rs

A B

α

α

β

β

1

2

1

3

2.20 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación unión

Notación: r ∪ s Se define como:

r ∪ s = {t | t ∈ r or t ∈ s} Para todo r ∪ s válido.

1. r, s deben tener la misma cardinalidad (mismo número de atributos)2. Los dominios de los atributos deben ser compatibles (ejemplo: 2ª columna de r trata el mismo tipo de valores que la 2ª columna de s)

Ejemplo: para buscar a todos los clientes con una cuenta o un préstamo

∏nombre_cliente (impositor) ∪ ∏nombre_cliente (prestatario)

2.21 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación diferencia de conjuntos – Ejemplo

Relaciones r, s:

r – s:

A B

α

α

β

1

2

1

A B

α

β

2

3

rs

A B

α

β

1

1

2.22 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación diferencia de conjuntos

Notación r – s Definido como:

r – s = {t | t ∈ r y t ∉ s} Las diferencias de conjuntos deben realizarse entre relaciones

compatibles. r y s deben tener la misma cardinalidad los dominios de los atributos de r y s deben ser compatibles

2.23 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación producto cartesiano - Ejemplo

Relaciones r, s:

r x s:

A B

α

β

1

2

A B

ααααββββ

11112222

C D

αββγαββγ

1010201010102010

E

aabbaabb

C D

αββγ

10102010

E

aabbr

s

2.24 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación producto cartesiano

Notación r x s Definido como:

r x s = {t q | t ∈ r y q ∈ s} Supone que los atributos de r(R) y s(S) son disjuntos. (Es decir,

R ∩ S = ∅). Si los atributos de r(R) y s(S) no son disjuntos, se debe utilizar el

renombramiento.

2.25 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Composición de operaciones Permite obtener expresiones que utilizan operaciones múltiples Ejemplo: σA=C(r x s) r x s

σA=C(r x s)

A B

ααααββββ

11112222

C D

αββγαββγ

1010201010102010

E

aabbaabb

A B C D E

αββ

122

αββ

101020

aab

2.26 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación renombramiento

Nos permite nombrar y por lo tanto referirnos a los resultados de expresiones de álgebra relacional.

Nos permite referirnos a una relación por más de un nombre.Ejemplo:

ρ x (E)devuelve la expresión E bajo el nombre XSi una expresión de álgebra relacional E tiene cardinalidad n, entonces

ρx (A1, A2, …, An) (E)devuelve el resultado de la expresión E bajo el nombre X, y con los atributos renombrados como A1, A2, …., An.

2.27 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Ejemplo de bancosucursal (nombre_sucursal, ciudad_sucursal, activos)

cliente (nombre_cliente, calle_cliente, solo_cliente)

cuenta (número_cuenta, nombre_sucursal, saldo)

préstamo (número_préstamo, nombre_sucursal, importe)

impositor (nombre_cliente, número_cuenta)

prestatario (nombre_cliente, número_préstamo)

2.28 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Consultas de ejemplo

Buscar todos los préstamos superiores a 1200€σimporte > 1200 (préstamo)

Averiguar el número de préstamo para cada préstamo de más de 1200€∏número-préstamo (σcantidad > 1200 (préstamo))

2.29 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Consultas de ejemplo

Averiguar los nombres de todos los clientes que tienen un préstamo, una cuenta o ambos, en el banco

∏nombre-cliente (prestatario) ∪ ∏nombre-cliente (impositor) Averiguar los nombres de todos los clientes que tienen un préstamo y

una cuenta en el banco.∏nombre-cliente (prestatario) ∩ ∏nombre-cliente (impositor)

2.30 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Consultas de ejemplo

Averiguar los nombres de todos los clientes que tienen un préstamo en la sucursal de Navacerrada.

∏nombre-cliente (σnombre-sucursal=“Navacerrada”

(σprestatario.número-préstamo = préstamo.número-préstamo(prestatario x préstamo))) Averiguar los nombres de todos los clientes que tienen un préstamo en la

sucursal de Navacerrada pero no tienen cuenta en ninguna sucursal del banco.

∏nombre-cliente (σnombre-sucursal = “Navacerrada”

(σprestatario.número-préstamo = préstamo.número-préstamo(prestatario x préstamo)))– ∏nombre-cliente(impositor)

2.31 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Consultas de ejemplo

Averiguar los nombres de todos los clientes que tienen un préstamo en la sucursal de Navacerrada.

− Consulta 1

∏nombre-cliente(σnombre-sucursal = “Navacerrada”

(σprestatario.número-préstamo = préstamo.número-préstamo(prestatario x préstamo)))

− Consulta 2∏nombre-cliente(σpréstamo.número-préstamo = prestatario.número-préstamo(

(σnombre-sucursal = “Navacerrada”(préstamo)) x prestatario))

2.32 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Consultas de ejemplo Averiguar la cuenta con el mayor saldo

Estrategia: Averiguar los saldo que no son los mayores

– Renombrar la relación cuenta como d para poder comparar cada saldo de cuenta con el resto

Utilizar una diferencia de conjuntos para averiguar aquellos saldos de cuenta que no se hayan encontrado en los pasos anteriores

La cosulta es:

∏saldo(cuenta) - ∏saldo.cuenta

(σsaldo.cuenta < d.saldo (cuenta x ρd (cuenta)))

2.33 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Definición formal

Una expresión básica en el álgebra relacional se compone de una de las siguientes: Una relación en la base de datos Una relación constante

Sean E1 y E2 expresiones de álgebra relacional. Todas las siguientes son expresiones del álgebra relacional:

E1 ∪ E2

E1 - E2

E1 x E2

σp (E1), P es un predicado de atributos de E1 ∏s(E1), S es una lista que se compone de alguno de los atributos

de E1

ρ x (E1), x es el nuevo nombre del resultado de E1

2.34 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operaciones adicionales

Definimos operaciones adicionales que no añaden potencia alálgebra relacional, pero que simplifican las consultas habituales.

Intersección de conjuntos

Reunión natural División Asignación

2.35 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación intersección de conjuntos

Notación: r ∩ s Definido como:

r ∩ s ={ t | t ∈ r y t ∈ s } Suponiendo:

r, s tienen la misma cardinalidad los atributos de r y s son compatibles

Nota: r ∩ s = r - (r - s)

2.36 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación intersección de conjuntos - Ejemplo

Relación r, s:

r ∩ s

A B

ααβ

121

A B

αβ

23

r s

A B

α 2

2.37 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Notación: r s

Operación reunión natural

Sean r y s relaciones de los esquemas R y S respectivamente. Entonces r s es una relación en el esquema R ∪ S que se obtiene de la siguiente forma: Considerando cada par de tuplas tr de r y ts de s. Si tr y ts tienen el mismo valor en cada uno de los atributos de R ∩ S, se

añade una tupla t al resultado, donde t tiene el mismo valor que tr en r t tiene el mismo valor que ts en s

Ejemplo:R = (A, B, C, D)S = (E, B, D)

Esquema resultante = (A, B, C, D, E) r s se define como:

∏r.A, r.B, r.C, r.D, s.E (σr.B = s.B r.D = s.D (r x s))

2.38 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación reunión natural – Ejemplo

Relaciones r, s:

A B

αβγαδ

12412

C D

αγβγβ

aabab

B

13123

D

aaabb

E

αβγδ∈

r

A B

ααααδ

11112

C D

ααγγβ

aaaab

E

αγαγδ

s

r s

2.39 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación división

Notación: Pensada para las consultas que incluyen la frase “para todos”. Sean r y s relaciones de los esquemas R y S

respectivamente, donde R = (A1, …, Am, B1, …, Bn) S = (B1, …, Bn)El resultado de r ÷ s es una relación del esquemaR – S = (A1, …, Am)

r ÷ s = { t | t ∈ ∏ R-S(r) ∧ ∀ u ∈ s ( tu ∈ r ) } donde tu significa la concatenación de las tuplas t y u lo que

genera una única tupla

r ÷ s

2.40 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación división – Ejemplo

Relaciones r, s:

r ÷ s: A

B

α

β

1

2

A B

αααβγδδδ∈∈β

12311134612

r

s

2.41 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Otro ejemplo de división

A B

αααββγγγ

aaaaaaaa

C D

αγγγγγγβ

aabababb

E

11113111

Relaciones r, s:

r ÷ s:

D

ab

E

11

A B

αγ

aa

C

γγ

r

s

2.42 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación división (cont.)

Propiedad Sea q – r ÷ s Entonces q es la mayor relación que cumple q x s ⊆ r

Definición en términos de operación de álgebra básicaSean r(R) y s(S) relaciones, y sea S ⊆ R

r ÷ s = ∏R-S (r) –∏R-S ( (∏R-S (r) x s) – ∏R-S,S(r))

Para ver por qué ∏R-S,S(r) simplemente reordena atributos de r

∏R-S(∏R-S (r) x s) – ∏R-S,S(r)) da aquellas tuplas t en

∏R-S (r) tales que para una tupla u ∈ s, tu ∉ r.

2.43 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación asignación

La operación asignación (←) proporciona una forma conveniente de expresar consultas complejas Escribir una consulta como un programa secuencial compuesto de

una series de asignaciones seguidas por una expresión cuyo valor se muestra como

resultado de la consulta.

La asignación siempre debe realizarse a una variable de relación temporal.

Ejemplo: Escribir r ÷ s como temp1 ← ∏R-S (r)temp2 ← ∏R-S ((temp1 x s) – ∏R-S,S (r))result = temp1 – temp2

El resultado a la derecha de ← se asigna a la variable de relación situada a la izquierda de ←.

Esta variable puede utilizarse en expresiones posteriores.

2.44 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Consultas de ejemplo del banco

Averiguar los nombres de todos los clientes que tienen un préstamo y una cuenta en el banco.

∏nombre_cliente (prestatario) ∩ ∏nombre_cliente(impositor)

Averiguar el nombre de todos los clientes que tienen una cuenta en el banco y averiguar su importe

∏nombre_cliente, número_préstamo, importe (prestatario préstamo)

2.45 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Consultas de ejemplo del banco

Averiguar todos los clientes que tengan una cuenta al menos en las sucursales “Centro” y “Periferia”. Consulta 1

∏nombre-cliente (σnombre-sucursal = “Centro” (impositor cuenta)) ∩∏nombre-cliente (σnombre-sucursal = “Periferia” (impositor cuenta))

Consulta 2∏ nombre-cliente, nombre-sucursal (impositor cuenta)

÷ ρtemp(nombre-sucursal ) ({(“Centro” ), (“Periferia” )})Fíjese que la Consulta 2 utiliza una relación constante.

2.46 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Averiguar todos los clientes que tengan una cuenta en todas las sucursales localizadas en la ciudad de Barcelona.

∏nombre-cliente, nombre-sucursal (impositor cuenta)÷ ∏nombre-sucursal (σciudad-sucursal = “Barcelona” (sucursal))

Consultas de ejemplo del banco

2.47 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operaciones de álgebra relacional extendida

Proyección generalizada Funciones de agregación Reunión externa

2.48 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Proyección generalizada

Extiende la operación de proyección al permitir que las funciones aritméticas se utilicen en la lista de proyección.

∏ F1, F2, …, Fn(E) E es cualquier expresión de álgebra relacional F1, F2, …, Fn son expresiones aritméticas que implican constantes y

atributos en el esquema de E. Dada la relación información-crédito(nombre-cliente, límite, saldo-

crédito), averiguar cuánto más puede gastar cada persona: ∏nombre-cliente, límite – saldo-crédito (información-crédito)

2.49 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Funciones de agregación y operaciones La función de agregación toma una colección de valores y devuelve

como resultado un valor simple.avg: valor mediomin: valor mínimomax: valor máximosum: suma de valorescount: número de valores

La operación de agregación en el álgebra relacional

E es cualquier expresión de álgebra relacional G1, G2 …, Gn es una lista de atributos sobre los que se agrupa

(puede estar vacía) Cada Fi es una función agregada Cada Ai es un nombre de atributo

)()(,,(),(,,, 221121E

nnn AFAFAFGGG ϑ

2.50 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación de agregación – Ejemplo

Relación r:

A B

ααββ

αβββ

C

773

10

g sum(c) (r) sum(c )

27

2.51 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Operación de agregación – Ejemplo

Relación cuenta agrupada por nombre-sucursal:

nombre-sucursal g sum(saldo) (cuenta)

nombre-sucursal número-cuenta saldo

NavacerradaNavacerradaBarcelonaBarcelonaReus

A-102A-201A-217A-215A-222

400900750750700

saldoNavacerradaBarcelonaReus

13001500700

nombre-sucursal

2.52 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Funciones de agregación (cont.)

El resultado de la agregación no tiene nombre Puede utilizarse la operación renombrar para darle un nombre Por conveniencia, permitimos renombrarlo como parte de la

operación de agregación

nombre-sucursal g sum(saldo) as suma-saldo (cuenta)

2.53 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Reunión externa

Una extensión de la operación de reunión que evita la pérdida de información.

Calcula la reunión y añade las tuplas de una relación que no coinciden con las de la otra relación al resultado de la reunión.

Utiliza valores null: null significa que el valor es desconocido o no existe Todas las comparaciones que implican nulos son, generalmente

hablando, falsas por definición. Estudiaremos los significados concretos de las comparaciones

con nulos más adelante

2.54 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Reunión externa – Ejemplo

Relación préstamo

Relación prestatario

número-préstamo importeL-170L-230L-260

300040001700

nombre-sucursalCentroReusNavacerrada

nombre-clienteGómezPérezSantos

L-170L-230L-155

número-préstamo

2.55 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Reunión externa – Ejemplo

Reunión interna

préstamo prestatario

préstamo prestatario Reunión externa por la izquierda

número-préstamo importe

L-170L-230

30004000

nombre-cliente

GómezPérez

nombre-sucursal

CentroReus

número-préstamo importeL-170L-230L-260

300040001700

nombre-clienteGómezPéreznull

nombre-sucursalCentroReusNavacerrada

2.56 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Reunión externa – Ejemplo

Reunión externa por la derechapréstamo prestatario

préstamo prestatario Reunión externa completa

número-préstamo importeL-170L-230L-155

30004000null

nombre-clienteGómezPérezSantos

nombre-sucursalCentroReusnull

número-préstamo importe

L-170L-230L-260L-155

300040001700null

nombre-cliente

GómezPéreznullSantos

nombre-sucursal

CentroReusNavacerradanull

2.57 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Valores nulos

Es posible que las tuplas tengan valores nulos para algunos de sus atributos, denotados como null

null significa valores desconocidos o no existentes. El resultado de una expresión aritmética que contenga un null es null. Las funciones de agregación simplemente ignoran los valores nulos Para eliminar duplicados y hacer grupos, los nulos se tratan como

cualquier otro valor. Se supone que los valores representados por los nulos son los mismos

2.58 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Valores nulos

Las comparaciones con valores nulos devuelven el valor especial cierto desconocido Si se utilizó falso en lugar de desconocido, entonces no (A < 5)

no sería equivalente a A >= 5 Tres valores lógicos utilizando el valor cierto desconocido:

O: (desconocido o cierto) = cierto, (desconocido o falso) = desconocido(desconocido o desconocido) = desconocido

Y: (cierto y desconocido) = desconocido, (falso y desconocido) = falso,(desconocido y desconocido) = desconocido

NO: (no desconocido) = desconocido En SQL “P es desconocido” se evalúa como cierto si el

predicado P se evalúa como desconocido El resultado de la selección de predicado se trata como falso si el

predicado se evalúa como desconocido

2.59 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Modificación de la base de datos

El contenido de la base de datos puede ser modificado utilizando las siguientes operaciones: Borrado Inserción Actualización

Todas estas operaciones se expresan utilizando la operación de asignación.

2.60 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Borrado

Una petición de borrado se expresa de forma similar a una consulta, salvo que en lugar de mostrar las tuplas al usuario, el borrado elimina las tuplas seleccionadas de la base de datos.

Solo se pueden borrar tuplas completas, no se pueden borrar valores solo en determinados atributos

Un borrado se expresa en álgebra relacional como:r ← r – E

donde r es una relación y E es una consulta de álgebra relacional.

2.61 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Ejemplos de borrado

Borrar todos los registros de cuentas en la sucursal de Navacerrada.cuenta ← cuenta – σ nombre-sucursal = “Navacerrada” (cuenta)

Borrar todos los registros de préstamos con cantidades entre 0 y 50préstamo ← préstamo – σ cantidad ≥ 0 y cantidad ≤ 50 (préstamo)

Borrar todas las cuentas en las sucursales situadas en Getafe.r1 ← σ ciudad-sucursal = “Getafe” (cuenta sucursal)r2 ← ∏nombre-sucursal, número-cuenta, saldo (r1)r3 ← ∏ nombre-cliente, número-cuenta (r2 impositor)cuenta ← cuenta – r2impositor ← impositor – r3

2.62 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Inserción

Para insertar datos en una relación, podemos: Especificar una tupla para insertar Escribir una consulta cuyo resultado sea un conjunto de tuplas para

insertar En álgebra relacional, una inserción se expresa como:

r ← r ∪ Edonde r es una relación y E es una expresión de álgebra relacional.

La inserción de una tupla simple se expresa tomando E como una relación constante que contiene una tupla.

2.63 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

r1 ← (σnombre-sucursal = “Navacerrada” (prestatario préstamo))cuenta ← cuenta ∪ ∏nombre-sucursal, número-cuenta,200 (r1)impositor ← impositor ∪ ∏nombre-cliente, número-préstamo, (r1)

Ejemplos de inserción

Insertar información en la base de datos especificando que Pérez tiene 1200€ en la cuenta C-973 de la sucursal de Navacerrada.

cuenta ← cuenta ∪ {(“Navacerrada”, C-973, 1200)}impositor ← impositor ∪ {(“Pérez”, C-973)}

Ofrecer una cuenta de ahorro de 200€ como regalo a todos los clientes con préstamos en la sucursal de Navacerrada. Sea el número de préstamo el utilizado como número de la nueva cuenta de ahorro.

2.64 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Actualización

Un mecanismo para cambiar un valor en una tupla sin cambiar todoslos valores de la tupla

Utilizar la operación de proyección generalizada para realizar esta tarear ← ∏ F1, F2, …, FI, (r)

Cada F, es o el iesimo atributo de r, si el iesimo atributo no está actualizado, o si el atributo tiene que ser actualizado Fi es una expresión que

contiene solo constantes y los atributos de r, que da el nuevo valor para el atributo

2.65 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Ejemplos de actualización

Realizar pagos de intereses aumentando todos los saldos un 5 por ciento.

Pagar a todas las cuentas con saldos por encima de 10,000€un 6 por ciento de interés y un 5 por ciento a todas las demás cuentas

cuenta ← ∏ número_cuenta, nombre_sucursal, saldo * 1.06 (σ SAL > 10000 (cuenta))∪ ∏ número_cuenta, nombre_sucursal, saldo * 1.05 (σSAL ≤ 10000 (cuenta))

cuenta ← ∏ número_cuenta, nombre_sucursal, saldo * 1.05 (cuenta)

Fundamentos de Bases de datos, 5ª Edición.©Silberschatz, Korth y Sudarshan

Consulte www.db-book.com sobre condiciones de uso

Fin del capítulo 2

2.67 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.3. La relación sucursal

2.68 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.6: La relación préstamo

2.69 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.7: La relación prestatario

2.70 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.8: Diagrama de esquema

2.71 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.9Resultado de

σnombre_sucursal = “Navacerrada” (préstamo)

2.72 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.10: Número e importe de los préstamos

2.73 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.11: Nombre de todos los clientes que tienen un préstamo o una

cuenta

2.74 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.12: Clientes con una cuenta pero sin

préstamo

2.75 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.13:Resultado de prestatario |X| préstamo

2.76 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.14

2.77 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.15

2.78 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.16

2.79 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.17Mayor saldo de las cuentas del banco

2.80 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.18: Clientes que viven en la misma ciudad y calle que Gómez

2.81 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.19: Clientes con una cuenta y un préstamo en el banco

2.82 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.20

2.83 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.21

2.84 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.22

2.85 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.23

2.86 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.24: La relación información_crédito

2.87 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.25

2.88 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.26: La relación trabajo_por_horas

2.89 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.27Relación trabajo_por_horas tras

agrupación

2.90 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.28

2.91 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.29

2.92 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.30Relaciones empleado y

trabajo_a_tiempo_completo

2.93 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.31

2.94 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.32

2.95 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.33

2.96 ©Silberschatz, Korth y SudarshanFundamentos de Bases de Datos – 5ª Edición, 2005

Figura 2.34