Você está na página 1de 9

LGEBRA RELACIONAL

Es un lenguaje de consulta procedimental.


Consta de un conjunto de operaciones que toman una o dos relaciones como
entrada y producen una nueva relacin como resultado.
Las operaciones fundamentales del algebra relacional son suficientes para
expresar cualquier consulta.
Las operaciones principales son:
seleccin
proyeccin
producto cartesiano(de relaciones)
unin
diferencia o resta
renombrar
Si nos restringimos slo a estas operaciones algunas consultas son largas de
expresar se definen como operaciones secundarias.
Las operaciones secundarias son:
interseccin
producto natural
divisin
asignacin
Se definen en trminos de las operaciones fundamentales.
No aaden potencia al algebra relacional pero simplifican consultas comunes.

Las operaciones fundamentales son:


Las operaciones:
- Unarias. Seleccin, proyeccin.
Las otras 3 operaciones:
- Binarias. Unin, resta y producto cartesiano.

Operaciones Fundamentales.
Sean X e Y las siguientes relaciones:

Relacin X Relacin Y
Unin:

XUY

Relacin X Relacin Y

Diferencia:
XY

Relacin X Relacin Y

Proyeccin:

Relacin r Relacin s
Seleccin:

Relacin r Relacin s

Producto Cartesiano:

rxs

Operacin Seleccin:
Selecciona tuplas que satisfacen un predicado dado.

Se usa la letra griega minscula sigma ( ) para indicar la seleccin.


El predicado F aparece como subndice de .
La relacin argumento (r) se escribe a continuacin de entre parntesis.
Ejemplos:
Seleccionar las tuplas de la relacin prstamo en las que la sucursal es
Perryridge.

nombre-sucursal = "Perryridge" (prstamo)


La relacin prstamo es:

La relacin que resulta de la consulta

nombre-sucursal = "Perryridge" (prstamo)


es:

- Encontrar todas las tuplas en las que la cantidad prestada es ms de 1200


dlares.
cantidad > 1200 (prstamo)
- En general, se permiten las comparaciones
= < >
en el predicado de seleccin.
- Encontrar las tuplas en prstamo de ms de 1200 dlares hechas por el
sucursal Perryridge.
nombre-sucursal = "Perryridge" ^ cantidad > 1200
(Prstamo)
Se pueden combinar varios predicados usando los conectores: ^ v
- Supongamos que se tiene el esquema de relacin que indica que un
cliente tiene un banquero personal
servicio (nombre-cliente, nombre-banquero)

- Encontrar los clientes que tienen el mismo nombre que su banquero personal.
nombre-cliente = nombre-banquero (servicio)

- El predicado de seleccin puede incluir comparaciones entre dos atributos.

Operacin Proyeccin:
Es una operacin unaria que devuelve su relacin argumento con ciertas
columnas omitidas.

i1,....,ik(r)
Se listan los atributos que se desea que aparezcan en el resultado como
subndices de .
Dado que el resultado es una relacin, se eliminan todas las filas duplicadas.

Ejemplos:
Obtener una relacin que muestre los clientes y las sucursales en las que
tienen prstamos, pero no la cantidad del prstamo, ni el nmero del prstamo.
nombre-sucursal, nombre-cliente (prstamo)
- El resultado es:
- Encontrar a los clientes que tienen el mismo nombre que su banquero
personal.

- Como vimos esta consulta produce el siguiente resultado.

- Es redundante listar dos veces el nombre de una persona.

- Sera preferible una relacin de un atributo sobre (nombre- cliente) que


liste todos aquellos que tengan el mismo nombre que su banquero
personal.

- La operacin proyectar nos permite producir esta relacin.

nombre-cliente ( nombre-cliente=nombre-banquero (servicio))

- El argumento de la proyeccin puede ser el resultado de otra operacin.

- Es una operacin binaria que permite combinar relaciones.


rxs
- Queremos encontrar todos los clientes del banquero Johnson, y las
ciudades en las que viven estos clientes.

- Se necesita informacin de la relacin servicio y de la relacin cliente.


u = servicio x cliente

u (servicio.nombre-cliente, servicio.nombre-banquero, cliente.nombre-cliente,


cliente.calle, cliente.ciudad-cliente)
- Se listan todos los atributos de las dos relaciones, con el nombre de la
relacin de la que cada atributo procede.

- Se necesita el nombre de la relacin para evitar ambigedad:

servicio.nombre-cliente cliente.nombre-cliente

- Para aquellos atributos que slo aparecen en uno de los dos esquemas, no es
necesario el prefijo.
- El resultado de servicio x cliente es:

Qu tuplas aparecen en r x s?
- Se construye una tupla por cada par posible de tuplas
Para el ejemplo una de la relacin servicio y otra de la relacin cliente.

- Si se tienen n1 tuplas en servicio y n2 en cliente. Entonces existen n1n2


formas de elegir un par de tuplas; de forma que hay n1n2 tuplas en r.

- Grado de una relacin es la cantidad de atributos.

- En general, dadas dos relaciones r(R) y s(S)

rxs
es una relacin cuyo esquema es la concatenacin de R y S
Continuamos con el ejemplo:
- Encontrar a todos los clientes del banquero Johnson y la ciudad en la que
viven.
- Lo resolvemos por etapas:
nombre-banquero = "Johnson" (servicio x cliente)
- El producto cartesiano toma todos los pares posibles de una tupla de servicio
con una tupla de cliente.

- cliente.nombre-cliente puede contener clientes de banqueros que no sean


Johnson.
- servicio.nombre-cliente contiene slo clientes de Johnson.

- Para obtener la ciudad del cliente, interesarn las tuplas en las que:

servicio.nombre-cliente = cliente.nombre-cliente

- As si se escribe

servicio.nombre-cliente = cliente.nombre-cliente ( nombre-banquero="Johnson"(servicio x


cliente))
- Finalmente, como slo se desea nombre-cliente y ciudad-cliente, se hace una
proyeccin:
servicio.nombre-cliente, ciudad-cliente ( servicio.nombre-cliente = cliente.nombre-cliente(
nombre-banquero = "Johnson(servicio x cliente)))

- El resultado de esta expresin es la respuesta correcta a la pregunta.

Você também pode gostar