5. Álgebra Relacional
5.1 Operaciones Fundamentales del Álgebra Relacional
Es un nivel de abstracción más bajo
que el modelo E-R y es la representación en tablas (esquema) del
problema, el cual es práctimente un paso antes del nivel físico.
En las unidades anteriores se han estudiado las
maneras de modelar información de manera "relacional" empleando el
concepto de entidades que se relacionan entre sí.
Ahora presentaremos la manera de hacer consultas a una base de datos empleando algunos conceptos matemáticos aplicados a un esquema relacional. Los lenguajes que se analizan más adelante se derivan precisamente del algebra relacional.
El álgebra relacional consiste de algunas simples pero poderosas maneras de construir nuevas relaciones a partir de otras. Si pensamos que las relaciones iniciales son los datos almacenados entonces las nuevas relaciones se pueden ver como respuestas a algunas consultas deseadas.
Conjunto de operaciones en relaciones
-
R S, la unión de R y S es el conjunto de elementos que están en R o S o ambos. Un elemento solo aparece una sola vez.
-
R S, el conjunto de elementos que aparecen en ambos R y S
- R - S, la diferencia de R y S, el conjunto de elementos que estan en R pero no en S. Es importante resaltar que R - S es diferente a S - R.
- R / S, la división de una relación entre otra, debe cumplirse que para toda tupla en R exista su correspondiente en S.
Restricciones:
- R y S deben tener esquemas idénticos.
- El orden de las columnas debe ser el mismo
Ejemplos:
name | address | gender | birthdate |
Carrie Fisher | 123 Maple St. | F | 9/9/99 |
Mark Hamill | 456 Oak Rd. | M | 8/8/88 |
name | address | gender | birthdate |
Harrison Ford | 789 Palm Dr. | M | 7/7/77 |
Carrie Fisher | 123 Maple St. | F | 9/9/99 |
Unión
name | address | gender | birthdate |
Harrison Ford | 789 Palm Dr. | M | 7/7/77 |
Mark Hamill | 456 Oak Rd. | M | 8/8/88 |
Carrie Fisher | 123 Maple St. | F | 9/9/99 |
Intersección
name | address | gender | birthdate |
Carrie Fisher | 123 Maple St. | F | 9/9/99 |
Resta
name | address | gender | birthdate |
Mark Hamill | 456 Oak Rd. | M | 8/8/88 |
Proyección
- Crea una nueva relación a partir de otra, pero incluyendo sólo algunas de las columnas
- A1,A3,A6 (R)
title
|
year
|
length
|
filmType
|
studioName
|
Star Wars
|
1977
|
124
|
color
|
Fox
|
Mighty Ducks
|
1991
|
104
|
color
|
Disney
|
Wayne's World
|
1992
|
95
|
color
|
Paramount
|
Movie
Ejemplo:
title,year,length(Movie)
title
|
year
|
length
|
Star Wars
|
1977
|
124
|
Mighty Ducks
|
1991
|
104
|
Wayne's World
|
1992
|
95
|
filmType(Movie)
filmType
|
color
|
Selección
- Crea una nueva relación a partir de otra, pero incluyendo sólo algunas de las tuplas a partir de un criterio dado.
- El criterio se basa en restricciones sobre los atributos de la relación R y no pueden incluirse otras relaciones en dicho criterio que no esten en R
- A3>16 (R) , A3>16 and A3 < 45 (R), nombre='Carlos' and edad=45 (R)
title
|
year
|
length
|
filmType
|
studioName
|
Star Wars
|
1977
|
124
|
color
|
Fox
|
Mighty Ducks
|
1991
|
104
|
color
|
Disney
|
Wayne's World
|
1992
|
95
|
color
|
Paramount
|
Movie
Ejemplos:
length>=100 (Movie)
title
|
year
|
length
|
filmType
|
studioName
|
Star Wars
|
1977
|
124
|
color
|
Fox
|
Mighty Ducks
|
1991
|
104
|
color
|
Disney
|
length>=100 and studioName='Fox' (Movie)
title
|
year
|
length
|
filmType
|
studioName
|
Star Wars
|
1977
|
124
|
color
|
Fox
|
title,studioName( length>=100 (Movie))
title
|
studioName
|
Star Wars
|
Fox
|
Mighty Ducks
|
Disney
|
Asignación <--
Almacena temporalmente el resultado de un operación en un relación dada
DivisiónLOLO <-- title,studioName( length>=100 (Movie))
Sean
R
|
S |
A | B |
a | b |
e | d |
R / S
Ejemplo: Estudiantes que han tomado todos los cursos de "IS"
ID,num ( depto='IS' (estudiante_cursos)) / num( depto='IS'(cursos))
Producto cartesiano X
Producto cruz o solo producto
R X S, los esquemas de ambas relaciones se mezclan y unen.
Dados
R
|
S
|
A | R.B | S.B | C | D |
1 | 2 | 2 | 5 | 6 |
1 | 2 | 4 | 7 | 8 |
1 | 2 | 9 | 10 | 11 |
3 | 4 | 2 | 5 | 6 |
3 | 4 | 4 | 7 | 8 |
3 | 4 | 9 | 10 | 11 |
R X S
Combinación de operaciones
Cuáles son los títulos y años de las películas hechas por Fox y que tengan al menos 100 minutos de duración.1.
Seleccionar aquellas películas que tienen length >=100
length>=100 (Movie)2. Seleccionar aquellas películas que tienen studioName='Fox'
studioName='Fox' (Movie)3. Calcular la intersección de (1) y (2)
length>=100 studioName='Fox' (Movie)4. Proyectar únicamente title y year
title,studioName ( length>=100 studioName='Fox' (Movie) )Problema:Dadas las 2 relaciones siguientes, indique un query en algebra relacional para encontrar los nombres de las estrellas que trabajan en películas cuya duración sera mayor o igual que 100.
Movie (title,year,length,filmType,studioName)Movie_star(title,year,starName) starName ( length>=100 (Movie |X| Movie_star)
Renombramiento
A diferencia de las relaciones de la base de datos, los resultados de las expresiones de álgebra relacional no tienen un nombre que se pueda utilizar para referirse a ellas. Resulta útil poder ponerles nombre; el operador renombramiento, denotado por la letra griega rho minúscula (ρ), permite realizar esta tarea. Dada una expresión E del álgebra relacional, la expresión
ρx (E)
devuelve el resultado de la expresión E con el nombre x.
Las relaciones r por sí mismas se consideran expresiones (triviales) del álgebra relacional. Por tanto, también se puede aplicar la operación renombramiento a una relación r para obtener la misma relación con un nombre nuevo.
Otra forma de la operación renombramiento es la siguiente. Supóngase que una expresión del álgebra relacional E tiene aridad n. Por tanto, la expresión ρx (A1, A2, … An) (E)
devuelve el resultado de la expresión E con el nombre x y con los atributos con el nombre cambiado a A1, A2,…, An.
Ej.
t.nombre ( s.nombre='carlos' and t.curso='IS341' ( s (PROFE) X t (CURSO) ) )
Renombrar un atributo
Suponiendo R (A,B,C)
R(A,X,C) (R) s(A,X,C) (R) A, B as X, C (R) B as X (R) = R(A,X,C) = S(A,X,C) = R(A,X,C) = R(X)
5.2 Otras operaciones del álgebra relacional
Investigar las siguientes operaciones:
- Asignación
- Reunión Natural (Producto Natural)
- Intersección
- División
FUNDAMENTOS DE BASES DE DATOS
Cuarta edición
Abraham Silberschatz
Bell Laboratories
Henry F. Korth
Bell Laboratories
S. Sudarshan
Instituto Indio de Tecnología, Bombay
Cuarta edición
Abraham Silberschatz
Bell Laboratories
Henry F. Korth
Bell Laboratories
S. Sudarshan
Instituto Indio de Tecnología, Bombay
5.3 Álgebra relacional extendida
Proyección generalizada
La operación proyección generalizada amplía la operación
proyección permitiendo que se utilicen funciones
aritméticas en la lista de proyección. La operación
proyección generalizada tiene la forma:
proyección generalizada tiene la forma:
F1, F2, …, Fn (E)
donde E es cualquier expresión del álgebra relacional y
F1, F2, …, Fn son expresiones aritméticas que incluyen
constantes y atributos en el esquema de E. Como caso
especial la expresión aritmética puede ser simplemente
un atributo o una constante.
Por ejemplo, supóngase que se dispone de una relación
información-crédito, como se muestra en la figura, que da el límite de crédito y el importe dispuesto
nombre-cliente
|
limite
|
saldo-crédito
|
LEON | 5000 | 1500 |
GARCIA | 2500 | 800 |
HERNANDEZ | 4000 | 700 |
OLIVARES | 1800 | 800 |
hasta el momento presente (el saldo-crédito de la
cuenta). Si se desea averiguar el importe disponible por
cada persona, se puede escribir la expresión siguiente:
nombre-cliente, límite - saldo-crédito (información-crédito)
El atributo resultante de la expresión límite – saldo-crédito no tiene un nombre. Se puede aplicar la operación renombramiento al resultado de la proyección generalizada para darle un nombre. Como conveniencia notacional, el renombramiento de atributos se puede combinar con la proyección generalizada como se ilustra a continuación:
nombre-cliente, (límite – saldo-crédito) as crédito-disponible (información-crédito)
Al segundo atributo de esta proyección generalizada se
le ha dado el nombre crédito-disponible.
nombre-cliente
|
credito-disponible
|
LEON | 3500 |
GARCIA | 1700 |
HERNANDEZ | 3300 |
OLIVARES | 1000 |
Operadores o Funciones de agregación
A | B |
1 | 2 |
3 | 4 |
1 | 2 |
1 | 2 |
- SUM(B)= 10
- AVG(A)= 1.5
- MIN(A)=1
- MAX(B)=4
- COUNT(A)=4
Es importante resaltar que estos operadores nunca devuelven un "valor" sino una relación conteniendo el valor.
SUM(B)
|
10
|
GSUM(B) (R)
Para ilustrar el concepto de agregación se utilizará
la relación trabajo-por-horas,
que muestra los empleados a tiempo parcial. Supóngase
que se desea averiguar la suma total de los sueldos de
los empleados del banco a tiempo parcial. La expresión
del álgebra relacional para esta consulta es:
Gsum(sueldo) (trabajo-por-horas)
El símbolo G es la letra G en el tipo de letra caligráfico;
se lee «G caligráfica». La operación del álgebra relacional
G significa que se debe aplicar agregación, y el
subíndice indica la operación de agregación a aplicar.
El resultado de la expresión anterior es una relación con
un único atributo, que contiene una sola fila con un valor
correspondiente a la suma de los sueldos de todos los
trabajadores que trabajan en el banco a tiempo parcial.
Hay casos en los que se deben borrar los valores repetidos
antes de calcular una función de agregación. Si se
desean borrar los valores repetidos hay que utilizar los
mismos nombres de funciones que antes, con la cadena
de texto «distinct» precedida de un guión añadida al
final del nombre de la función (por ejemplo, count-distinct).
Un ejemplo se da en la consulta «Averiguar el
número de sucursales que aparecen en la relación trabajo-
por-horas». En este caso, el nombre de cada sucursal
sólo se cuenta una vez, independientemente del
número de empleados que trabajen en la misma. Esta
consulta se escribe de la manera siguiente:
Gcount-distinct(nombre-sucursal) (trabajo-por-horas)
El resultado
de esta consulta es el valor 3.
Tarea: Investigar la operación REUNION EXTERNA
5.4 Valores Nulos
Es necesario analizar la forma en la que las
operaciones del álgebra relacional manejan los
valores nulos (y las complicaciones que surgen)
Las operaciones y comparaciones
con valores nulos se deberían
evitar siempre que sea posible.
Valor nulo: Valor desconocido o no existente
Operaciones Aritméticas
Dado que el valor especial nulo indica “valor desconocido o no existente”, cualquier operación aritmética (como +, -, * y /) que incluya valores nulos debe devolver un valor nulo.
Dado que el valor especial nulo indica “valor desconocido o no existente”, cualquier operación aritmética (como +, -, * y /) que incluya valores nulos debe devolver un valor nulo.
Comparaciones
Cualquier comparación (como <, <=, >, >=, = y ≠) que incluya un valor nulo se evalúa al valor especial desconocido Como no se puede decir si el resultado de la comparación es cierto o falso, se dice que el resultado es un nuevo valor lógico denominado desconocido.
Cualquier comparación (como <, <=, >, >=, = y ≠) que incluya un valor nulo se evalúa al valor especial desconocido Como no se puede decir si el resultado de la comparación es cierto o falso, se dice que el resultado es un nuevo valor lógico denominado desconocido.
Operaciones lógicas
Selección
La operación selección evalúa el predicado P en σP(E) sobre cada tupla de E
Si el predicado devuelve el valor cierto, se añade la
tupla al resultado
Si el predicado devuelve desconocido o falso, la tupla
no se añade al resultado.
Proyección
La operación proyección trata los nulos como
cualquier otro valor al eliminar duplicados
La decisión es un tanto arbitraria porque sin saber cuál
es el valor real no se sabe si los dos valores nulos son
duplicados o no.
Unión, Intersección y Diferencia
La unión, intersección y diferencia tratan los
valores nulos de la misma forma que la operación
proyección
El comportamiento es un tanto arbitrario,
especialmente en el caso de la intersección y la
diferencia, dado que no se sabe si los valores reales
(si existen) representados por los nulos son los
mismos.
Tarea: Investigar el tratamiento de
los valores nulos en las siguientes operaciones: Reunión, Proyección
generalizada, Funciones de agregación y Reunión externa. Ademas deberá
proporcionar 2 ejemplos para cada uno.
Ejercicios :
Dada la base de datos, en modelo relacional, compuesta por
los siguientes cuatro esquemas:
Producto (fabricante, modelo, tipo)
PC (modelo, velocidad, ram, disco, cd, precio)
Portatil (modelo, velocidad, ram, disco, pantalla, precio)
Impresora (modelo, color, tipo, precio)
PC (modelo, velocidad, ram, disco, cd, precio)
Portatil (modelo, velocidad, ram, disco, pantalla, precio)
Impresora (modelo, color, tipo, precio)
¿Qué modelos de PC tienen una velocidad de al menos 150?
¿Qué fabricantes producen portátiles con disco duro de por la menos 1 gigabyte?
¿Qué fabricantes producen portátiles con disco duro de por la menos 1 gigabyte?
Encontrar los números de modelo y el precio de todos los
productos elaborados por el fabricante B
Encontrar los números de modelo de todas las impresoras láser color
Encontrar los tamaños de disco duro que ocurren en dos o más computadoras personales
Encontrar los fabricantes de al menos dos computadoras distintas (PC o portátiles) con una velocidad de al menos 133
Encontrar los fabricantes que venden exactamente tres modelos de PC
Encontrar los números de modelo de todas las impresoras láser color
Encontrar los tamaños de disco duro que ocurren en dos o más computadoras personales
Encontrar los fabricantes de al menos dos computadoras distintas (PC o portátiles) con una velocidad de al menos 133
Encontrar los fabricantes que venden exactamente tres modelos de PC
5.5 Operaciones de modificación a la base de datos
Las operaciones anteriores que se han
revisado nos han permitido consultar información de la base de datos.
Ahora veremos la forma en como se puede modificar la información de la
base de datos, realizando operaciones tales como:
- Eliminación
- Inserción
- Actualización
Eliminación
Al realizar este de tipo de operación
el resultado que se obtiene es la eliminación de la(s) tuplas en la
relación.
La selección de las tuplas a eliminar o borrar deben coincidir
con algún criterio. El borrado se realiza sobre toda la tupla y no
sobre los valores de algunos atributos que conforman a la tupla. La
forma de expresar el borrado o eliminación es la siguiente:
r ← r – E
donde r es una relación y E es una consulta del algebra relacional.
Ejemplo:
Eliminar las cuentas de Eric.
impositor ← impositor – σnombre-cliente = 'Gómez' (impositor)
Borrar todos los préstamos con importes entre 0 y
50.
préstamo ← préstamo – σimporte ≥ 0 and importe≤ 50 (préstamo)
depositor <-- depositor - customer-name='Smith'(depositor)
Inserción
Para insertar datos en una relación hay que especificar
la tupla que se va a insertar o escribir una consulta cuyo
resultado sea un conjunto de tuplas que vayan a insertarse.
Evidentemente, el valor de los atributos de las
tuplas insertadas deben ser miembros del dominio de
cada atributo. De manera parecida, las tuplas insertadas
deben ser de la aridad correcta. En el álgebra relacional
las inserciones se expresan mediante
r ← r ∪ E
donde r es una relación y E es una expresión del álgebra
relacional. La inserción de una sola tupla se expresa
haciendo que E sea una relación constante que contiene
una tupla.
cuentas <-- cuentas {(A-973, "Perryridge", 1200)}
Insertar el hecho de que Gómez abre una cuenta (C-
973) en la sucursal de la Plaza Roja de Santiago con
1200 €
cuenta <-- cuenta U {(C-973, “Plaza Roja”, 1200)}
impositor <-- impositor U {(“Gómez”, C-973)}
Actualización
La función de actualización nos será
de utlidad para modificar un valor de alguna tupla sin afectar el resto
de los valores de los atributos. Para esta tarea se utiliza el operador
de proyeccón generalizada:
r←F1, F2, …, Fn (r)
donde cada Fi es el i-ésimo atributo de r, si el i-ésimo
atributo no está actualizado, o, si hay que actualizar el
atributo, una expresión, que sólo implica constantes y
los atributos de r, que da el nuevo valor del atributo.
Si se desea seleccionar varias tuplas de r y sólo actualizar
esas mismas tuplas, se puede utilizar la expresión
siguiente, donde P denota la condición de selección que
escoge las tuplas que hay que actualizar:
escoge las tuplas que hay que actualizar:
r ← F1, F2, …, Fn (σP (r)) ∪ (r – σP (r))
Para ilustrar el uso de la operación actualización
supóngase que se realiza el pago de los intereses y que
hay que aumentar todos los saldos en un 5 por ciento.
Hay que escribir
cuenta ←nombre-sucursal, número-cuenta, saldo * 1.05 (cuenta)
hola a todos, soy adrik vadim y vivo en la ciudad de kurgan, quiero compartir con todos ustedes aquí cómo el señor pedro me ayudó con un préstamo de 15,000,000.00 rublos para comenzar mi entrega de alimentos y bebidas después de todo en lo que tengo trabajo Varios hoteles aquí en Kurgan solo para ganarme la vida, pero lamentablemente todavía tenía dificultades para pagar el alquiler, pero agradezco a Dios ahora que soy un trabajador autónomo ahora con 5 trabajadores trabajando a mi cuidado. solo si está buscando libertad financiera, le aconsejaré que se comunique con el señor pedro con este correo electrónico a continuación pedroloanss@gmail.com
ResponderEliminar