tema 3: el modelo relacional - universidade de...

49
Bases de datos 1 Tema 3: El Modelo Relacional Tema 3: El Modelo Relacional Estructura de bases de datos relacionales Conversión de diseños E-A a relaciones Integridad de dominio y referencial Álgebra relacional Operaciones del álgebra relacional extendida Modificaciones de la base de datos Vistas Cálculo relacional de tuplas Cálculo relacional de dominios Bases de datos 2 Ejemplo de una relación Ejemplo de una relación 500 400 900 700 750 700 350 Vigo Pontevedra Ourense Santiago Ourense Lugo Ferrol A-101 A-102 A-201 A-215 A-217 A-222 A-305 saldo nombre-sucursal numero-cuenta

Upload: others

Post on 15-Mar-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 1

Tema 3: El Modelo RelacionalTema 3: El Modelo Relacional

Estructura de bases de datos relacionales

Conversión de diseños E-A a relaciones

Integridad de dominio y referencial

Álgebra relacional

Operaciones del álgebra relacional extendida

Modificaciones de la base de datos

Vistas

Cálculo relacional de tuplas

Cálculo relacional de dominios

Bases de datos 2

Ejemplo de una relaciónEjemplo de una relación

500

400

900

700

750

700

350

Vigo

Pontevedra

Ourense

Santiago

Ourense

Lugo

Ferrol

A-101

A-102

A-201

A-215

A-217

A-222

A-305

saldonombre-sucursalnumero-cuenta

Page 2: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 3

Estructura básicaEstructura básica

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

D1 x D2 x … x DnEs decir, una relación es un conjunto de n-tuplas (a1, a2, …, an) donde cada ai ∈ Di

Ejemplo: Si

nombre-cliente = {López, Veiga, Suárez, Diéguez}calle-cliente = {Príncipe, Norte, Diagonal}ciudad-cliente = {Madrid, Vigo, Barcelona}

Entonces r = { (López, Príncipe, Madrid), (Veiga, Norte, Vigo),(Suárez, Norte, Vigo),(Diéguez, Diagonal, Barcelona)}

es una relación sobre nombre-cliente x calle-cliente x ciudad-cliente

Bases de datos 4

Tipos de atributoTipos de atributo

Cada atributo de una relación tiene un nombre

El conjunto de valores permitidos para cada atributo se denomina dominio del atributo

Los valores de los atributos deben ser (normalmente) atómicos, es decir, indivisibles

P.e. atributos con valores multivaluados no son atómicos

P.e. atributos con valores compuestos no son atómicos

El valor especial null pertenece a cualquier dominio

El valor nulo complica la definición de algunos operadores

Page 3: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 5

Esquema de una relaciónEsquema de una relación

A1, A2, …, An son atributosR = (A1, A2, …, An ) es un esquema de relación

P.e. Esquema-cliente =(nombre-cliente, calle-cliente, ciudad-cliente)

r(R) es una relación sobre el esquema de relación RP.e. cliente (Esquema-cliente)

Bases de datos 6

Instancia de una relaciónInstancia de una relación

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

Un elemento t de r es una tupla, y está representado por una columna en una tabla

LópezVeiga

SuárezDiéguez

nombre-cliente

PríncipeNorteNorte

Diagonal

calle-cliente

MadridVigoVigo

Barcelona

ciudad-cliente

cliente

atributos(o columnas)

tuplas(o filas)

Page 4: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 7

Las relaciones no tienen ordenLas relaciones no tienen orden

El orden de las tuplas no es relevante (las tuplas se pueden almacenar en un orden arbitrario)

P.e. la relación cuentas con tuplas no ordenadas

500

700

400

350

900

700

750

Vigo

Santiago

Pontevedra

Ferrol

Ourense

Lugo

Ourense

A-101

A-215

A-102

A-305

A-201

A-222

A-217

saldonombre-sucursalnumero-cuenta

Bases de datos 8

Base de datosBase de datos

Una base de datos está formada por un conjunto de relaciones

La información sobre una organización se divide en partes y cada relación almacena una parte de la información

P.e.: cuenta: almacena información sobre cuentasdepositante: almacena información sobre que cliente

tiene asignada que cuentacliente: almacena información sobre clientes

Almacenar toda la información en una sola relación: banco(numero-cuenta, saldo, nombre-cliente, ..)

da lugar a

información repetida (p.e. dos clientes tienen una misma cuenta)

necesidad de valores nulos (p.e. información sobre un cliente sin cuenta)

La teoría de la normalización se encarga de como diseñar esquemas relacionales correctos

Page 5: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 9

ClavesClaves

Dado K ⊆ R

K es una superclave de R si los valores de K son suficientes para identificar cada una de las tuplas de cada relación posible r(R)

por “posible r” indicamos una relación r que pueda existir en la organización que estamos modelando.

Ejemplo: {nombre-cliente, calle-cliente} y{nombre-cliente}

son ambas superclaves de Cliente, si consideramos que dos clientes no pueden tener el mismo nombre.

K es una clave candidata si K es mínimaEjemplo: {nombre-cliente} es una clave candidata para Cliente, dado que es una superclave (asumiendo que dos clientes no pueden tener el mismo nombre), y ningún subconjunto es una superclave.

Bases de datos 10

Determinación de claves a partir de conjuntos Determinación de claves a partir de conjuntos EE--AA

Conjunto entidad fuerte. La clave primaria del conjunto entidad pasa a ser la clave primaria de la relación.

Conjunto entidad débil. La clave primaria de la relación está formada por la unión de la clave primaria del conjunto entidad fuerte y el discriminador del conjunto entidad débil.

Conjunto asociación. La unión de las claves primarias de los conjuntos entidad participantes es una superclave de la relación.

Para conjuntos asociación varios-a-uno, la clave primaria del conjunto entidad “varios” pasa a ser la clave primaria de la relación.

Para conjuntos asociación uno-a-uno, la clave primaria de la relación puede ser la de cualquiera de los conjuntos entidad.

Para conjuntos asociación varios-a-varios, la unión de las claves primarias pasa a ser la clave primaria de las relación.

Page 6: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 11

Conversión de esquemas EConversión de esquemas E--A a relacionesA a relaciones

Las claves primarias permiten representar tanto los conjuntos entidad como los conjuntos asociación como relaciones que representan los contenidos de la base de datos.

