Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
16/10/2012 1 Lenguajes Relacionales Operaciones del AR - Notación Ejemplos sobre un Caso de Estudio Álgebra Relacional (AR) Lenguajes Relacionales Si bien el lenguaje estándar para manipular datos en una base relacional es el SQL, cada SGBD particular (p.e. MySQL, Oracle, SQLServer , etc.) implementa extensiones propias del mismo que hay que tener en cuenta a la hora de la implementación. El AR y los CR (cálculos relacionales) son lenguajes abstractos para expresar operaciones (lo mismo que el MER para el diseño de estructuras de datos). Pueden ser procedimentales, como el AR (que es la base del SQL), cuando requieren expresar cómo realizar una operación para obtener un resultado, o no procedimentales, como el CRT y el CRD (que es la base del QBE - Query By Example), cuando sólo requieren expresar qué resultado se pretende (se especifica el conjunto de tuplas a obtener por comprensión). IBBDD 2 Álgebra Relacional Operaciones IBBDD Álgebra Relacional 3 El AR, el CRT y el CRD son lenguajes relacionales porque sus expresiones relacionan elementos (tuplas) de uno o más conjuntos (tablas) para obtener como resultado un conjunto (tabla) nuevo. En el AR se pueden anidar expresiones tal como se pueden anidar expresiones aritméticas. Los cálculos relacionales se basan en la Lógica de Primer Orden o Cálculo de Predicados. Un predicado es una función booleana con argumentos; cuando se asigna valores a los argumentos el predicado se convierte en una proposición, que puede resultar verdadera o falsa. Pueden conectarse predicados para formar predicados compuestos mediante los conectores lógicos (and), (or) y (not). Operaciones del AR IBBDD Álgebra Relacional 4 Operación Notación Función Selección p (T) Produce una tabla que contiene únicamente aquellas tuplas de T que satisfacen el predicado p. Proyección a1, … an (T) Produce una tabla que tiene un subconjunto de atributos de T eliminando tuplas duplicadas. Unión T1 T2 Produce una tabla que contiene todas las tuplas de T1 o T2, eliminando tuplas duplicadas. T1 y T2 deben ser compatibles (sus esquemas deben ser equivalentes en la cantidad, posición y dominio de los atributos, aunque sus nombres sí pueden ser distintos). Operaciones del AR IBBDD Álgebra Relacional 5 Operación Notación Función Diferencia T1 – T2 Produce una tabla que contiene todas las tuplas de T1 que no se encuentran en T2. T1 y T2 deben ser compatibles. Intersección T1 T2 Produce una tabla que contiene todas las tuplas que se encuentran tanto en T1 como en T2. T1 y T2 deben ser compatibles. Producto cartesiano T1 T2 Produce una tabla concatenando cada tupla de T1 con todas las tuplas de T2. Combinación natural T1 || T2 Produce una tabla concatenando tuplas de ambas tablas que tengan valores iguales en atributos con igual nombre (equicombinación). Se elimina uno de los ejemplares de cada atributo común. Operaciones del AR IBBDD Álgebra Relacional 6 Operación Notación Función Combinación theta T1 || T2 Produce una tabla que contiene las tuplas de la combinación natural de T1 y T2 que cumplen el predicado . Combinación externa izquierda T1 | T2 Produce una tabla concatenando a cada tupla de T1 la tupla de T2 que tenga valores iguales para atributos comunes, y si no hay ninguna completa los atributos de T2 con valores nulos. División T1 T2 Produce una tabla con los atributos de T1 que no están en T2 cuyas tuplas se corresponden con TODAS las tuplas de T2. Renombrado T (Table) Renombra la tabla Table a T. 16/10/2012 2 Operaciones del AR IBBDD Álgebra Relacional 7 División: T1 T2 A(T1) – A((T2 A(T1)) – T1) donde A es la lista de atributos de T1 que no están en T2 Ejemplo: A B a1 b2 a2 b1 a1 b1 a3 b2 a1 b3 B b1 b3 A a1 T1 T2 T1 T2 Factura(nroFac(pk), fecha, fPago, dto) Producto(codProd(pk), desc, existAct, existMin, pVAct) VentaProd((nroFac(fk), codProd(fk))(pk), cant, pvu) Ejemplos Operaciones Unarias Obtención de tuplas de una única tabla, con algunos o todos los atributos de la misma tabla (filtrado de tuplas o de atributos) IBBDD Álgebra Relacional 9 Operaciones Unarias IBBDD Álgebra Relacional 10 Factura(nroFac(pk), fecha, fPago, dto) Producto(codProd(pk), desc, existAct, existMin, pVAct) VentaProd((nroFac(fk), codProd(fk))(pk), cant, pvu) Selección o filtro de tuplas: productos con existencia actual menor o igual a la mínima existAct existMin (Producto) Operaciones Unarias IBBDD Álgebra Relacional 11 Factura(nroFac(pk), fecha, fPago, dto) Producto(codProd(pk), desc, existAct, existMin, pVAct) VentaProd((nroFac(fk), codProd(fk))(pk), cant, pvu) Proyección o filtro de atributos: codProd y desc de Producto codProd, desc (Producto) Operaciones Unarias IBBDD Álgebra Relacional 12 Factura(nroFac(pk), fecha, fPago, dto) Producto(codProd(pk), desc, existAct, existMin, pVAct) VentaProd((nroFac(fk), codProd(fk))(pk), cant, pvu) Proyección y selección: codProd y desc de productos con existencia actual menor o igual a la mínima codProd, desc (existAct existMin (Producto)) 16/10/2012 3 Operaciones de Combinación de Tablas Obtención de tuplas de más de una tabla (o de copias de tablas), con atributos de todas las tablas IBBDD Álgebra Relacional 13 Operaciones de Combinación IBBDD Álgebra Relacional 14 Factura(nroFac(pk), fecha, fPago, dto) Producto(codProd(pk), desc, existAct, existMin, pVAct) VentaProd((nroFac(fk), codProd(fk))(pk), cant, pvu) Combinación de tablas: pares de codProd y la descripción de productos distintos que tengan la misma descripción y que no aparezcan invertidos p1.codProd, p2.codProd, p1.desc p1.desc=p2.desc p1.codProd<p2.codProd (p1 (Producto) p2 (Producto)) Operaciones de Combinación IBBDD Álgebra Relacional 15 Factura(nroFac(pk), fecha, fPago, dto) Producto(codProd(pk), desc, existAct, existMin, pVAct) VentaProd((nroFac(fk), codProd(fk))(pk), cant, pvu) Equicombinación de tablas: nroFac, fecha de factura, codProd, desc y cant de productos vendidos en septiembre de 2011 nroFac, fecha, codProd, desc, cant (Factura||1/9/11 fecha 30/9/11 VentaProd || Producto) Operaciones con Subconsulta de Tablas Obtención de tuplas con atributos de una o más tablas a partir de las tablas de las que se obtiene resultados y de una o más tablas adicionales IBBDD Álgebra Relacional 16 Operaciones con Subconsultas IBBDD Álgebra Relacional 17 Factura(nroFac(pk), fecha, fPago, dto) Producto(codProd(pk), desc, existAct, existMin, pVAct) VentaProd((nroFac(fk), codProd(fk))(pk), cant, pvu) Subconsulta de tablas: código y descripción de productos que no se hayan vendido en septiembre de 2011 codProd, desc (Producto) – codProd, desc (Producto ||VentaProd ||1/9/11 fecha 30/9/11 Factura) Operaciones con Subconsultas IBBDD Álgebra Relacional 18 Factura(nroFac(pk), fecha, fPago, dto) Producto(codProd(pk), desc, existAct, existMin, pVAct) VentaProd((nroFac(fk), codProd(fk))(pk), cant, pvu) Subconsulta de tablas: código y descripción de productos que se hayan vendido todos los días de septiembre de 2011 que hubo ventas CRT {(p.codProd, p.desc) | Producto(p) ( (f.fecha)) (Factura(f) 1/9/11 f.fecha 30/9/11 ( v)(Venta(v) v.codProd=p.codProd v.codFac=f.codFac)) } AR codProd, desc, fecha (Producto || VentaProd ||1/9/11 fecha 30/9/11 Factura) fecha (VentaProd ||1/9/11 fecha 30/9/11 Factura) 16/10/2012 4 Actualización de Tablas en AR IBBDD Álgebra Relacional 19 Producto(codProd(pk), desc, existAct, existMin, pVAct) Incorporar el producto (1235, “pendorchos de 9 mm”, 10, 50): Producto Producto {(1235, “pendorchos de 9 mm”, 10, 50)} Eliminar el producto 893: Producto Producto – codProd=893(Producto)Aumentar el 1% el precio de venta actual de todos los productos: pVAct pVAct * 1,01(Producto)
Compartir