cálculo relacional de tuplas 3.1 operaciones de álgebra...
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”)