Una base de datos que sigue el esquema E-A se puede representar mediante un conjunto de relaciones.

Para cada conjunto entidad y cada conjunto asociación existe una única relación a la que se le asigna el nombre del conjunto entidad o conjunto asociación correspondiente.

Cada relación tiene columnas (normalmente una por atributo), que tienen nombres únicos.

Convertir un diagrama E-A a relaciones es la base para conseguir un diseño relacional a partir de ese diseño E-A

Bases de datos 12

Representación de conjuntos entidad como Representación de conjuntos entidad como relacionesrelaciones

Un conjunto entidad fuerte se transforma en una relación con los mismos atributos.

Santiago

Vigo

Madrid

Madrid

Madrid

Barcelona

Vigo

Alma

Norte

Príncipe

Alcalá

Príncipe

Diagonal

Norte

Sánchez

Rodríguez

Gómez

Fernández

Veiga

López

Rodríguez

192-83-7465

019-28-3746

677-89-9011

182-73-6091

321-12-3123

336-66-9999

019-28-3746

ciudad-clientecalle-clientenombre-clienteId-cliente

Page 7: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 13

Atributos compuestos y multivaloradosAtributos compuestos y multivalorados

Los atributos compuestos se eliminan creando un nuevo atributo para cada uno de los campos componentes

P.e. dado el conjunto entidad cliente con atributo compuesto nombre con atributos componentes nombre-comun y primer-apellido, la relación correspondiente al conjunto entidad tendrá dos columnas

nombre.nombre-comun y nombre.primer-apellidoUn atributo multivalorado M de una entidad E se representa mediante una nueva relación EM

La relación EM tendrá como columnas la clave primaria de E y un atributo que se corresponderá con el atributo multivalorado M

P.e. El atributo multivalorado telefonos de empleado se representa mediante la relación

empleado-telefonos ( id-empleado, numerot)Cada valor de un atributo multivalorado se corresponde con una fila diferente de la relación EM

P.e., una entidad empleado con clave primaria “Pérez” y teléfonos “123456” y “234567” se corresponde con dos filas:

(Pérez, 123456) and (Pérez, 234567)

Bases de datos 14

Representación de conjuntos entidad débilesRepresentación de conjuntos entidad débiles

Un conjunto entidad débil se transforma en una relación a la que se le añade una columna para la clave primaria del conjunto entidad fuerte identificador

125

500

300

135

50

50

100

75

900

200

7-junio-2001

28-mayo-2001

23-mayo-2001

18-junio 2001

10-mayo-2001

7-junio-2001

17-junio-2001

17-mayo-2001

3-junio-2001

13-junio-2001

53

69

22

58

5

6

7

11

103

104

L-11

L-14

L-15

L-16

L-17

L-17

L-17

L-23

L-93

L-93

cantidad-pagofecha-pagonumero-pagonumero-cuenta

Page 8: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 15

Representación de conjuntos Representación de conjuntos asociación como relacionesasociación como relaciones

Un conjunto asociación varios a varios se representa con una relación con columnas para las claves primarias de los dos conjuntos entidad participantes, y también para los atributos descriptivos del conjunto asociación.

P.e.: relación para el conjunto asociación prestatario

L-11

L-23

L-93

L-17

L-16

L-14

L-15

L-17

019-28-3746

019-28-3746

244-66-8800

321-12-3123

335-57-7991

555-55-5555

677-89-9011

963-96-3963

numero-prestamoId-cliente

Bases de datos 16

Redundancia de relacionesRedundancia de relaciones

Los conjuntos asociación varios-a-uno y uno-a-varios se pueden representar añadiendo un atributo extra a la parte de “varios”, conteniendo la clave primaria de la parte de “uno”

Para resolver problemas de inconsistencia se utiliza el concepto de clave foránea que definiremos al hablar de integridad referencial

P.e.: En vez de crear una relación para la asociación cuenta-sucursal, añadimos un atributo sucursal al conjunto entidad cuenta

nombre-sucursal activo

ciudad-sucursal

sucursal

saldonumero-cuenta

cuenta cuenta-sucursal

Page 9: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 17

Redundancia de relaciones (Cont.)Redundancia de relaciones (Cont.)

Para conjuntos asociación una-a-uno, cualquiera de las participaciones se puede seleccionar para actuar como “varios”

Es decir, se puede añadir un atributo extra a cualquiera de las relaciones correspondientes a los dos conjuntos entidad

Si la participación es parcial en la parte de varios, el reemplazar una relación por un atributo extra en la relación correspondiente a la parte de “varios” puede dar lugar a valores nulos (null)La relación correspondiente al conjunto asociación que enlaza un conjunto entidad débil con su conjunto entidad fuerte identificador es redundante.

P.e. La relación pago ya contiene la información que debería aparecer en la tabla prestamo-pago (las columnas numero-prestamo y numero-pago).

Bases de datos 18

Representación de especializaciones con Representación de especializaciones con relacionesrelaciones

Método 1: Crear una relación para la entidad de nivel alto

Crear una relación para cada conjunto entidad de nivel bajo, queincluirá la clave primaria del conjunto entidad de nivel alto y los atributos locales

tabla atributospersona nombre, calle, ciudad cliente nombre, tipoempleado nombre, salarioProblema: obtener información sobre, por ejemplo, empleados requiere acceder a dos relaciones

Page 10: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 19

Representación de especializaciones Representación de especializaciones con relaciones (Cont.)con relaciones (Cont.)

Método 2:

Crear una relación para cada conjunto entidad con todos los atributos locales y heredados

tabla atributospersona nombre, calle, ciudadcliente nombre, calle, ciudad, tipoempleado nombre, calle, ciudad, salario

Si la especialización es total, la relación para la entidad generalizada (persona) no tiene que almacenar información

Se puede definir como una relación “vista” que contenga la unión de las relaciones de especializaicón

Pero aún puede ser necesaria una relación para restricciones de tipo clave foránea

Problema: la información sobre calle y ciudad puede almacenarse de manera redundante para personas que son a la vez clientes y empleados

Bases de datos 20

Relaciones correspondientes a Relaciones correspondientes a agregacionesagregaciones

Para representar una agregación, se crea una relación conteniendo

la clave primaria de la asociación agregada,

