cálculo relacional de tuplas 3.1 operaciones de álgebra...

56
Basado en el libro de ©Silberschatz, Korth y Sudarshan 3.1 Fundamentos de bases de datos Capítulo 3: El modelo relacional Capítulo 3: El modelo relacional Estructura de las bases de datos relacionales Álgebra relacional Operaciones de álgebra relacional extendida Modificación de la base de datos Cálculo relacional de tuplas

Upload: truongkiet

Post on 19-Sep-2018

222 views

Category:

Documents


1 download

TRANSCRIPT

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.1Fundamentos de bases de datos

Capítulo 3: El modelo relacionalCapítulo 3: El modelo relacional

� Estructura de las bases de datos relacionales

� Álgebra relacional

� Operaciones de álgebra relacional extendida

� Modificación de la base de datos

� Cálculo relacional de tuplas

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.2Fundamentos de bases de datos

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 DnPor tanto una relación es un conjunto de n-tuplas (a1, a2, …, an) donde ai ∈ Di

� Ejemplo: sinombre-cliente = {Gómez, Pérez, López, García}calle-cliente = {Gran_Vía, Norte, Retiro}ciudad-cliente = {Huesca, Reus, Pamplona}

Entonces r = { (Gómez, Gran_Vía, Huesca), (Pérez, Norte, Reus),(López, Norte, Reus),(García, Retiro, Pamplona)}

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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.3Fundamentos de bases de datos

Tipos de atributosTipos de atributos� Cada atributo de una relación tiene un nombre� El conjunto de valores permitidos para cada atributo se conoce

como el dominio del atributo� Se exige (normalmente) que los valores de los atributos sean

atómicos, esto es, indivisibles� Por ejemplo, los valores de los atributos multivalorados no son

atómicos� Por ejemplo, los valores de los atributos compuestos no son

atómicos

� El valor especial null es un miembro de cada dominio� El valor nulo causa complicaciones en la definición de muchas

operaciones� Ignoraremos el efecto de los valores nulos en nuestra presentación

principal y consideraremos sus efectos posteriormente

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.4Fundamentos de bases de datos

Esquema de la relaciónEsquema de la relación� A1, A2, …, An son atributos� R = (A1, A2, …, An ) es un esquema de la relación

Por ejemplo, esquema-cliente =(nombre-cliente, calle-cliente, ciudad-cliente)

� r(R) es una relación en el esquema de la relación RPor ejemplo, cliente (Esquema-cliente)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.5Fundamentos de bases de datos

Instancia de relaciónInstancia de relación� Los valores actuales (una instancia de la relación) de una

relación se especifican con una tabla� Un elemento t de r es una tupla, representada por una fila en

una tabla

GómezPérezLópezGarcía

nombre-cliente

Gran VíaNorteNorteRetiro

calle-cliente

HuescaReusReus

Pamplona

ciudad-cliente

cliente

Columnas(atributos)

Filas(tuplas)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.6Fundamentos de bases de datos

Bases de datosBases de datos� Una base de datos está compuesta por múltiples relaciones� La información sobre una empresa se divide en partes. Cada relación

contiene una parte de la informaciónPor ejemplo: � pedidos: contiene información sobre los pedidos� productos: contiene información sobre los productos� detalles_pedido: productos que contiene aparecen en cada pedido

� Almacenar toda la información como una relación simple da como resultado� repetición de información (por ejemplo, dos clientes poseen una cuenta)� la necesidad de valores nulos (por ejemplo, representar un cliente sin

cuenta)� La teoría de la normalización explica cómo diseñar esquemas

relacionales

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.7Fundamentos de bases de datos

Diagrama EDiagrama E--R de PedidosR de PedidosID_Empleado nombre

Precio

EMPLEADO

calle

Cantidad.

PRODUCTO

ID_ProductoExistencias

Descrip

(1,1)

PEDIDO CLIENTE

