ALGEBRA RELACION AL Gestin de Base de Datos
ALGEBRA RELACION AL Gestión de Base de Datos – Fabiana Conde
ALGEBRA RELACIONAL • El algebra relacional es un lenguaje de consulta procedimental. Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relación. • Las operaciones fundamentales del algebra relacional son selección, proyección, unión, diferencia de conjuntos, producto cartesiano y renombramiento. • Además de las operaciones fundamentales hay otras apreciaciones, por ejemplo, intersección, reunión natural, división y asignación. Estas operaciones se definirán en función de las operaciones fundamentales.
OPERACIONES FUNDAMENTALES Las operaciones selección, proyección y renombramiento, se denominan operaciones unarias, porque operan sobre una sola relación. Las otras tres operaciones operan sobre pares de relaciones y se denominan por lo tanto operaciones binarias.
SELECCIÒN La operación selección, extrae tuplas que satisfacen un predicado dado. Se utiliza la letra griega sigma minúscula (σ) para denotar la selección. El predicado aparece como subíndice de σ. La relación del argumento se da entre paréntesis a continuación de σ. Ejemplo: para seleccionar las tuplas de la relación Salarios en que la sucursal es <<Estelí>>, hay que escribir: σNom. Suc = << Estelí>>(Salarios) El resultado del primer ensayo de selección seria:
Se pueden buscar todas las tuplas donde el salario sea mayor a $7, 000 escribiendo: σSalario>7000 (Salarios), y el resultado sería el siguiente: En general se permiten las comparaciones que utilizan =, ≠, <, ≤, >, o ≥ en el predicado de selección. Además se pueden combinar varios predicados en uno mayor usando las conectivas “y” (Λ) y “o” (V). por tanto, para encontrar las tuplas correspondientes a la sucursal Estelí, con salarios mayores a 7, 000 hay que escribir: σNom. Suc = << Estelí>> Λ Salario > 7000 (Salarios) y el resultado sería el siguiente: En el caso que el predicado de la operación de selección no genere ninguna tupla el resultado de la selección será un valor especial nulo que expresa valor desconocido o inexistente y se evalúa como falso, por ejemplo: σNom. Suc = << Estelí>> Λ Salario > 8500 (Salarios)
PROYECCIÓN La operación de proyección es una operación unaria que devuelve su relación de argumentos excluyendo algunos de ellos. Dado que las relaciones son conjuntos se eliminan todas las filas duplicadas. La operación de proyección se denota por la letra mayúscula pi (Π). Se crea la lista de atributos que se desea que aparezcan en el resultado como subíndice de Π. La relación de argumentos se escribe a continuación entre paréntesis. Por tanto; la consulta para crear una lista de todos los empleados y sucursales puede escribirse como: Π Nom. Suc, Empleado (Salarios) Resultado:
Dado que las operaciones de algebra relacional se aplican a relaciones y estas a su vez dan como resultado una nueva relación, las expresiones de algebra relacional pueden combinarse para formar una expresión de algebra relacional. Considérese una relación mas compleja, “Encontrar los empleados de la sucursal de Estelí“, en este caso habría que escribir: ΠEmpleado (σNom. Suc = << Estelí>>(Salarios)) Téngase en cuenta que, en vez de dar el nombre de una relación en el argumento de la operación proyección se da una expresión que se evalúa como una relación.
UNION Considérese la relación Incentivos. y la relación Antigüedad: Se desea generar una lista que muestre los empleados que perciben ingresos por incentivos, antigüedad o ambos. Se puede observar que ambas relaciones no satisfacen completamente la lista a generar. No obstante se conoce la manera de generar la lista de empleados de la relación incentivos: ΠEmpleado (Incentivos) de igual manera en la relación Antigüedad: ΠEmpleado (Antigüedad).
Para generar una lista que contenga ambos listados es necesario la operación unión, de estos dos conjuntos; es decir, hacen falta todos los nombres de los empleados que aparecen en alguna de las dos relaciones o en ambas. Estos datos se pueden averiguar mediante la operación binaria unión, denotada igual que en la teoría de conjuntos por U. por tanto la expresión buscada es: ΠEmpleado (Incentivos) U ΠEmpleado (Antigüedad) y el resultado mostraría lo siguiente: Cabe señalar que la operación de unión que efectuamos se dio entre dos relaciones que son compatibles, es decir que poseen el mismo tipo de dominio, como lo es Empleado, no tendría sentido tratar de hacer una operación de unión entre el dominio empleado de la relación incentivo, con el dominio Nom. Suc de la relación Salarios. Además se debe tomar en cuenta el número de campos de la relación, en el caso de incentivos tiene dos campos, mientras que Salarios tiene cinco campos. Por tanto para que la relación que una operación unión r. Us sea válida hay que exigir que se cumplan dos condiciones: • Las relaciones r y s deben tener el mismo número de atributos. • Los dominios de los atributos de r y de s deben ser iguales.
DIFERENCIA DE CONJUNTOS La operación diferencia de conjuntos denotada por el operador aritmético -, permite buscar las tuplas que estén en una relación pero no en otra. La expresión r-s da como resultado una relación que contiene las tuplas que están en r pero no están en s. Se pueden buscar todos los empleados que no tengan incentivos, o antigüedad, escribiendo: ΠEmpleado (Salarios) - ΠEmpleado (Incentivos) ΠEmpleado (Salarios) - ΠEmpleado (Antigüedad)
PRODUCTO CARTESIANO La operación producto cartesiano denotada por una “x” permite combinar información de dos relaciones cualquiera. El producto cartesiano de las relaciones r 1 y r 2 esta dado por r 1 x r 2. Recuérdese que las relaciones se definen como subconjuntos del producto cartesiano de un conjunto de dominios. Dado que en este tipo de relaciones puede existir el mismo nombre de dominio en ambas relaciones como lo es Empleado, en las relaciones Incentivos, Antigüedad, hay que crear un esquema de denominaciones para distinguir entre ambos atributos. En este caso se logra adjuntando al atributo (dominio), el nombre de la relación de la que proviene originalmente. Por ejemplo, el esquema de la relación r= Incentivo x Antigüedad es: (Incentivo. Empleado, Incentivo. Incent, Antigüedad. Empleado, Antigüedad. Antig) El acuerdo de denominaciones precedente exige que las relaciones que sean argumentos de la operación de producto cartesiano tengan nombres diferentes.
RENOMBRAMIENTO A diferencia de las relaciones de la base de datos, los resultados de las expresiones de algebra 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, se le puede resignar un nombre x mediante la siguiente expresión: ρ x(E) devuelve el resultado de la expresión E, con el nombre de x. Las relaciones r por si mismas se consideran expresiones (triviales), del algebra relacional. Por tanto, también se puede aplicar la operación renombramiento a una relación r para obtener una misma relación con un nombre nuevo, de esa manera podemos darle una solución al problema del producto cartesiano cuando intentamos aplicar esta operación con la misma relación. Por ejemplo: Incentivo x ρIncentivo 2(Incentivo)
OPERACIÓN INTERSECCION DE CONJUNTOS • La intersección de conjuntos (∩) comunes a dos relaciones, por ejemplo encontrar los clientes que tienen una cuenta y un préstamo en una sucursal sería: ∏ nombre_cliente( σ nombre_sucursal=”Nombre”(préstamo)∩ ∏ nombre_cliente( σ nombre_sucursal=”nombre” (depósito)) • Cualquier expresión del álgebra relacional que use la intersección de conjuntos puede reescribirse sustituyendo la operación intersección por un par de operaciones diferencia de conjuntos: r ∩ s = r-(r-s). • Así, la intersección de conjuntos no es una operación fundamental y no añade potencia al álgebra.
OPERACIÓN REUNION NATURAL Típicamente, una consulta que implica un producto cartesiano incluye una operación de selección en el resultado del producto. Considérese la consulta “encontrar a todos los clientes que tiene un préstamo y las ciudades en las que viven”. Primero formamos el producto cartesiano de las relaciones préstamo y cliente, después seleccionamos aquellas tuplas que presenten un único nombre_cliente. ∏ préstamo. nombre_cliente, ciudad_cliente ( σ prestamo. nombre_cliente=cliente. nombre_cliente (préstamo x cliente))
DIVISION La operación división (÷) se establece para aquellas consultas que incluyen la frase “para todos”. Supóngase queremos encontrar a todos los clientes que tienen una cuenta en todas las sucursales que están en Brooklyn. Podemos obtener todas las sucursales en Brooklyn mediante: r 1=∏nombre_sucursal(σ ciudad_sucursal=”Brooklyn”(depósito)
ASIGNACION • A veces es conveniente escribir una expresión del álgebra relacional por partes usando la asignación a una variable de relación temporal. La operación asignación (ß), funciona de forma parecida a la asignación de los lenguajes de programación. • La evaluación de una asignación no da como resultado una relación que se presenta al usuario, más bien, el resultado de la expresión a la derecha de ß es asignado a la variable de relación de la parte izquierda. Esta variable de relación puede usarse en subsiguientes expresiones. Con la operación asignación, una consulta puede escribirse como un programa secuencial que consta de una serie de asignaciones seguidas de una expresión cuyo valor se presenta como el resultado de la consulta. En álgebra relacional, la asignación debe hacerse siempre a una variable de relación temporal. Es importante observar que la operación de asignación no proporciona potencia adicional al álgebra, es una forma conveniente de expresar consultas complejas de forma más sencilla
- Slides: 16