La clave primaria del conjunto entidad asociado

Cualquier atributo descriptivo

Page 11: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 21

Relaciones correspondientes a Relaciones correspondientes a agregaciones (Cont.)agregaciones (Cont.)

P.e. para representar la asociación dirige entre la asociación trabaja-en y el conjunto entidad director, creamos una relación

dirige (id-empleado, nombre-sucursal, id-puesto, nombre-director)La relación trabaja-en es redundante siempre que permitamos almacenar valores nulos en el atributo nombre-director en la relación dirige

empleado

puesto

oficina

director

dirige

trabaja-en

Bases de datos 22

Diagrama EDiagrama E--A para la entidad bancariaA para la entidad bancaria

cuenta sucursal

cliente prestamo

depositante

prestatario

cuenta-sucursal

prestamo-sucursal

numero-cuenta saldo activos

ciudad-sucursal

nombre-cliente ciudad-cliente

numero-prestamo cantidad

nombre-sucursal

calle-cliente

Page 12: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 23

La relación La relación clientecliente

Vigo

Barcelona

Santiago

Ourense

Lugo

Ponferrada

Madrid

Santiago

Ferrol

Granada

Lugo

Barcelona

Príncipe

Diagonal

Norte

Real

Parque

Independencia

Colón

Norte

Pazos

Navas

Reina

Ensanche

Suárez

Vázquez

Veiga

Rodríguez

Fernández

Sánchez

Gómez

Díaz

Pazo

González

Rial

García

ciudad-clientecalle-clientenombre-cliente

Bases de datos 24

La relación La relación depositantedepositante

A-102

A-101

A-201

A-217

A-222

A-215

A-305

Suárez

Vázquez

Veiga

Veiga

Rodríguez

Fernández

Gómez

numero-cuentanombre-cliente

Page 13: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 25

Diagrama del esquema para la entidad Diagrama del esquema para la entidad bancariabancaria

sucursal

ciudad-sucursalactivos

nombre-sucursalcuenta

nombre-sucursalsaldo

numero-cuenta

prestamo

nombre-sucursalcantidad

numero-prestamo

cliente

calle-clienteciudad-cliente

nombre-clientedepositantenombre-clientenumero-cuenta

prestatarionombre-clientenumero-prestamo

Bases de datos 26

Restricciones de dominioRestricciones de dominio

Las restricciones de integridad nos protegen ante daños accidentales en la base de datos, asegurando que los cambios autorizados en la base de datos no van a producir una pérdida de consistencia en los datos

Las restricciones de dominios son la forma más elemental de restricciones de integridad.

Comprueban los valores insertados en la base de datos, y comprueban las consultas para asegurar que las comparaciones tienen sentido.

Se pueden crear nuevos dominios a partir de los tipos de datos existentes

P.e. create domain Euros numeric(12, 2)create domain Libras numeric(12,2)

No se puede asignar o comparar un valor de tipo Euros con un valor de tipo Libras.

No obstante, se pueden convertir tipos:(cast r.A as Libras)

(Se debería también multiplicar por la conversión euro-a-libra)

Page 14: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 27

Integridad referencialIntegridad referencial

Asegura que un valor que aparece en una relación para un conjunto de atributos determinado también aparece en un conjuntode atributos de otra relación.

Ejemplo: Si “Vigo” es un nombre de sucursal que aparece en una de las tuplas de la relación cuentas, entonces existe una tupla en la relación sucursales para la sucursal “Vigo”.

Definición formalDadas las relaciones r1(R1) y r2(R2) con claves primarias K1 y K2respectivamente.

El subconjunto α de R2 es una clave foránea referenciando K1 en la relación r1, si para cada t2 en r2 debe haber una tupla t1 en r1 tal que t1[K1] = t2[α].

Las restricciones de integridad referencial también se denominan dependencias de subconjunto ya que se pueden expresar como

∏α (r2) ⊆ ∏K1 (r1)

Bases de datos 28

Integridad referencial en el modelo EIntegridad referencial en el modelo E--AA

Consideremos el conjunto asociación R entre los conjuntos entidad E1 y E2. El esquema relacional de R incluye las claves primarias K1 de E1 y K2 de E2.Entonces K1 y K2 son claves foráneas sobre los esquemas relacionales de E1 y E2 respectivamente.

Los conjuntos entidad débiles también dan lugar a restricciones de integridad referencial.

El esquema de relación de un conjunto entidad débil debe incluir los atributos que forman la clave primaria del conjunto entidad del que depende

RE1 E2

Page 15: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 29

Comprobación de integridad referencial Comprobación de integridad referencial durante una modificacióndurante una modificación

Se deben realizar las siguientes comprobaciones con el fin de preservar la siguiente restricción de integridad referencial:

∏α (r2) ⊆ ∏K (r1)

Insertar. Si una tupla t2 se inserta en r2, el sistema se debe asegurar de que hay una tupla t1 en r1 tal que t1[K] = t2[α]. Es decir

t2 [α] ∈ ∏K (r1)

Eliminar. Si se elimina una tupla t1 de r1, el sistema debe hallar el conjunto de tuplas de r2 que referencian t1:

σα = t1[K] (r2)

Si el conjunto no es vacíoo bien se rechaza el comando como un error,

o bien se deben eliminar las tuplas que referencian a t1(se permiten eliminaciones en cascada)

Bases de datos 30

Modificaciones de la base de datos (Cont.)Modificaciones de la base de datos (Cont.)

Actualizaciones. Hay dos casos:

Si se actualiza una tupla t2 en la relación r2 y la actualización modifica los valores de la clave foránea α,entonces se debe hacer un test similar al caso de inserción:

Si t2’ denota el nuevo valor de la tupla t2, el sistema se debe asegurar de que

t2’[α] ∈ ∏K(r1)

Si se actualiza una tupla t1 en r1, y la actualización modifica el valor de la clave primaria (K), entonces se debe realizar un test similar a la del caso de eliminación:

1. El sistema debe calcular

σα = t1[K] (r2) utilizando el valor anterior de t1 (el valor antes de hacer la actualización).

2. Si el conjunto no es vacío

1. la actualización se puede rechazar como un error, o

2. La actualización se puede hacer en cascada sobre las tuplas del conjunto, o

3. Las tuplas del conjunto se pueden eliminar.

