Capi Tulo 02 - Modelo Entidad-relacio n

96
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

description

bases de datos

Transcript of Capi Tulo 02 - Modelo Entidad-relacio n

Page 1: 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

Page 2: Capi Tulo 02 - Modelo Entidad-relacio 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

Page 3: Capi Tulo 02 - Modelo Entidad-relacio n

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

Ejemplo de una relación

Page 4: Capi Tulo 02 - Modelo Entidad-relacio 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

Page 5: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 6: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 7: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 8: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 9: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 10: Capi Tulo 02 - Modelo Entidad-relacio n

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

La relación cliente

Page 11: Capi Tulo 02 - Modelo Entidad-relacio n

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

La relación impositor

Page 12: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 13: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 14: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 15: Capi Tulo 02 - Modelo Entidad-relacio 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

Page 16: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 17: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 18: Capi Tulo 02 - Modelo Entidad-relacio n

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 ∏

Page 19: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 20: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 21: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 22: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 23: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 24: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 25: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 26: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 27: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 28: Capi Tulo 02 - Modelo Entidad-relacio n

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))

Page 29: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 30: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 31: Capi Tulo 02 - Modelo Entidad-relacio n

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))

Page 32: Capi Tulo 02 - Modelo Entidad-relacio n

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)))

Page 33: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 34: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 35: Capi Tulo 02 - Modelo Entidad-relacio 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)

Page 36: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 37: Capi Tulo 02 - Modelo Entidad-relacio n

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))

Page 38: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 39: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 40: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 41: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 42: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 43: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 44: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 45: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 46: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 47: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 48: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 49: Capi Tulo 02 - Modelo Entidad-relacio n

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 ϑ

Page 50: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 51: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 52: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 53: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 54: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 55: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 56: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 57: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 58: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 59: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 60: Capi Tulo 02 - Modelo Entidad-relacio 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.

Page 61: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 62: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 63: Capi Tulo 02 - Modelo Entidad-relacio n

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.

Page 64: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 65: Capi Tulo 02 - Modelo Entidad-relacio n

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)

Page 66: 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

Fin del capítulo 2

Page 67: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.3. La relación sucursal

Page 68: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.6: La relación préstamo

Page 69: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.7: La relación prestatario

Page 70: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.8: Diagrama de esquema

Page 71: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.9Resultado de

σnombre_sucursal = “Navacerrada” (préstamo)

Page 72: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 73: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 74: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 75: Capi Tulo 02 - Modelo Entidad-relacio n

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

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

Page 76: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.14

Page 77: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.15

Page 78: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.16

Page 79: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.17Mayor saldo de las cuentas del banco

Page 80: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 81: Capi Tulo 02 - Modelo Entidad-relacio n

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

Page 82: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.20

Page 83: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.21

Page 84: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.22

Page 85: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.23

Page 86: Capi Tulo 02 - Modelo Entidad-relacio n

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

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

Page 87: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.25

Page 88: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.26: La relación trabajo_por_horas

Page 89: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.27Relación trabajo_por_horas tras

agrupación

Page 90: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.28

Page 91: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.29

Page 92: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.30Relaciones empleado y

trabajo_a_tiempo_completo

Page 93: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.31

Page 94: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.32

Page 95: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.33

Page 96: Capi Tulo 02 - Modelo Entidad-relacio n

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

Figura 2.34