ID_Cliente

calle

ciudad

ID_Pedido

N:M

(0,n) (1,1)

nombre

ciudad

N:1

1:NAtender

Solicitar

Detalles

(0,n)

(0,n)

(1,m)

fecha

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.8Fundamentos de bases de datos

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

para identificar una tupla única de cada posible relación r(R) .Por “posible r” entendemos una relación r que pueda darse en la empresa que tenemos como modelo.Ejemplo: {nombre-cliente, calle-cliente} y

{nombre-cliente} son ambos superclaves de Cliente, siempre que no haya posibilidad de que dos clientes puedan tener el mismo nombre.

� K es una clave candidata si K es mínimalEjemplo: {nombre-cliente} es una clave candidata para Cliente, ya que es una superclave (suponiendo que dos clientes no pueden tener el mismo nombre), y que ninguno de sus subconjuntos es una superclave.

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.9Fundamentos de bases de datos

Determinación de claves desde los Determinación de claves desde los conjuntos Econjuntos E--RR

� Conjunto de entidades fuertes. La clave primaria del conjunto de entidades se convierte en la clave primaria de la relación.

� Conjunto de entidades débiles. La clave primaria de la relación consiste en la unión de la clave primaria de un conjunto de entidades fuertes y el discriminante del conjunto de entidades débiles.

� Conjunto de relaciones. La unión de las claves primarias de los conjuntos de entidades relacionadas se convierte en una superclave de la relación.� Para conjuntos de relaciones binarias varios-a-uno, la clave primaria

de la entidad “varios” se convierte en la clave primaria de la relación.� Para los conjuntos de relaciones uno-a-uno la clave primaria de la

relación puede ser la de cualquiera de las que componen el conjunto.� Para conjuntos de relaciones varios-a-varios, la unión de las claves

primarias se convierte en la clave primaria de la relación

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.10Fundamentos de bases de datos

Lenguajes de consultaLenguajes de consulta� Lenguajes en los que los usuarios solicitan información de la

base de datos.� Categorías de los lenguajes

� procedimental� no-procedimental

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

� Los lenguajes puros forman las bases subyacentes de los lenguajes de consulta comerciales.

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.11Fundamentos de bases de datos

Álgebra relacionalÁlgebra relacional� Lenguaje procedimental� Seis operaciones básicas

� selección� proyección� unión� diferencia de conjuntos� producto cartesiano� renombramiento

� Las operaciones toman dos o más relaciones como entrada y producen como resultado una nueva relación.

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.12Fundamentos de bases de datos

Operación selecciónOperación selección

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

σp(r) = {t | t ∈ r y p(t)}Donde p es una fórmula de cálculo proposicional compuesta por términos conectados por: ∧ (y), ∨ (o), ¬ (no)Cada término es uno de:

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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.13Fundamentos de bases de datos

Operación selección Operación 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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.14Fundamentos de bases de datos

Operación proyecciónOperación proyección� Notación:

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

� El resultado se define como la relación de k columnas obtenidas borrando las columnas que no aparecen

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

� Por ejemplo, Para eliminar el atributo calle de clientes∏id_cliente, nombre, ciudad (cliente)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.15Fundamentos de bases de datos

Operación proyección Operación 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)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.16Fundamentos de bases de datos

Operación uniónOperación unión� Notación: r ∪ s� Definido como:

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

� Para que r ∪ s sea válido.1. r, s deben tener la misma aridad (el mismo número de atributos)2. El atributo dominio debe ser compatible (por ejemplo, 2ª columna de r maneja los mismos tipos de valores que la 2ª columna de s)

� Por ejemplo, para encontrar todos los clientes con una cuenta o con un préstamo

∏nombre_cliente (clientes) ∪ ∏ nombre_empleado (empleados)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.17Fundamentos de bases de datos

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

� Relaciones r, s:

r ∪ s:

A B

α

α

β

1

2

1