Page 16: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 31

Lenguajes de consultaLenguajes de consulta

Lenguajes con los que el usuario obtiene información almacenada en la base de datos.

Tipos de lenguajes

procedimentales

No procedimentales

Lenguajes “puros”:

Álgebra relacional

Cálculo relacional de tuplas

Cálculo relacional de dominios

Los lenguajes puros son la base de los lenguajes que se utilizanhabitualmente

Bases de datos 32

Álgebra relacionalÁlgebra relacional

Lenguaje procedimental

Seis operadores básicos

selección

proyección

unión

diferencia de conjuntos

producto cartesiano

renombrar

Los operadores se aplican sobre dos o más relaciones y dan como resultado una nueva relación.

Page 17: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 33

Operación de selecciónOperación de selección

Notación: σ p(r)p se denomina predicado de la selección

Se define como:

σp(r) = {t | t ∈ r y p(t)}donde p es una fórmula en calculo proposicional formada por términos unidos por : ∧ (y), ∨ (o), ¬ (no)Cada término tiene la forma:

<atributo> op <atributo> o <constante>

donde op es: =, ≠, >, ≥. <. ≤Ejemplo de selección:σ nombre-sucursal=“Vigo”(cuenta)

Bases de datos 34

Operación de selección Operación de selección –– EjemploEjemplo

• Relación r A 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 18: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 35

Operación de proyecciónOperación de proyección

Notación:

∏A1, A2, …, Ak (r)donde A1, A2 son nombres de atributos y r en un nombre de relación.

El resultado es la relación de k columnas que se obtiene eliminando las columnas no listadas

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

P.e. Eliminar el atributo nombre-sucursal de cuentas∏numero-cuenta, saldo (cuenta)

Bases de datos 36

Operación de proyección Operación de proyección –– EjemploEjemplo

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 19: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 37

Operación de uniónOperación de unión

Notación: r ∪ sSe define como:

r ∪ s = {t | t ∈ r o t ∈ s}

Para que r ∪ s sea válida.

1. r, s deben tener el mismo número de atributos2. Los dominios de los atributos deben ser compatibles (p.e., la

2ª columna de r contiene el mismo tipo de valores que lasegunda columna de s)

P.e. encontrar todos los clientes con cuentas o préstamos ∏nombre-cliente (depositante) ∪ ∏nombre-cliente (prestatario)

Bases de datos 38

Operación de unión Operación de unión –– EjemploEjemplo

Relaciones r, s:

r ∪ s:

A B

α

α

β

1

2

1

A B

α

β

2

3

rs

A B

α

α

β

β

1

2

1

3

Page 20: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 39

Operación diferencia de conjuntosOperación diferencia de conjuntos

Notación r – sSe define como:

r – s = {t | t ∈ r y t ∉ s}

La diferencia de conjuntos se debe realizar entre relaciones compatibles.

r y s deben tener el mismo número de atributos

Los dominios de los atributos de r y s deben ser compatibles

Bases de datos 40

Operación diferencia de conjuntos Operación diferencia de conjuntos –– EjemploEjemplo

Relaciones r, s:

r – s:

A B

α

α

β

1

2

1

A B

α

β

2

3

rs

A B

α

β

1

1

Page 21: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 41

Operación producto cartesianoOperación producto cartesiano

Notación r x sSe define como:

r x s = {t q | t ∈ r y q ∈ s}

Se asume 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 la operación de renombrar.

Bases de datos 42

Operación producto cartesiano Operación producto cartesiano -- EjemploEjemplo

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 22: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 43

Combinación de operacionesCombinación de operaciones

Se pueden construir expresiones utilizando varias operaciones

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

αββ

102020

aab

Bases de datos 44

Operación de renombradoOperación de renombrado

Permite nombrar, y por tanto referirnos a, los resultados de lasexpresiones de álgebra relacional.

Permite referirse a una relación con más de un nombre.

Ejemplo:

ρ x (E)

devuelve la expresión E con el nombre XSi la expresión E en álgebra relacional tiene un orden n, entonces

ρx (A1, A2, …, An) (E)

devuelve la expresión E con el nombre X, y con los atributos renombrados a A1, A2, …., An.

Page 23: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 45

Ejemplo de bancoEjemplo de banco

sucursal (nombre-sucursal, ciudad-sucursal, activos)

cliente (nombre-cliente, calle-cliente, ciudad-cliente)

cuenta (numero-cuenta, nombre-sucursal, saldo)

prestamo (numero-prestamo, nombre-sucursal, cantidad)

depositante (nombre-cliente, numero-cuenta)

prestatario (nombre-cliente, numero-prestamo)

Bases de datos 46

Ejemplo de consultasEjemplo de consultas

Encontrar todos los préstamos de más de 1200 €

Encontrar el número de préstamos para cada préstamo de una cantidad mayor de 1200 €

σcantidad > 1200 (prestamo)

∏numero-prestamo (σcantidad > 1200 (prestamo))

Page 24: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 47

Ejemplo de consultasEjemplo de consultas

Encontrar los nombres de todos los clientes que tengan una cuenta, un préstamo, o ambas cosas en el banco.

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

∏nombre-cliente (prestatario) ∪ ∏nombre-cliente (depositante)

∏nombre-cliente (prestatario) ∩ ∏nombre-cliente (depositante)

Bases de datos 48

Ejemplo de consultasEjemplo de consultas

Encontrar los nombres de todos los clientes que tengan un préstamo en la sucursal de Vigo.

Encontrar los nombres de todos los clientes que tengan un préstamo en la sucursal de Vigo pero no tengan una cuenta en ninguna sucursal del banco.

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

(σprestatario.numero-prestamo = prestamo.numero-prestamo(prestatario x prestamo))) - ∏nombre-cliente(depositante)

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

(σprestatario.numero-prestamo = prestamo.numero-prestamo(prestatario x prestamo)))

Page 25: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 49

Ejemplo de consultasEjemplo de consultas

Encontrar los nombres de todos los clientes que tengan un préstamo en la sucursal de Vigo.

− Consulta 2

∏nombre-cliente(σprestamo.numero-prestamo = prestatario.numero-prestamo((σnombre-sucursal = “Vigo”(prestamo)) x prestatario))

