Full Transcript

Base de Datos 1 Unidad 4 Álgebra Relacional Repasando conceptos Modelo Relacional Esquema Extensión Tupla Claves Superclave Clave Candidata Clave Primaria Clave Alternativa Clave Foránea Integridad Álgebra relacional Se inspira en la teoría de con...

Base de Datos 1 Unidad 4 Álgebra Relacional Repasando conceptos Modelo Relacional Esquema Extensión Tupla Claves Superclave Clave Candidata Clave Primaria Clave Alternativa Clave Foránea Integridad Álgebra relacional Se inspira en la teoría de conjuntos para especificar consultas en una base de datos relacional. Para especificar una consulta en álgebra relacional, es preciso definir uno o más pasos que sirven para ir construyendo, mediante operaciones de álgebra relacional, una nueva relación que contenga los datos que responden a la consulta a partir de las relaciones almacenadas. Los lenguajes basados en el álgebra relacional son procedimentales, dado que los pasos que forman la consulta describen un procedimiento. Una característica destacable de todas las operaciones del álgebra relacional es que tanto los operandos como el resultado son relaciones. Esta propiedad se denomina cierre relacional. El hecho de que el resultado de una operación del Cierre álgebra relacional sea una nueva relación tiene implicaciones importantes: relacional El resultado de una operación puede actuar como operando de otra operación. El resultado de una operación cumplirá todas las características que ya conocemos de las relaciones: no-ordenación de las tuplas, ausencia de tuplas repetidas, etc. Clasificación de operaciones Según se pueden expresar o no en términos de otras operaciones. Operaciones primitivas: son aquellas operaciones a partir de las cuales podemos definir el resto. Estas operaciones son la unión, la diferencia, el producto cartesiano, la selección y la proyección. Operaciones no primitivas: el resto de las operaciones del álgebra relacional que no son estrictamente necesarias, porque se pueden expresar en términos de las primitivas; sin embargo, las operaciones no primitivas permiten formular algunas consultas de forma más cómoda. Existen distintas versiones del álgebra relacional, según las operaciones no primitivas que se incluyen. Nosotros estudiaremos las operaciones no primitivas que se utilizan con mayor frecuencia: la intersección, la combinación y la división Clasificación de operaciones Según el número de relaciones que tienen como operandos: Operaciones binarias: son las que tienen dos relaciones como operandos. Son binarias todas las operaciones, excepto la selección y la proyección. Operaciones unarias: son las que tienen una sola relación como operando. La selección y la proyección son unarias. Clasificación de operaciones Según se parecen o no a las operaciones de la teoría de conjuntos: Operaciones conjuntistas: son las que se parecen a las de la teoría de conjuntos. Se trata de la unión, la intersección, la diferencia y el producto cartesiano. Operaciones específicamente relacionales: son el resto de las operaciones; es decir, la selección, la proyección, la combinación y la división Modelo ejemplo DESPACHO = @EDIFICIO_ref_1 + @numero + superficie EDIFICIO = @edificio + superficie media despachos EMPLEADO = @DNI + nombre + apellido + [EMPLEADO_ADM + EMPLEADO_PROD] MER Despachos = @edificio + @numero + superficie Edificios_Emp = @edificio + supmediadesp Empleados_Adm = @DNI + nombre + apellido + edificiodesp + numerodesp Empleados_Prod = @DNI + nombre + apellido + edificiodesp + numerodesp MER Modelo ejemplo EDIFICIOS_EMP DESPACHOS edificio supmediadesp edificio número superficie Marina 15 Marina 120 10 Diagonal 10 Marina 230 20 Diagonal 120 10 Diagonal 440 10 EMPLEADOS_ADM DNI nombre apellido edificiodesp númerodesp 40.444.255 Juan García Marina 120 33.567.711 Marta Roca Marina 120 EMPLEADOS_PROD DNI nombre apellido edificiodesp númerodesp 33.567.711 Marta Roca Marina 120 55.898.425 Carlos Buendía Diagonal 120 77.232.144 Elena Pla Marina 230 21.335.245 Jorge Soler NULO NULO 88.999.210 Pedro González NULO NULO RelaX Herramienta desarrollada por Babel JavaScript compiler Grunt blanket.js handlebars la Universidad de Innsbruck bootpag Handsontable (Austria) Bootstrap i18next bootstrap-datepicker jQuery https://dbis- Bootstrap Tour marked - a markdown Browserify parser uibk.github.io/relax/landing CodeMirror PEG.js - Parser Generator Utiliza estos recursos / CSS3 family tree by Ilya Pestov for JavaScript QUnit - js unit testing frameworks / proyectos / FreeSans by GNU tabatkins/railroad-diagrams librerías: FreeFont Modelo con datos group: UNPAZ-BBDD1-AR EMPLEADOS_ADM = {DNI nombre apellido edificiodesp numerodesp EDIFICIOS_EMP = { edificio supmediadesp 40.444.255 Juan Garcia Marina 120 Marina 15 33.567.711 Marta Roca Marina 120 Diagonal 10 } } EMPLEADOS_PROD = {DNI nombre apellido DESPACHOS = {edificio numero superficie edificiodesp numerodesp Marina 120 10 33.567.711 Marta Roca Marina 120 Marina 230 20 55.898.425 Carlos Buendia Diagonal 120 Diagonal 120 10 77.232.144 Elena Pla Marina 230 Diagonal 440 10 21.335.245 Jorge Soler NULL NULL } 88.999.210 Pedro Gonzalez NULL NULL } Las operaciones del álgebra relacional obtienen como resultado una nueva relación. Esta nueva relación debe tener un nombre. El nombre es la misma expresión del álgebra relacional que la obtiene Por ejemplo, EMPLEADOS_ADM ∪ EMPLEADOS_PROD. Operaciones Puesto que este nombre es largo, en ocasiones puede ser interesante cambiarlo por uno más simple. Esto nos facilitará las referencias a la nueva relación Permite utilizarla como operando de otra operación. Usaremos la operación auxiliar asignar con este objetivo. Asignar La operación asignar, que denotaremos con el símbolo =, permite establecer un nombre R a la relación que resulta de una operación del álgebra relacional; lo hace de la forma siguiente: R = E, siendo E la expresión de una operación del álgebra relacional. EMPLEADOS = EMPLEADOS_ADM ∪ EMPLEADOS_PROD. Redenominar Cada operación del álgebra relacional da unos nombres por defecto a los atributos del esquema de la relación resultante, tal y como veremos más adelante. En algunos casos, puede ser necesario cambiar estos nombres por defecto por otros nombres. Por este motivo, también permitiremos cambiar el nombre de la relación y de sus atributos mediante la operación redenominar. Utilizaremos también la operación redenominar para cambiar el esquema de una relación. Si una relación tiene el esquema S(B1, B2,..., Bn) y queremos cambiarlo por R(A1, A2,..., An), lo haremos de la siguiente forma: R=ρ A1 ← B1, A2← B2..., An← Bn (S) ρ nom←nombre, ape←apellido (EMPLEADOS_ADM) ρ nom←nombre, ape←apellido (ρ EMP (EMPLEADOS_ADM)) Operaciones conjuntistas Unión Intersección Diferencia Producto cartesiano Unión La unión es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que están en alguna de las relaciones de partida. La unión es una operación binaria, y la unión de dos relaciones T y S se indica T ∪ S. La unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD proporciona una nueva relación que contiene tanto a los empleados de administración como los empleados de producción; se indicaría así: EMPLEADOS_ADM ∪ EMPLEADOS_PROD. Sólo tiene sentido aplicar la unión a relaciones que tengan tuplas similares (relaciones compatibles) Tienen el mismo grado. Se puede establecer una biyección entre los atributos de T y los Relaciones atributos de S que hace compatibles corresponder a cada atributo Ai de T un atributo Aj de S, de modo que se cumple que dominio(Ai) = dominio(Aj). R = EMPLEADOS_ADM ∪ EMPLEADOS_PROD. R DNI nombre apellido edificiodesp númerodesp 40.444.255 Juan García Marina 120 33.567.711 Marta Roca Marina 120 55.898.425 Carlos Buendía Diagonal 120 77.232.144 Elena Pla Marina 230 21.335.245 Jorge Soler NULO NULO 88.999.210 Pedro González NULO NULO Intersección La intersección es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por las tuplas que pertenecen a las dos relaciones de partida. La intersección es una operación binaria; la intersección de dos relaciones T y S se indica T ∩ S. Los atributos del esquema de la relación resultante de T ∩ S coinciden con los atributos del esquema de la relación T. La extensión de la relación resultante de T ∩ S es el conjunto de tuplas que pertenecen a la extensión de ambas relaciones. R = EMPLEADOS_ADM ∩ EMPLEADOS_PROD. Diferencia La diferencia es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que están en la primera relación y, en cambio, no están en la segunda. La diferencia es una operación binaria, y la diferencia entre las relaciones T y S se indica como T – S. Los atributos del esquema de la relación resultante de T – S coinciden con los atributos del esquema de la relación T. La extensión de la relación resultante de T – S es el conjunto de tuplas que pertenecen a la extensión de T, pero no a la de S. R = EMPLEADOS_ADM – EMPLEADOS_PROD Producto Cartesiano El producto cartesiano es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concatenar tuplas de la primera relación con tuplas de la segunda. El producto cartesiano es una operación binaria. Siendo T y S dos relaciones que cumplen que sus esquemas no tienen ningún nombre de atributo común, el producto cartesiano de T y S se indica como T x S. Producto Cartesiano Los atributos del esquema de la relación resultante de T x S son todos los atributos de T y todos los atributos de S. La extensión de la relación resultante de T x S es el conjunto de todas las tuplas de la forma para las que se cumple que pertenece a la extensión de T y que pertenece a la extensión de S. Recuerden que T y S no tienen ningún nombre de atributo común. Ejemplo Producto Cartesiano El producto cartesiano de las relaciones DESPACHOS y EDIFICIOS_EMP del ejemplo se puede hacer como se indica (es necesario redenominar atributos previamente): EDIFICIOS = ρ edificio->nombreedificio EDIFICIOS_EMP R = EDIFICIOS ⨯ DESPACHOS Entonces, la relación R resultante será: R nombreedificio supmediadesp edificio número superficie Marina 15 Marina 120 10 Marina 15 Marina 230 20 Marina 15 Diagonal 120 10 Marina 15 Diagonal 440 10 Diagonal 10 Marina 120 10 Diagonal 10 Marina 230 20 Diagonal 10 Diagonal 120 10 Diagonal 10 Diagonal 440 10 Es una operación que raramente se utiliza de forma explícita, porque el resultado que da no suele ser útil para resolver las consultas habituales. Producto Se incluye en el álgebra relacional porque es una Cartesiano operación primitiva; a partir de la cual se define otra operación del álgebra, la combinación, que se utiliza con mucha frecuencia. Podemos ver la selección como una operación que sirve para elegir algunas tuplas de una relación y eliminar el resto. Más concretamente, la selección es una operación que, a partir de una relación, obtiene una nueva relación formada por todas las tuplas de la relación de partida Selección que cumplen una condición de selección especificada. La selección es una operación unaria. Siendo C una condición de selección, la selección de T con la condición C se indica como σ C (T) Condición La condición de selección C es una o más cláusulas de la forma: Ai θ v, o bien: Ai θ Aj, Ai y Aj son atributos de la relación T, θ es un operador de comparación (=, ≠, , o ≥) v es un valor. Se cumple que: En las cláusulas de la forma Ai θ v, v es un valor del dominio de Ai. En las cláusulas de la forma Ai, θ Aj, Ai y Aj tienen el mismo dominio. Las cláusulas que forman una condición de selección se conectan con los siguientes operadores booleanos: “y” (∧) y “o” (∨). Los atributos del esquema de la relación resultante de σ C (T) coinciden con los atributos del esquema de la relación T. La extensión de la relación resultante de σ C (T) es el conjunto de tuplas que Esquema pertenecen a la extensión de T y que satisfacen la condición de selección C. Una tupla t satisface una condición de selección C si, después de sustituir cada atributo que hay en C por su valor en t, la condición C se evalúa en el valor cierto. Ejemplo Si queremos obtener una relación R con los despachos de la base de datos del ejemplo que están en el edificio Marina y que tienen una superficie de más de 12 metros cuadrados, haremos la siguiente selección: R = σ (edificio = 'Marina' ∧ superficie > 12) (DESPACHOS) R edificio número superficie Marina 230 20 Podemos considerar la proyección como una operación que sirve para elegir algunos atributos de una relación y eliminar el resto. Más concretamente, la proyección es una operación que, a partir de una relación, obtiene una nueva relación formada por todas las Proyección (sub)tuplas de la relación de partida que resultan de eliminar unos atributos especificados. La proyección es una operación unaria. Siendo {Ai, Aj,..., Ak} un subconjunto de los atributos del esquema de la relación T, la proyección de T sobre {Ai, Aj,..., Ak} se indica como π Ai, Aj,..., Ak (T) Proyección Los atributos del esquema de la relación resultante de π Ai, Aj,..., Ak (T) son los atributos {Ai, Aj,..., Ak}. La extensión de la relación resultante de π Ai, Aj,..., Ak (T) es el conjunto de todas las tuplas de la forma , donde se cumple que t es una tupla de la extensión de T y donde t.Ap denota el valor para el atributo Ap de la tupla t Eliminación de las tuplas repetidas Noten que la proyección elimina implícitamente todas las tuplas repetidas. El resultado de una proyección es una relación válida y no puede tener repeticiones de tuplas. Ejemplo Si queremos obtener una relación R con el nombre y el apellido de todos los empleados de administración de la base de datos del ejemplo, haremos la siguiente proyección: R = π nombre, apellido (EMPLEADOS_ADM) Entonces, la relación R resultante será: R nombre apellido Juan García Marta Roca La combinación es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concadenar tuplas de la primera relación con tuplas de la segunda, y que cumplen una condición Combinación de combinación especificada. La combinación es una operación binaria. Siendo T y S dos relaciones cuyos esquemas no tienen ningún nombre de atributo común, y siendo B una condición de combinación, la combinación de T y S según la condición B se indica T ⨝ B S. Condición En general, la condición B de una combinación T ⨝ B S está formada por una o más comparaciones de la forma Ai θ Aj, donde Ai es un atributo de la relación T, Aj es un atributo de la relación S, θ es un operador de comparación (=, ≠, , o ≥) y se cumple que Ai y Aj tienen el mismo dominio. Los atributos del esquema de la relación resultante de T ⨝ B S son todos los atributos de T y todos los atributos de S. La extensión de la relación resultante de T ⨝ B S es el conjunto de tuplas que pertenecen a la Esquema y extensión del producto cartesiano T x S y que satisfacen todas las comparaciones que forman Extensión la condición de combinación B. Una tupla t satisface una comparación si, después de sustituir cada atributo que figura en la comparación por su valor en t, la comparación se evalúa al valor cierto. Recuerden que T y S no tienen ningún nombre de atributo común. Ejemplo Supongamos que se desea encontrar los datos de los despachos que tienen una superficie mayor o igual que la superficie media de los despachos del edificio donde están situados. La siguiente combinación nos proporcionará los datos de estos despachos junto con los datos de su edificio (observen que es preciso redenominar previamente los atributos): EDIFICIOS = ρ edificio->nombreedificio EDIFICIOS_EMP R = EDIFICIOS ⨝ (nombreedificio = edificio ∧ supmediadesp ≤ superficie) DESPACHOS R nombreedificio supmediadesp edificio número superficie Marina 15 Marina 230 20 Diagonal 10 Diagonal 120 10 Diagonal 10 Diagonal 440 10 Ejemplo Obtener los datos de cada uno de los empleados de administración, junto con los datos del despacho donde trabajan, utilizamos la siguiente combinación: R = EMPLEADOS_ADM ⨝ (edificiodesp = edificio ∧ númerodesp = número) DESPACHOS La relación R resultante será: R DNI nombre apellido edificiodesp númerodesp edificio número superficie 40.444.255 Juan García Marina 120 Marina 120 10 33.567.711 Marta Roca Marina 120 Marina 102 10 Equicombinación La combinación recibe el nombre de θ -combinación, y cuando todas las comparaciones de la condición de la combinación tienen el operador “=”, se denomina equicombinación. Según esto, la combinación del último ejemplo es una equicombinación. Observen que el resultado de una equicombinación siempre incluye una o más parejas de atributos que tienen valores idénticos en todas las tuplas. En el ejemplo anterior, los valores de edificiodesp coinciden con los de edificio, y los valores de númerodesp coinciden con los de número. Puesto que uno de cada par de atributos es superfluo, se ha establecido una variante de combinación denominada combinación natural, con el fin de eliminarlos. La combinación natural de dos relaciones T y S se denota como T⨝S y consiste básicamente en una equicombinación seguida de la Combinación eliminación de los atributos superfluos; además, se considera por defecto que la Natural condición de combinación iguala todas las parejas de atributos que tienen el mismo nombre en T y en S. Observen que, a diferencia de la equicombinación, la combinación natural se aplica a relaciones que tienen nombres de atributos comunes. Ejemplo Si hacemos: R = EDIFICIOS_EMP ⨝ DESPACHOS se considera que la condición es edificio = edificio porque edificio es el único nombre de atributo que figura tanto en el esquema de EDIFICIOS_EMP como en el esquema de DESPACHOS. El resultado de esta combinación natural es: R edificio supmediadesp número superficie Marina 15 120 10 Marina 15 230 20 Diagonal 10 120 10 Diagonal 10 440 10 Ejemplo combinación natural con redenominación obtener los datos de cada uno de los empleados de administración junto con los datos del despacho donde trabajan, pero sin repetir valores de atributos superfluos, haremos la siguiente combinación natural, que requiere una redenominación previa: D = ρ edificio→ edificiodesp, numero→ numerodesp (DESPACHOS) R = EMPLEADOS_ADM ⨝ D Entonces, la relación R resultante será: R DNI nombre apellido edificiodesp númerodesp superficie 40.444.255 Juan García Marina 120 10 33.567.711 Marta Roca Marina 120 10 División Formalmente, sean r(R) y s(S) relaciones y S ⊂ R; es decir, todos los atributos del esquema S están también en el esquema R. La relación r ÷ s es una relación del esquema R - S (es decir, del esquema que contiene todos los atributos del esquema R que no están en el esquema S). Una tupla t está en r ÷ s si y sólo si se cumplen estas dos condiciones: 1. t está en π R-S (r) 2. Para cada tupla ts de s hay una tupla tr de r que cumple las dos condiciones siguientes: a. tr[S] = ts[S] b. tr[R - S] = t División La operación división, denotada por ÷, resulta adecuada para las consultas que incluyen la expresión “para todos”. Secuencias de operaciones En muchos casos, para formular una consulta en álgebra relacional es preciso utilizar varias operaciones, que se aplican en un cierto orden. Para hacerlo, hay dos posibilidades: Utilizar una sola expresión del álgebra que incluya todas las operaciones con los paréntesis necesarios para indicar el orden de aplicación. Descomponer la expresión en varios pasos donde cada paso aplique una sola operación y obtenga una relación intermedia que se pueda utilizar en los pasos subsiguientes. Obtener el nombre y el apellido de los empleados, tanto de administración como de producción Hacer una unión de EMPLEADOS_ADM y EMPLEADOS_PROD, y después hacer una proyección sobre los atributos nombre y apellido. La operación se puede expresar de las formas siguientes: Ejemplo a) Se puede utilizar una sola expresión: R = π nombre, apellido (EMPLEADOS_ADM ∪ EMPLEADOS_PROD) b)O bien podemos expresarlo en dos pasos: EMPS = EMPLEADOS_ADM ∪ EMPLEADOS_PROD R = π nombre, apellido EMPS Práctica Álgebra Relacional MER Artículos = @Nro_Art + Desc + Peso + Color + Ciudad Contratos = @Nro_Art + @Nro_Prov + Cantidad Proveedores = @Nro_Prov + Nombre + Categoria + Ciudad Modelo con Datos para RelaX group: UNPAZ-BBDD1-ARP1 CONTRATOS = { PROVEEDORES = { NPROV:number, NART:number, CANT:number NPROV:number, NOMBRE:string, CATEGORIA:number, CIUDAD:string 1,10,300 1,Jaime,20,Cordoba 6,20,100 6,Celia,20,Cordoba 1,60,200 3,ACME,30,Rosario 1,50,400 4,Gonzalez,10,Rosario 3,60,200 5,XXX,10,Trelew 1,40,100 } 4,10,100 ARTICULOS = { 4,60,300 NART:number, DESCR:string, PESO:number, COLOR:string, CIUDAD:string 4,30,400 10,A,5,Rojo,Jujuy 1,30,200 20,F,7,Rojo,Rosario 3,20,200 30,A,5,Azul,Cordoba 4,20,300 40,Z,3,Verde,Cordoba 3,10,150 50,C,1,Verde,Rosario } 60,W,9,Rojo,Cordoba } Ejercicios 1. Listar el número de todos los artículos 2. Listar el número, nombre, categoría y ciudad de todos los proveedores 3. Obtener el número y la categoría de los proveedores residentes en Rosario. 4. Listar el nro de proveedor de aquellos proveedores de Rosario cuya categoría sea mayor a 20. 5. Listar el número de los proveedores cuya categoría no sea 20. 6. Listar los datos de los proveedores que suministran el artículo 20. 7. Listar el número de proveedor que no suministra el artículo 20 8. Listar número de proveedores con la misma categoría que el proveedor 6. 9. Listar el número de Proveedor, artículo y ciudad para aquellos proveedores y artículos que residen en la misma ciudad. 10. Se desea una lista con número de proveedor, número de artículo y nombre de la ciudad de aquellos Proveedores que suministran artículos que se depositan en la misma ciudad donde ellos residen. Ejercicios 11. Listar el número de aquellos artículos suministrados por proveedores residentes en córdoba. 12. Listar la descripción de los artículos depositados en Córdoba que son suministrados por proveedores residentes en Córdoba. 13. Obtener el número de aquellos artículos cuyo peso esté entre 4 y 8 kilos o sean provistos por el proveedor 3. 14. Obtener la descripción de los artículos que se depositan en la misma ciudad donde está el depósito del artículo 50. 15. Obtener los detalles de los proveedores que suministra los artículos 10 o 60. 16. Obtener los detalles de los proveedores que suministran los artículos 10 y 60 17. Obtener el nombre de aquellos proveedores que suministran el artículo 10 18. Obtener el nombre de aquellos proveedores que no suministran el art 10 19. Obtener los detalles de los proveedores que suministran todos los artículos.

Use Quizgecko on...
Browser
Browser