Unidad V

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 imagen512 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 imagen511 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:
  1. R y S deben tener esquemas idénticos.
  2. 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 imagen516
  • Crea una nueva relación a partir de otra, pero incluyendo sólo algunas de las columnas
  • imagen515 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:

imagen514 title,year,length(Movie) 
title
year
length
Star Wars
1977
124
Mighty Ducks
1991
104
Wayne's World
1992
95

imagen513 filmType(Movie) 
filmType
color

Selección imagen518
  • 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
  • imagen518 A3>16 (R) , imagen518 A3>16 and A3 < 45 (R), imagen518 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:
imagen518 length>=100 (Movie)
title
year
length
filmType
studioName
Star Wars
1977
124
color
Fox
Mighty Ducks
1991
104
color
Disney

imagen518 length>=100 and studioName='Fox' (Movie) 
title
year
length
filmType
studioName
Star Wars
1977
124
color
Fox

imagen517 title,studioName( imagen518 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
LOLO <-- imagen517 title,studioName( imagen518 length>=100 (Movie))
División

Sean 
A B C D
a b c d
a b e f
b c e f
e d c d
e d e f
a b d e
R
C D
c d
e f

S

A B
a b
e d
R / S
Ejemplo: Estudiantes que han tomado todos los cursos de "IS"
imagen517 ID,num ( imagen518depto='IS' (estudiante_cursos)) / imagen517 num( imagen 518depto='IS'(cursos))

Producto cartesiano X

Producto cruz o solo producto

R X S, los esquemas de ambas relaciones se mezclan y unen.

Dados
A B
1 2
3 4
R
B C D
2 5 6
4 7 8
9 10 11
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
imagen518 length>=100 (Movie)
2. Seleccionar aquellas películas que tienen studioName='Fox'
imagen518 studioName='Fox' (Movie)
3. Calcular la intersección de (1) y (2)
imagen518 length>=100 imagen519 imagen518 studioName='Fox' (Movie)
4. Proyectar únicamente title y year
imagen517 title,studioName ( imagen518 length>=100 imagen519 imagen518 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)imagen517 starName ( imagen518 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.



imagen517 t.nombre ( imagen518 s.nombre='carlos' and t.curso='IS341' ( imagen517 s (PROFE) X imagen517 t (CURSO) ) )
Renombrar un atributo
Suponiendo   R (A,B,C)
imagen517 R(A,X,C) (R) imagen520 s(A,X,C) (R) imagen517 A, B as X, C (R) imagen517 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

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:
imagen515F1, 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:
imagen515nombre-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:
imagen515nombre-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.
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.
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)
¿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?
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


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 - imagen551customer-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 imagen552 {(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←imagen516F1, 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:
r ← imagen516F1, 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 ←imagen516nombre-sucursal, número-cuenta, saldo * 1.05 (cuenta)

1 comentario:

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