−Consulta 1∏nombre-cliente(σnombre-sucursal = “Vigo” (

σprestatario.numero-prestamo = prestamo.numero-prestamo(prestatario x prestamo)))

Bases de datos 50

Ejemplo de consultasEjemplo de consultas

Encontrar la cuenta con el mayor saldo

Renombramos la relación cuenta como dConsulta:

∏saldo(cuenta) - ∏cuenta.saldo

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

Page 26: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 51

Definición formalDefinición formal

Una expresión básica en álgebra relacional puede ser:

Una relación de la base de datos

Una relación constante

Dadas dos expresiones en álgebra relacional E1 y E2 también son expresiones en álgebra relacional:

E1 ∪ E2

E1 - E2

E1 x E2

σp (E1), P es un predicado sobre los atributos de E1

∏s(E1), S es una lista que contiene algunos atributos de E1

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

Bases de datos 52

Otras operacionesOtras operaciones

Podemos definir más operaciones que no proporcionan nueva funcionalidad al álgebra relacional pero que simplifican consultas habituales.

Intersección de conjuntos

Reunión (join) natural

División

Asignación

Page 27: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 53

Operación intersección de conjuntosOperación intersección de conjuntos

Notación: r ∩ sSe define como:

r ∩ s ={ t | t ∈ r and t ∈ s }

Asumiendo:

r, s tienen el mismo número de atributos

Los atributos de r y s con compatibles

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

Bases de datos 54

Operación intersección de conjuntos Operación intersección de conjuntos --EjemploEjemplo

Relaciones r, s:

r ∩ s

A B

ααβ

121

A B

αβ

23

r s

A B

α 2

Page 28: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 55

Notación: r s

Operación Operación joinjoin naturalnatural

Dadas dos relaciones r y s sobre los esquemas R y Srespectivamente. Entonces, r s es una relación sobre el esquema R ∪ S que se obtiene de la siguiente manera:

Se considera cada par de tuplas tr de r y ts de s.

Si tr y ts tienen el mismo valor para cada uno de los atributos en R ∩ S, se añade una tupla t al resultado, donde

t tiene el mismo valor que tr sobre r

t tiene el mismo valor que ts sobre s

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

S = (E, B, D)

Esquema de relación = (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))

Bases de datos 56

Operación Operación joinjoin natural natural -- EjemploEjemplo

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 29: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 57

Operación divisiónOperación división

Adecuada para consultas que incluyan la expresión “para todos”.

Dadas las relaciones r y s sobre los esquemas R y S respectivamente, donde

R = (A1, …, Am, B1, …, Bn)

S = (B1, …, Bn)

El resultado de r ÷ s es una relación sobre el esquema

R – S = (A1, …, Am)

r ÷ s = { t | t ∈ ∏ R-S(r) ∧ ∀ u ∈ s ( tu ∈ r ) }

r ÷ s

Bases de datos 58

Operación división Operación división -- EjemploEjemplo

Relaciones r, s:

r ÷ s: A

B

α

β

1

2

A B

αααβγδδδ∈∈β

12311134612

r

s

Page 30: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 59

Otro ejemplo de divisiónOtro 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

Bases de datos 60

Operación asignaciónOperación asignación

La operación asignación (←) facilita un modo conveniente de expresar consultas complejas.

Escribir consultas como un programa secuencial consistente enun conjunto de asignaciones Seguido por una expresión cuyo valor se muestre como el resultado de la consulta.

La asignación siempre se debe realizar a una variable relación temporal.

Ejemplo: r ÷ s se puede expresar como

temp1 ← ∏R-S (r)temp2 ← ∏R-S ((temp1 x s) – ∏R-S,S (r))result = temp1 – temp2

El resultado de la expresión a la derecha de ← se asigna a la variable

relación de la izquierda de ←.

La variable se puede utilizar en las expresiones que vienen a

continuación.

Page 31: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 61

Consulta 2

∏nombre-cliente, nombre-sucursal (depositante cuenta)

÷ ρtemp(nombre-sucursal) ({(“Vigo”), (“Pontevedra”)})

Consulta 1

∏NC(σNS=“Vigo”(depositante cuenta)) ∩

∏NC(σNS=“Pontevedra”(depositante cuenta))

donde NC representa nombre-cliente y NS nombre-sucursal.

Ejemplo de consultasEjemplo de consultas

Encontrar todos los clientes que tengan una cuenta al menos en las sucursales de “Vigo” y “Pontevedra”.

Bases de datos 62

∏nombre-cliente, nombre-sucursal (depositante cuenta)

÷ ∏nombre-sucursal (σciudad-sucursal = “Madrid” (sucursal))

Encontrar todos los clientes que tengan una cuenta en todas las

sucursales de Madrid.

Ejemplo de consultasEjemplo de consultas

Page 32: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 63

Operaciones del Álgebra Relacional ExtendidaOperaciones del Álgebra Relacional Extendida

Proyección generalizada

Reunión (join) externa

Funciones agregadas

Bases de datos 64

Proyección generalizadaProyección generalizada

Extiende la operación de proyección permitiendo funciones aritméticas en la lista de proyección.

∏ F1, F2, …, Fn(E)

E es cualquier expresión en álgebra relacional

F1, F2, …, Fn son expresiones aritméticas que incluyen constantes y atributos del esquema de E.

P.e. Dada la relación info-credito(nombre-cliente, limite, saldo-credito), encontrar cuanto puede gastar cada persona:

∏nombre-cliente, limite – saldo-credito (info-credito)

Page 33: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 65

Funciones y operaciones agregadasFunciones y operaciones agregadas

Las funciones de agregación toman como argumentos un conjunto de valores y devuelven un valor simple como resultado.

avg: valor mediomin: valor mínimomax: valor máximosum: suma de valorescount: número de valores

Operación agregada en álgebra relacional

G1, G2, …, Gn g F1( A1), F2( A2),…, Fn( An) (E)

E es cualquier expresión en álgebra relacional

G1, G2 …, Gn es una lista de atributos sobre los que agrupar (puede estar vacía)

Cada Fi es una función agregada

Cada Ai es un nombre de atributo

Bases de datos 66

Operación agregada Operación agregada -- EjemploEjemplo

Relación r:A B

ααββ

αβββ

C

7

7

3

10

g sum(c) (r)sum-C

27