A B

α

β

2

3

rs

A B

α

α

β

β

1

2

1

3

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.18Fundamentos de bases de datos

Operación diferencia de conjuntosOperació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 aridad� los dominios de los atributos de r y s deben ser compatibles

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.19Fundamentos de bases de datos

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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.20Fundamentos de bases de datos

Operación producto cartesianoOperació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.

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.21Fundamentos de bases de datos

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

Relaciones r, s:

r x s:

A B

α

β

1

2

A B

ααααββββ

11112222

C D

αββγαββγ

1019201010102010

E

aabbaabb

C D

αββγ

10102010

E

aabbr

s

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.22Fundamentos de bases de datos

Composición de operacionesComposició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

αββγαββγ

1019201010102010

E

aabbaabb

A B C D E

αββ

122

αββ

102020

aab

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.23Fundamentos de bases de datos

Operación renombramientoOperació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 aridad 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.

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.24Fundamentos de bases de datos

Definición formalDefinició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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.25Fundamentos de bases de datos

Operaciones adicionalesOperaciones 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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.26Fundamentos de bases de datos

Operación intersección de conjuntosOperació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 aridad� los atributos de r y s son compatibles

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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.27Fundamentos de bases de datos

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

� Relación r, s:

� r ∩ s

A B

ααβ

121

A B

αβ

23

r s

A B

α 2

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.28Fundamentos de bases de datos

Operación reunión naturalOperación reunión natural� Notación: r s� Sean r y s relaciones de los esquemas R y S respectivamente. El

resultado es una relación del esquema R ∪ S que se obtiene 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))

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.29Fundamentos de bases de datos

Operación reunión natural Operación reunión 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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.30Fundamentos de bases de datos

Operación divisiónOperación divisió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 ) }

r ÷ s

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.31Fundamentos de bases de datos

Operación división Operación división –– EjemploEjemplo

Relaciones r, s:

r ÷ s: A

B

α

β

1

2

A B

αααβγδδδ∈∈β

12311134612

r

s

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.32Fundamentos de bases de datos

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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.33Fundamentos de bases de datos

Operación asignaciónOperación asignación� La operación asignación (←) proporciona una forma

conveniente de expresar consultas complejas, de escribir una consulta como un programa secuencial compuesto de 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.

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.34Fundamentos de bases de datos

Ejemplo PedidosEjemplo PedidosClientes= (id_cli, nom_cli, calle, ciudad)Empleados= (Id_emp,nom_emp, calle, ciudad)Pedidos = (Id_pedido, Id_cli, Id_emp, fecha_pedido)Productos= (Id_pro,nom_pro, existencias, precio)Detalles_pedido=(Id_Pedido, Id_pro, cantidad)

� Identificador y Nombre de los clientes de Mieres� Nombres de clientes y empleados de Mieres� Nombres de los productos vendidos por María� Clientes que han pedido Patatas� Clientes que NO han pedido Patatas� Nombre de los productos que han sido pedidos por todos lo

clientes

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.35Fundamentos de bases de datos

Operaciones de álgebra relacional Operaciones de álgebra relacional extendidaextendida

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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.36Fundamentos de bases de datos

Proyección generalizadaProyecció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 productos(id_producto, nombre,

precio,existencias), averiguar cuánto dinero tengo en almacén de cada producto:

∏nombre, precio*existencias (productos)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.37Fundamentos de bases de datos

Funciones de agregación y operacionesFunciones 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

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

� 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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.38Fundamentos de bases de datos

Reunión externaReunió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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.39Fundamentos de bases de datos

Reunión externa Reunión externa –– EjemploEjemplo

� Relación propietario

Id_propietario Id_CocheP1P2P3

C1C2

� Relación Coche

Id_cocheC1C2C3

O-1701-ADO-1234-BXM-1255-TU

nombrePepePepaCarlos

matrícula

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.40Fundamentos de bases de datos

