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.
El álgebra relacional es un lenguaje de consulta procedural. Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relación, por lo tanto, es posible unir y combinar operadores. Hay ocho operadores en el álgebra relacional que construyen relaciones y manipulan datos, estos son:
1. Selección | 2. Proyección | 3. Producto |
4. Unión | 5. Intersección | 6. Diferencia |
7. JOIN | 8. División |
Los operadores tienen símbolos que los identifican (en color rojo), ellos son:
Unión ∪ Selección donde o σ
Intersección ∩ Proyección [ ] o π
Diferencia − Concatenación Natural ∞
Producto Cartesiano × División
Al describir las propiedades de cada operador se van a utilizar una serie de términos que debemos definir previamente. En primer lugar se presentará una adaptación del concepto de relación matemática en la que se vuelve a hacer uso de la ordenación de las componentes de una tupla. El resto, son expresiones o reformulaciones de conceptos ya presentes en la definición del modelo.
Relación
El AR hace uso del orden de las componentes de las tuplas para definir operadores y propiedades de los operadores. En realidad, se trata de retomar la definición original de la relación matemática como el subconjunto de un producto cartesiano de n dominios, de tal forma que las tuplas resultado de ese producto cumplían y cumplen que
Las tuplas son listas de valores (conjunto ordenado) tal que el i-ésimo valor pertenece al i-ésimo dominio.
Vamos a combinar la definición anterior de tupla con la adaptación que en su momento introdujimos a la relación matemática para adecuarla al objetivo final que es una base de datos. Utilizaremos al mismo tiempo los nombres de atributos y el orden de las componentes en una tupla:
El conjunto de nombres de atributos es un conjunto ordenado.
Las tuplas son listas de valores (conjunto ordenado) tal que el i-ésimo valor pertenece al i-ésimo dominio asociado al i-ésimo nombre de atributo.
A partir de ahora, los operadores pueden utilizar tanto el nombre simbólico de un atributo como su orden dentro de la tupla.
Esquema de relación
Es la descripción formal de la relación con sus atributos y dominios asociados. En realidad se aplica únicamente a las relaciones nominadas, aquellas descritas en el esquema lógico relacional.
donde: R es el nombre de la relación
Ai es el nombre del atributo
Di es el nombre del dominio asociado a Ai
nombres cualificados de atributo
Es, por decirlo así, el nombre completo de un atributo, por ejemplo R.Ai , el atributo Ai de la relación R. Su uso evita la ambigüedad de dos atributos en dos tablas distintas con el mismo nombre.
En general, nos referimos a los atributos por su nombre sin especificar la relación a la que pertenecen. No obstante, es habitual que en distintas relaciones, y sobre todo en las relaciones derivadas (los resultados de operar con relaciones nominadas), nos podamos encontrar nombres de atributo coincidentes en relaciones distintas. La forma de diferenciar unos de otros es utilizar los nombres cualificados: “alumno.nombre”, “asignatura.nombre”.
En definitiva, se pueden utilizar indistintamente, siempre y cuando no se produzcan ambigüedades, las dos formas ya conocidas de referirse a un atributo:
• nombre cualificado: R.Ai
• nombre no cualificado: Ai
alias de una relación
Nombre alternativo para una relación. Dada una relación R se define un alias mediante la declaración:
definir alias S para R
Entonces la relación puede referenciarse tanto por R como por S, y los nombres cualificados de atributos R.Ai o S.Ai .
relación nominada
Es toda relación definida en el esquema lógico relacional. En otras palabras, las que constituyen nuestra base de datos.
relación derivada
Es aquella que se obtiene como resultado de una expresión del Álgebra Relacional.
Una relación derivada no tiene nombre ni alias. Así pues, los nombres de los atributos de ésta se obtendrán a partir de los nombres cualificados de atributos de las relaciones operando, y si existe ambigüedad se utilizarán los alias.
Las reglas que rigen en los operadores para la asignación de nombres a los atributos de relaciones derivadas se verán con cada uno de ellos.
relaciones compatibles
Dos relaciones son compatibles si el grado de ambas es el mismo y los dominios asociados a los i-ésimos atributos de cada una son iguales.
R y S son compatibles si y sólo si:
1) n = m
2) ∀i Di = Ei (1 ≤ i ≤ n)
Dicho de otra forma, el número de atributos ha de ser el mismo en ambas relaciones y, además, los dominios han de ser los mismos para atributos de la misma posición.
Dentro del conjunto de operadores algunos de ellos son básicos o fundamentales y otros son derivados o forman parte de los operadores de extensión del álgebra relacional (AR).
Mediante el siguiente gráfico se pueden apreciar las distintas operaciones y sus resultados.
Para ejecutar algunas operaciones se deben cumplir algunas restricciones:
- En las operaciones de UNION, INTERSECCIÓN y DIFERENCIA las relaciones deben ser compatibles.
- En la CONCATENACIÓN o JOIN deben existir atributos comunes, de lo contrario el resultado será el producto cartesiano.
- Para la DIVISIÓN, se debe cumplir que existan atributos comunes
* de no haberlos, el resultado es vacío de tuplas
* los únicos del divisor
* los últimos del dividendo
* en el mismo orden en dividendo y divisor
Para comprender los operadores consideremos las siguientes relaciones:
Dueño = {rut, nombre, teléfono, dirección, vigencia}
Chofer = {rut, nombre, teléfono, dirección, fecha_licencia_desde, fecha_licencia_hasta, vigencia}
Vale = {correlativo, hora_desde, hora_hasta, metraje_total, tarifa_total}
Móvil = {patente, rut_dueño, rut_chofer, marca, modelo, año}
Viaje = {correlativo_vale, patente_movil, Hora_Desde, hora_hasta, origen, destino, tarifa, metraje}
El operador de selección opta por tuplas que satisfagan cierto predicado, se utiliza la letra griega sigma minúscula (σ) para señalar la selección. El predicado aparece como subíndice de σ. La Relación que constituye el argumento se da entre paréntesis después de la σ.
Ejemplo :
La operación de proyección permite quitar ciertos atributos de la relación, esta operación es unaria, copiando su relación base dada como argumento y quitando ciertas columnas, La proyección se señala con la letra griega pi mayúscula (Π). Como subíndice de Π se coloca una lista de todos los atributos que se desea aparezcan en el resultado. La relación argumento se escribe después de Π entre paréntesis.
Ejemplos : Considere las siguientes relaciones
Dueño = {rut, nombre, teléfono, dirección, vigencia}
Chofer = {rut, nombre, teléfono, dirección, fecha_licencia_desde, fecha_licencia_hasta, vigencia}
π nombre,rut (Dueño) --> Proyecta solo el nombre y ruta
π nombre,licencia,vigencia (Chofer) --> Proyecta el nombre la licencia y vigencia de los choferes
Notación: π lista de atributos (R)
Es una tabla obtenida de R al eliminar los atributos no-especificados.
En la tabla resultante aparecen los atributos en el mismo orden que en la lista.
Los renglones duplicados se eliminan.
En álgebra relacional la unión de dos relaciones compatibles A y B es:
A UNION B o A ∪ B
Produce el conjunto de todas las tuplas que pertenecen ya sea a A o a B o a Ambas. Al igual que en teoría de conjuntos el símbolo ∪ representa aquí la unión de dos relaciones.
Ejemplo : Sean la relaciones
Dueño = {rut, nombre, teléfono, dirección, vigencia}
Chofer = {rut, nombre, teléfono, dirección, fecha_licencia_desde, fecha_licencia_hasta, vigencia}
La UNION Devuelve todos los Dueños y los Choferes.
Es la tabla que contiene las tuplas de la primera relación además de las tuplas de la segunda relación.
En álgebra relacional la diferencia entre dos relaciones compatibles A y B
A MENOS B o A – B
Produce el conjunto de todas las tuplas t que pertenecen a A y no pertenecen a B.
Ejemplo: Considere las siguientes relaciones.
En álgebra relacional el producto de dos relaciones A y B es:
A Veces B o A X B
Produce el conjunto de todas las tuplas t tales que t es el encadenamiento de una tupla a perteneciente a A y de una b que pertenece a B. se utiliza el símbolo X para representar el producto.
Ejemplos:
Permite combinar información de cualquier par de relaciones.
R x S = { tq | t ∈∈ r and q ∈∈ s}.
Si R y S tienen atributos en común es necesario renombrarlos o cualificar los nombres de los atributos. Para evitar ambigüedades se precede el nombre del
El operador renombramiento permite ponerle nombre a las relaciones “resultado” de operaciones de algebra relacional. Se denota con la letra “ρ”
ρx(E)
La anterior expresion retorna la expresion E con el nombre x. Tambien se pueden renombrar los atributos de E.
ρx(a1, a2, …, an)(E)
Ejemplo:
ρ Totales (Empleados X Clientes)
La relación resultante se denomina "Totales" y es la generada por el producto cartesiano de Empleados por Clientes
Como se puede ver esta operación es muy sencilla.
atributo con el nombre de la relación.
Intersección
En álgebra relacional la intersección de dos relaciones compatibles A y B, A INTERSECCION B o A ∩ B
Produce el conjunto de todas las tuplas pertenecientes a A y B. Al igual que en teoría de conjuntos el símbolo ∩ representa aquí la intersección entre dos relaciones.
Ejemplo: Considera las siguientes relaciones
El JOIN Natural es una operación binaria que permite combinar ciertas selecciones y un producto cartesiano en una sola operación. Se denota por el símbolo: ⋈
La reunión natural expresada en operaciones básicas equivale a:
R (X1;X2; ... Xm; Y1;Y2; ... ;Yn)
S (Y1;Y2; ... ;Yn; Z1; Z2; ... ; Zp)
Relación con atributos X, Y, Z y poblado por el conjunto de tuplas que tienen igual valor de Y en R y en S.
π R U S (σ R.Y1=S.Y1 ^ R.Y2=S.Y2 ^...^ R.Yn=S.Yn (R X S))
Si las relaciones R y S no tienen nombres de atributos en común entonces A ⋈ B = A X B
Notación: R ⋈θ S
Equivalente al Join sólo que se permite usar cualquier condición de comparación. θ.
El resultado se construye:
R ⋈θ S
es equivalente a: σ θ (R X S)
Observa el siguiente ejemplo:
Aplica las operaciones vistas hasta el momento a tu modelo relacional ya creado y comprueba que obtengas resultados válidos para la toma de decisiones.
Sean R y S dos relaciones con esquemas
(A1, ... ,An;B1, ... ,Bm) y (B1, ... , Bm) respectivamente.
La operación:
(R ÷ S)
da como resultado otra relación
PROYECCIÓN GENERALIZADA
Esta función amplía la proyección permitiendo que se utilicen funciones aritméticas en la lista de proyección. La operación proyección generalizada tiene la forma siguiente:
donde E es cualquier expresión del álgebra relacional y F1, F2, ... ,Fn son expresiones aritméticas que incluyen constantes y atributos pertenecientes al esquema E. Como caso especial la expresión aritmética puede ser simplemente un atributo o una constante. Cuando se hace uso de esta operación generalizada se recomienda dar nombre al atributo o columna generada con la función que se aplique.
Ejemplo: Suponga el esquema Tarjeta_credito (num-tarjeta, credito-disponible, limite-credito, vigencia, tipo) y se desea conocer lo gastado.
num-tarjeta | credito-disponible | limite-credito | vigencia | tipo |
025 | 500 | 2500 | 01/2018 | Visa |
521 | 2800 | 10000 | 05/2017 | Mastercard |
650 | 800 | 1000 | 04/2016 | Mastercard |
π num-tarjeta, (limite-credito - credito-disponible) AS credito-utilizado (Tarjeta_credito)
la relación o esquema resultante sería a manera de ejemplo claro esta:
num-tarjeta | credito-utilizado |
025 | 2000 |
521 | 7200 |
650 | 200 |
Te invito a que realices mas ejercicios con tu equipo de trabajo o compañeros de grupo para entender mejor y aplicar correctamente esta operación.
Este tipo de operaciones se pueden como su nombre lo dice agregar a la operación de proyección, dichas operaciones toman un conjunto de valores y retornan o proyectan un valor ÚNICO. Las operaciones que veremos son:
-SUM: retorna la suma de los valores
-AVG: retorna la media de los valores
-MIN: retorna el mínimo de los valores
-MAX: retorna el máximo de los valores
-COUNT: retorna el número de elementos del conjunto
La forma general:
g1, g2…gn G f1(a1), f2(a2).. Fm(am)(E)
Donde:
g1,g2,…gn constituye la lista de atributos que indica como se realiza la agrupación.
fi es una función de agregación y ai es un nombre del atributo.
Considere el siguiente esquema Tarjeta-credito:
num-tarjeta | credito-disponible | limite-credito | vigencia | tipo |
025 | 500 | 2500 | 01/2018 | Visa |
521 | 2800 | 10000 | 05/2017 | Mastercard |
650 | 800 | 1000 | 04/2016 | Mastercard |
Ejemplo de SUM
Supongamos que nos interesa conocer el total de credito que se otorga a todos los clientes.
G sum(limite-credito) (Tarjeta-credito)
limite-credito |
13500 |
Ahora si deseamos conocer el total de los limites de créditos por tipo de tarjeta tendriamos lo siguiente:
tipo G tipo, sum(limite-credito) AS total-credito-tipo (Tarjeta-credito)
tipo | total-credito-tipo |
Visa | 2500 |
Mastercard | 11000 |
Ejemplo de AVG
Supongase que se desea calcular el promedio de los créditos disponibles.
G avg(credito-disponible) (Tarjeta-credito)
Como podras observar las funciones de agregación son operaciones sencillas y que se pueden aplicar en combinación con las operaciones básicas.