Page 34: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 67

Operación agregada Operación agregada -- EjemploEjemplo

Relación cuenta agrupada por nombre-sucursal:

nombre-sucursal g sum(saldo) (cuenta)

nombre-sucursal numero-cuenta saldo

VigoVigoMadridMadridPontevedra

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

400900750750700

nombre-sucursal saldoVigoMadridPontevedra

13001500700

Bases de datos 68

Funciones agregadas (Cont.)Funciones agregadas (Cont.)

El resultado de la agregación no tiene nombre

Se puede utilizar la operación de renombrado para darle un nombre

Por conveniencia, se permite el renombrado como parte de la operación de agregación

Nombre-sucursal g sum(saldo) as sum-saldo (cuenta)

Page 35: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 69

JoinJoin externoexterno

Es una extensión de la operación de join que evita la pérdida de información.

Calcula el join y después añade las tuplas de una relación que no coinciden con las tuplas de la otra relación al resultado del join.

Utiliza valores null:null significa que el valor es desconocido o no existe

Todas la comparaciones en las que participa un valor nullson falsas por definición.

Bases de datos 70

JoinJoin externo externo –– EjemploEjemplo

Relación prestamo

Relación prestatario

nombre-cliente numero-prestamoLópezVázquezGarcía

L-170L-230L-155

300040001700

numero-prestamo cantidadL-170L-230L-260

nombre-sucursalVigoOurenseMadrid

Page 36: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 71

Join externo izquierdo

prestamo prestatario

JoinJoin externo externo –– EjemploEjemplo

Join interno

prestamo prestatario

numero-prestamo cantidad

L-170L-230

30004000

nombre-cliente

LópezVázquez

nombre-sucursal

VigoOurense

LópezVázqueznull

numero-prestamo cantidad

L-170L-230L-260

300040001700

nombre-clientenombre-sucursal

VigoOurenseMadrid

Bases de datos 72

JoinJoin externo externo –– EjemploEjemplo

Join externo derechoprestamo prestatario

prestamo prestatarioJoin externo total

numero-prestamo cantidad

L-170L-230L-155

30004000null

nombre-cliente

LópezVázquezGarcía

nombre-sucursal

VigoOurensenull

numero-prestamo cantidad

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

300040001700null

nombre-cliente

LópezVázqueznullGarcía

nombre-sucursal

VigoOurenseMadridnull

Page 37: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 73

Valores nulosValores nulos

Las tuplas pueden contener valores nulos, denotados por null, en algunos de sus atributos

null significa valor desconocido o que el valor no existe.

El resultado de cualquier expresión aritmética en la que participe null es null.Las funciones agregadas ignoran los valores null

Es una decisión arbitraria. Alternativamente se podría haber devuelto como resultado null.Seguimos la semántica de SQL respecto al manejo de valores nulos

Para eliminación de duplicados y agrupamientos, null recibe el mismo tratamiento que cualquier otro valor, y se asume que dos nulos son iguales

Alternativa: asumir que cada nulo es distinto de los demás

Ambas son decisiones arbitrarias. Nosotros seguimos SQL

Bases de datos 74

Valores nulosValores nulos

Las comparaciones con valores null devuelven un valor especial de verdad denominado desconocido

Si se usa falso en vez de desconocido, entonces not (A < 5)no sería equivalente a A >= 5

Lógica trivalorada utilizando el valor de verdad desconocido:OR: (desconocido or verdad) = verdad,

(desconocido or falso) = desconocido,(desconocido or desconocido) = desconocido

AND: (verdad and desconocido) = desconocido, (falso and desconocido) = falso,(desconocido and desconocido) = desconocido

NOT: (not desconocido) = desconocidoEn SQL “P es desconocido” se evalúa a verdad si el predicado Pse evalúa a desconocido

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

Page 38: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 75

Modificación de la base de datosModificación de la base de datos

El contenido de la base de datos se puede modificar utilizando las siguientes operaciones:

Borrado

Inserción

Actualización

Todas estas operaciones se expresan mediante el operador de asignación.

Bases de datos 76

BorradoBorrado

Una petición de borrado se expresa de manera similar a una consulta, excepto que, en vez de mostrar las tuplas al usuario, las tuplas seleccionadas se eliminan de la base de datos.

Sólo se pueden eliminar tuplas completas; no se pueden eliminar solo determinados atributos

Un borrado se expresa en álgebra relacional como:

r ← r – Edonde r es una relación y E es una consulta en álgebra relacional.

Page 39: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 77

r1 ← σ ciudad-sucursal = “Madrid” (cuenta sucursal)

r2 ← ∏ciudad-sucursal, numero-cuenta, saldo (r1)

r3 ← ∏ nombre-cliente, numero-cuenta (r2 depositante)

cuenta ← cuenta – r2

depositante ← depositante – r3

Ejemplos de borradoEjemplos de borrado

Borrar todas las cuentas de la sucursal de Vigo.

Borrar todas las cuentas de sucursales de Madrid.

Borrar todos los préstamos con cantidades entre 0 y 50

prestamo ← prestamo – σ cantidad ≥ 0 and cantidad ≤ 50 (prestamo)

cuentas ← cuentas – σ nombre-sucursal = “Vigo” (cuenta)

Bases de datos 78

InserciónInserción

Para insertar datos en una relación podemos:

o bien especificar la tupla a insertar

O bien escribir una consulta cuyo resultado esté formado por lastuplas a insertar

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

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

La inserción de una sola tupla se realiza cuando E es una relación constante que contiene una tupla.

Page 40: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 79

r1 ← (σnombre-sucursal = “Vigo” (prestatario prestamo))cuenta ← cuenta ∪ ∏nombre-sucursal, numero-cuenta,200 (r1)

depositante ← depositante ∪ ∏nombre-cliente, numeor-prestamo(r1)

Ejemplos de inserciónEjemplos de inserción

Insertar información en la base de datos especificando que López tiene 1200€ en la cuenta A-973 en la sucursal de Vigo.

Dar un premio a todos los préstamos de la sucursal de Vigo una cuenta de ahorro con 200€. El número de préstamo se utilizará como numero de cuenta de ahorro.

cuenta ← cuenta ∪ {(“Vigo”, A-973, 1200)}

depositante ← depositante ∪ {(“López”, A-973)}