� Reunión interna

propietario Coche

Reunión externaReunión externa –– EjemploEjemplo

propietario coche� Reunión externa por la izquierda

Id_Propietario Id_coche

P1P2

C1C2

matrícula

O-1701-ADO-1234-BX

nombre

PepaPepa

Id_Propietario Id_coche

P1P2P3

C1C2null

matrícula

O-1701-ADO-1234-BXnull

nombre

PepaPepaCarlos

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.41Fundamentos de bases de datos

Reunión externa Reunión externa –– EjemploEjemplo� Reunión externa por la derecha

propietario coche

propietario coche� Reunión externa completa

Id_Propietario Id_coche

P1P2null

C1C2C3

matrícula

O-1701-ADO-1234-BXM-1255-TU

nombre

PepaPepanull

Id_Propietario Id_coche

P1P2P3null

C1C2nullC3

matrícula

O-1701-ADO-1234-BXnullM-1255-TU

nombre

PepaPepaCarlosnull

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.42Fundamentos de bases de datos

Equivalencias (I)Equivalencias (I)1. Cascada de proyecciones

Si { A1, ..., An} ⊂ { B1, ..., Bm}

π A1, ..., An ( π B1, ..., Bm (R) = π A1, ..., An (R)

2. Cascada de selecciones

σ P1 ( σ P2 (R)) = σ P2 ( σ P1 (R)) = σ P1 ^ P2 (R)

3. Conmutación de selección y proyecciónSi P sólo involucra a los atributos A1, ..., An, entonces:

π A1, ..., An ( σ P1 (R)) = σ P1 (π A1, ..., An (R))

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.43Fundamentos de bases de datos

Equivalencias (II)Equivalencias (II)4.- Conmutación de selección y producto cartesiano

Si todos los atributos que aparecen en P son atributos de R1

σ P (R1 x R2) = σ P (R1) x R2

Si P es de la forma P1 ^ P2, donde P1 involucra sólo atributos de R1 y P2 sólo atributos de R2:

σ P (R1 x R2) = σ P1 (R1) x σ P2 (R2)

Si P es de la forma P1 ^ P2, donde P1 involucra sólo atributos de R1 y P2 atributos de R1 y R2:

σ P (R1 x R2) = σ P2 (σ P1 (R1) x R2)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.44Fundamentos de bases de datos

Equivalencias (III)Equivalencias (III)5.- Conmutación de selección y unión de conjuntos

σ P (R1 U R2) = σ P (R1) U σ P (R2)

6.- Conmutación de selección y diferencia de conjuntos σ P (R1 - R2) = σ P (R1) - σ P (R2)

7.- Conmutación de proyección y producto cartesianoSea {A1, ... , An} un conjunto de atributos de los que los k primeros son de R1 y los restantes de R2

π A1, ..., An ( R1 x R2) = π A1, ..., Ak ( R1) x π Ak+1, ..., An ( R2)

8.- Conmutación de proyección y unión de conjuntosπ A1, ..., An ( R1 U R2) = π A1, ..., An ( R1) U π A1, ..., An ( R2)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.45Fundamentos de bases de datos

Valores nulosValores 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 comparaciones con valores nulos devuelven el valor especial cierto desconocido� Si se utiliza falso en lugar de desconocido, entonces no (A < 5) no

sería equivalente a A >= 5

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.46Fundamentos de bases de datos

Valores nulosValores nulos� 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

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.47Fundamentos de bases de datos

Valores nulosValores nulosOPERACIONES� El resultado de la selección (where) de un predicado se trata

como falso si el predicado se evalúa como desconocido� La reunión (inner join) es un productos cartesiano más una

selección (igual que antes). No se incluyen las tuplas que contengan algún valor nulo en los atributos comunes.

� La proyección (select) trata los nulos como otro valor a la hora de eliminar duplicados. ¿desconocido=desconocido es cierto?

� La unión, intersección y diferencia funcionan igual que la proyección aunque no parezca demasiado coherente.

� La proyección generalizada (group by , funciones de agregación)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.48Fundamentos de bases de datos

Valores nulosValores nulosOPERACIONES� El resultado de la selección (where) de un predicado se trata

como falso si el predicado se evalúa como desconocido

� La reunión natural (inner join) es un producto cartesiano más una selección (igual que antes). No se incluyen las tuplas que contengan algún valor nulo en los atributos comunes.

� La proyección (select) trata los nulos como otro valor a la hora de eliminar duplicados. ¿desconocido=desconocido es cierto?

� La unión, intersección y diferencia funcionan igual que la proyección aunque no parezca demasiado coherente.

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.49Fundamentos de bases de datos

Valores nulosValores nulosOPERACIONES

� En la proyección generalizada (group by , funciones de agregación) las tuplas duplicadas se eliminan como en la proyección. Cuando hay valores nulos en una columna sobre la que aplicamos una operación de agregación, se eliminan antes de aplicar la función. Si todos son nulos el resultado es nulo.

� La reunión externa (outer join) funciona igual que la reunión natural y luego se añaden las tuplas que no aparecen en la otra tabla dependiendo de su se trata de un left, right o full,

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.50Fundamentos de bases de datos

Modificación de la base de datosModificació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.

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.51Fundamentos de bases de datos

BorradoBorrado� 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.

� Sólo 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.

Ejemplo: Borrar todos los clientes de Mieresclientes ← clientes – σ ciudad = “Mieres” (clientes)

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.52Fundamentos de bases de datos

InserciónInserció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 ∪ E

donde 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.

� Ejemplo: clientes ← clientes ∪ {(101,“Pepe”,”Lea”,”Oviedo”)}

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.53Fundamentos de bases de datos

ActualizaciónActualización� Un mecanismo para cambiar un valor en una tupla sin cambiar

todos los 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

� EjemploProductos ← ∏ ID_pro,nombre,existencias,precio* 1.1 (σprecio > 10 (Productos))

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.54Fundamentos de bases de datos

Cálculo relacional de tuplasCálculo relacional de tuplas� Un lenguaje de consultas no procedimental, donde cada consulta

tiene la forma

{t | P (t) }� Es el conjunto de todas las tuplas t tales que el predicado P es

cierto para t� t es una variable tupla, t[A] denota el valor de la tupla t en el

atributo A� t ∈ r denota que la tupla t está en la relación r� P es una fórmula similar a la del cálculo de predicado

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.55Fundamentos de bases de datos

Fórmula de cálculo del predicadoFórmula de cálculo del predicado1. Conjunto de atributos y constantes2. Conjunto de operadores de comparación: (por ejemplo, <, ≤, =,

≠, >, ≥)3. Conjunto de conectadores: y (∧ ), o (v)‚ no (¬ )

4. Conjunto de cuantificadores:� ∃ t ∈ r (Q(t)) ≡ ” existe” una tupla en t en la relación r

tal que el predicado Q(t) es cierto� ∀ t ∈ r (Q(t)) ≡ Q es cierto “para todas” las tuplas t en la relación r

Basado en el libro de ©Silberschatz, Korth y Sudarshan3.56Fundamentos de bases de datos

Consultas de ejemploConsultas de ejemplo� Productos que cuestan más de 10 €

{t | t ∈ productos ∧ t [precio] > 1200}

� Nombres de los productos que cuestan más de 10 €{t | ∃ s ∈ productos (t[nombre] = s[nombre]

∧ s [precio] > 10}� Averiguar los nombres de todos los clientes que han realizado

algún pedido el “13-Jun-05” {t | ∃ c ∈ clientes (t[nombre] = c[nombre])∧ ∃ p ∈ pedidos(c[id_cliente] = p[id_cliente] ∧

p[fecha]=“13-Jun-05”)