Bases de datos 80

ActualizaciónActualización

Permite cambiar el valor de una tupla sin cambiar todos los valores de la tupla

Para ello se utiliza la operación de proyección generalizada

r ← ∏ F1, F2, …, FI, (r)Cada Fi es

el atributo i de r, si el atributo i no se quiere actualizar, o,

si se va a actualizar el atributo i, Fi es una expresión en la que intervienen solamente constantes y los atributos de r, que proporciona el nuevo valor del atributo

Page 41: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 81

Ejemplos de actualizaciónEjemplos de actualización

Pagar intereses aumentando un 5% todos los saldos.

Pagar a todas las cuentas con saldos de más de 10.000€ un 6% de interés y un 5% al resto

cuenta ← ∏ NC, NS, SAL * 1.06 (σ SAL > 10000 (cuenta))

∪ ∏NC, NC, SAL * 1.05 (σSAL ≤ 10000 (cuenta))

cuenta ← ∏ NC, NS, SAL * 1.05 (cuenta)

donde NC, NS y SAL significan numero-cuenta, nombre-sucursaly saldo, respectivamente.

Bases de datos 82

VistasVistas

En algunos casos no es deseable que todos los usuarios vean el modelo lógico completo (es decir, todas las relaciones almacenadas en la base de datos)

Consideremos una persona que necesita saber un número de préstamo de un cliente pero no necesita ver la cantidad prestada. Esta persona debería ver la siguiente relación descrita en álgebra relacional

∏nombre-cliente, numero-prestamo (prestatario prestamo)

Cualquier relación que no existe en el modelo conceptual pero se necesita proporcionar a un usuario como una “relación virtual” se denomina vista.

Page 42: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 83

Definición de vistasDefinición de vistas

Una vista se define utilizando una sentencia create view que tiene la siguiente forma

create view v as <consulta>

donde <consulta> es cualquier consulta válida en álgebra relacional. El nombre de la vista es v.Una vez definida una vista, el nombre de la vista se utiliza para referirse a la relación virtual que genera la vista.

Definir una vista no es lo mismo que crear una nueva relación evaluando la consulta

La definición de una vista hace que se guarde una expresión de una consulta; la expresión se substituye en las consultas que utilicen la vista.

Bases de datos 84

create view todos-los-clientes as

∏nombre-sucursal, nombre-cliente (depositante cuenta)∪ ∏nombre-sucursal, nombre-cliente (prestatario prestamo)

Ejemplos de vistasEjemplos de vistas

Definir una vista (denominada todos-los-clientes) formada por sucursales y sus clientes.

Podemos encontrar todos los clientes de la sucursal de Vigo con:

∏nombre-sucursal(σnombre-sucursal = “Vigo” (todos-los clientes))

Page 43: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 85

Modificaciones a través de vistasModificaciones a través de vistas

Las modificaciones de la base de datos que se expresan mediante vistas se deben traducir a modificaciones de las relaciones de la base de datos.

Consideremos la persona que necesita ver todos los datos de préstamos en la relación prestamo excepto cantidad. La vista que le demos a esa persona, sucursal-prestamo, se define como:

create view sucursal-prestamo as

∏nombre-sucursal, numero-prestamo (prestamo)Dado que permitimos utilizar un nombre de vista en cualquier lugar donde pueda aparecer un nombre de relación, el usuario podría escribir:

sucursal-prestamo ← sucursal-prestamo ∪ {(“Vigo”, L-37)}

Bases de datos 86

Modificaciones a través de vistas (Cont.)Modificaciones a través de vistas (Cont.)

La inserción anterior se debe representar mediante una inserciónen la relación prestamo a partir de la cual se construyó la vista sucursal-prestamo.

Una inserción en prestamo requiere un valor para cantidad. El tratamiento de la inserción puede ser

Rechazar la inserción y devolver un mensaje de error al usuario.

Insertar una tupla (“L-37”, “Vigo”, null) en la relación prestamoAlgunas actualizaciones a través de vistas son imposibles de transformar en actualizaciones de relaciones en la base de datos

create view v as (σnombre-sucursal = “Vigo” (cuenta))

v ← v ∪ (L-99, Ourense, 23)

Otras no se pueden transformar de manera únicatodos-los-clientes ← todos-los-clientes ∪ {(“Vigo”, “López”)}

¡Tenemos que elegir préstamo o cuenta ycrear un nuevo número de cuenta/préstamo!

Page 44: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 87

Vistas definidas utilizando otras vistasVistas definidas utilizando otras vistas

Una vista se puede utilizar en la expresión que define otra vista

Una relación vista v1 se dice que depende directamente de una relación vista v2 si v2 se utiliza en la relación que define v1

Una relación vista v1 se dice que depende de una relación vista v2 si, o bien v1 depende directamente de v2, o bien hay un camino de dependencias desde v1 a v2

Una relación vista v se dice que es recursiva si depende de si misma.

Bases de datos 88

Cálculo relacional de tuplasCálculo relacional de tuplas

Es un lenguaje de consulta no procedimental, en el que cada consulta tiene la forma

{t | P (t) }Es el conjunto de todas las tuplas t tales que el predicado P es verdadero para tt es una variable tupla, t[A] denota el valor de la tupla t en el atributo At ∈ r denota que la t está en la relación rP es una fórmula similar a las del cálculo de predicados

Page 45: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 89

Fórmulas en el cálculo de predicadosFórmulas en el cálculo de predicados

1. Conjunto de atributos y constantes

2. Conjunto de operadores de comparación: (p.e., <, ≤, =, ≠, >, ≥)

3. Conjunto de conectivas: y (∧), o (v)‚ no (¬)

4. Implicación (⇒): x ⇒ y, si x es verdad, entonces y es verdad

x ⇒ y ≡ ¬x v y5. Conjunto de cuantificadores:

∃ t ∈ r (Q(t)) ≡ ”existe” una tupla t en la relación rtal que el predicado Q(t) es verdad

∀t ∈ r (Q(t)) ≡ Q es verdad “para todas” las tuplas t en la relación r

Bases de datos 90

Ejemplo de consultasEjemplo de consultas

Encontrar el numero-prestamo, nombre-sucursal, y cantidad de los préstamos de más de 1200€

Encontrar el número de préstamo de cada préstamo de más de 1200€

Notar que la consulta define implícitamente una relación sobre el esquema [numero-prestamo]

{t | ∃ s ∈ prestamo (t[numero-prestamo] = s[numero-prestamo] ∧ s [cantidad] > 1200)}

{t | t ∈ prestamo ∧ t [cantidad] > 1200}

Page 46: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 91

Ejemplo de consultasEjemplo de consultas

Encontrar los nombres de todos los clientes que tienen un préstamo, una cuenta o ambas cosas en el banco

{t | ∃s ∈ prestatario( t[nombre-cliente] = s[nombre-cliente])∧ ∃u ∈ depositante( t[nombre-cliente] = u[nombre-cliente])

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

{t | ∃s ∈ prestatario( t[nombre-cliente] = s[nombre-cliente])∨ ∃u ∈ depositante( t[nombre-cliente] = u[nombre-cliente])

Bases de datos 92

Ejemplo de consultasEjemplo de consultas

Encontrar los nombres de todos los clientes que tengan un préstamo en la sucursal de Vigo

{t | ∃s ∈ prestatario( t[nombre-cliente] = s[nombre-cliente]∧ ∃u ∈ prestamo(u[nombe-sucursal] = “Vigo”

∧ u[numero-prestamo] = s[numero-prestamo]))∧ not ∃v ∈ depositante (v[nombre-cliente] =t[nombre-cliente]) }

Encontrar los nombres de todos los clientes que tengan un préstamo en la sucursal de Vigo, pero no tengan una cuenta en ninguna sucursal del banco

{t | ∃s ∈ prestatario(t[nombre-cliente] = s[nombre-cliente] ∧ ∃u ∈ prestamo(u[nombre-sucursal] = “Vigo”

∧ u[numero-prestamo] = s[numero-prestamo]))}

Page 47: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 93

Ejemplo de consultasEjemplo de consultas

Encontrar los nombres de todos los clientes que tengan un préstamo en la sucursal de Vigo , y las ciudades donde viven

{t | ∃s ∈ prestamo(s[nombre-sucursal] = “Vigo”∧ ∃u ∈ prestatario (u[numero-prestamo] = s[numero-prestamo]

∧ t [nombre-cliente] = u[nombre-cliente])∧ ∃ v ∈ cliente (u[nombre-cliente] = v[nombre-cliente]

∧ t[ciudad-cliente] = v[ciudad-cliente])))}

Encontrar los nombres de todos los clientes que tengan una cuenta en todas las sucursales de Madrid:

{t | ∃ c ∈ cliente (t[nombre-cliente] = c[nombre-cliente]) ∧

∀ s ∈ sucursal(s[ciudad-sucursal] = “Madrid” ⇒∃ u ∈ cuenta ( s[nombre-sucursal] = u[nombre-sucursal]∧ ∃ s ∈ depositante ( t[nombre-cliente] = s[nombre-cliente]

∧ s[numero-cuenta] = u[numero-cuenta] )) )}

Bases de datos 94

Seguridad de las expresionesSeguridad de las expresiones

En cálculo de tuplas es posible escribir expresiones que genereninfinitas relaciones.

Por ejemplo, {t | ¬ t ∈ r} da lugar a una relación infinita si el dominio de algún atributo de la relación r es infinito

Para prevenir este problema, se restringe el conjunto de expresiones permitidas a expresiones seguras.

Una expresión {t | P(t)} en el cálculo relacional de tuplas es segura si cada componente de t aparece en una de las relaciones, tuplas, o constantes que aparecen en P

NOTA: esto es más que una simple condición de sintaxis.

P.e. { t | t[A]=5 ∨ true } no es segura --- define un conjunto infinito con valores de atributo que no aparecen en ninguna relación, tupla o constante en P.

Page 48: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 95

Cálculo relacional de dominiosCálculo relacional de dominios

Es un lenguaje de consulta no procedimental equivalente en capacidad expresiva al cálculo relacional de tuplas

Cada consulta es una expresión de la siguiente forma:

{ < x1, x2, …, xn > | P(x1, x2, …, xn)}

x1, x2, …, xn representan variables de dominio

P representa una formula similar a las del cálculo de predicados

Bases de datos 96

Ejemplo de consultasEjemplo de consultas

Encontrar el numero-prestamo, nombre-sucursal, y cantidad para préstamos de más de 1200€

{< c, a > | ∃ l (< c, l > ∈ prestatario ∧ ∃b(< l, b, a > ∈ prestamo ∧

b = “Vigo”))}

o {< c, a > | ∃ l (< c, l > ∈ prestatario ∧ < l, “Vigo”, a > ∈ prestamo)}

Encontrar los nombres de todos los clientes que tienen un préstamo en la sucursal de Vigo y la cantidad del préstamo:

{< c > | ∃ l, b, a (< c, l > ∈ prestatario ∧ < l, b, a > ∈ prestamo ∧ a > 1200)}

Nombre los clientes que tienen un préstamo de más de 1200€

{< l, b, a > | < l, b, a > ∈ prestamo ∧ a > 1200}

Page 49: Tema 3: El Modelo Relacional - Universidade de Vigogssi.det.uvigo.es/users/mramos/public_html/bd/tema3-2.pdf · Bases de datos 1 Tema 3: El Modelo Relacional Estructura de bases de

Bases de datos 97

Ejemplo de consultasEjemplo de consultas

Encontrar los nombres de todos los clientes que tengan una cuenta, un préstamo o ambas cosas en la sucursal de Vigo:

{< c > | ∃ s, n (< c, s, n > ∈ cliente) ∧

∀ x,y,z(< x, y, z > ∈ sucursal ∧ y = “Vigo”) ⇒∃ a,b(< x, y, z > ∈ cuenta ∧ < c,a > ∈ depositante)}

Encontrar los nombres de todos los clientes que tienen una cuenta en todas las sucursales de Madrid:

{< c > | ∃ l ({< c, l > ∈ prestatario ∧ ∃ b,a(< l, b, a > ∈ prestamo ∧ b = “Vigo”))

∨ ∃ a(< c, a > ∈ prestatario∧ ∃ b,n(< a, b, n > ∈ cuenta ∧ b = “Vigo”))}

Bases de datos Manuel Ramos Cabrer 98

Fin del Fin del tematema 33