lenguajes de manipulacion de datos y algebra relacional

Upload: joaquineveron

Post on 04-Nov-2015

232 views

Category:

Documents


0 download

DESCRIPTION

Algebra y manipulacion

TRANSCRIPT

El Modelo Relacional

Lenguajes de Manipulacin de DatosModelo Relacional11 de junio de 2015UPC-Ing. Sistemas1Lenguajes de Manipulacin de DatosSon lenguajes que el usuario utiliza para consultar y modificar la base de datos.Procedimentales:Se instruye al sistema para llevar a cabo una serie de operaciones en la BD para calcular el resultado (lgebra Relacional)No Procedimentales:Se describe la informacin deseada sin establecer el procedimiento para obtenerla (Clculo Relacional)Lenguajes de Manipulacin de Datos Evolucin histricaJunio 1970 E. Codd A relational Model of data for large shared databanks1974 SEQUEL (laboratorios de IBM)1976 SQL (SEQUEL 2)Dcada del 80 Se comercializan productos basados en SQLSQL/86, SQL/89, SQL/92 Estndares ANSISQL/99 para soporte de datos de naturaleza complejalgebra RelacionalEs un lenguaje de procedimientos de alto nivel que permite, mediante el uso de ciertos operadores, derivar las tablas deseadas desde las tablas base del modelo relacional.

Consta de un conjunto de operadores que toman como entrada una o dos relaciones y producen como resultado una nueva relacin.

lgebra RelacionalOperaciones fundamentales:Seleccin, Proyeccin, Unin, Diferencia, Producto Cartesiano y Renombramiento

Otras operaciones, que pueden definirse en trminos de las operaciones fundamentales:Interseccin, Reunin natural (JOIN) y DivisinEl Algebra Relacional en el DBMSanalizadorSQLExpresinen lgebrarelacionalExpresinoptimizadaen lgebrarelacionalOptimizador deConsultasGeneradorde cdigoPlan deejecucinCdigoejecutableDBMSExtrae tuplas de una relacin dada que satisfacen una condicin especfica.Smbolo: s (sigma)Trmino Comn: (WHERE)Operadores Relacionales SELECCINNotacin: s condicin (Relacin)Operadores Relacionales SELECCINPrestamoN_Sucursal#Prestamo$ImporteMirafloresP-17200,000La AuroraP-23400,000Lima CercadoP-15300,000ChacarillaP-14300,000PrimaveraP-93100,000SurquilloP-11180,000La MolinaP-16260,000s N Sucursal = (Prestamo)N_Sucursal#Prestamo$ImporteMirafloresP-17200,000Extrae atributos especficos de una relacin dadaSmbolo: Trmino Comn: PROJECTOperadores RelacionalesPROYECCINNotacin: atributo 1, atributo 2, ... Atributo n (Relacin)Operadores Relacionales PROYECCIN # Prstamo, $ Importe (Prstamo)#Prestamo$ImporteP-17200,000P-23400,000P-15300,000P-14300,000P-93100,000P-11180,000P-16260,000Operadores Relacionales Composicin de Operaciones Relacionales El resultado de una operacin relacional es una relacinLas operaciones relacionales se pueden componer para formar una expresin del lgebra relacional (igual que las expresiones aritmticas)Ejemplo: Mostrar el atributo #prstamo de aquellas sucursales cuyo nombre es Miraflores de la relacin Prstamo. # Prstamo (s N Sucursal = (Prestamo))Construye una relacin formada por todas las tuplas que aparecen en cualquiera de dos relaciones especificas, eliminndose las duplicadasSmbolo: Trmino Comn: UNIONOperadores RelacionalesUNINNotacin: R1 R2Las relaciones deben ser Compatibles: la misma cantidad de atributos, y los atributos correspondientes deben provenir del mismo dominioOperadores Relacionales Titular_cuentaPrestatarioEJEMPLO:N_Cliente#CuentaSantosC-101GmezC-215LpezC-102AbrilC-305GonzlezC-201SantosC-217RodrguezC-222N_Cliente#PrestamoSantosP-17GmezP-23LpezP-15SotoP-14PrezP-93GmezP-11FernndezP-16Se desea averiguar todos los clientes que tienen una cuenta, un prstamo o ambos:Operadores Relacionales UNIONSe desea averiguar todos los clientes que tienen una cuenta, un prstamo o ambos: N Cliente (Titular_cuenta) N Cliente (Prestatario) N_ClienteGonzlezSantosRodrguezLpezAbrilSotoPrezGmezFernndezDadas dos relaciones especficas, construye una tercera relacin formada por todas las tuplas de la primera relacin que no aparecen en la segunda.Smbolo: Trmino Comn: MINUSOperadores Relacionales DIFERENCIANotacin: R1 R2Las relaciones deben ser CompatiblesR1R2Operadores Relacionales DIFERENCIASe desea averiguar todos los clientes que tienen abierta una cuenta, pero que no tienen concedido ningn prstamo: N Cliente (Titular_cuenta) N Cliente (Prestatario) N_ClienteGonzlezRodrguezAbrilDadas dos relaciones especficas, construye una tercera relacin que contiene todas las combinaciones posibles de tuplas, una de cada una de las relaciones.Aa1a1a2a2a3a3R3b1b2b1b2b1b2BR2XABa1a2a3b1b2R1Smbolo: Trmino Comn: TIMESOperadores Relacionales PRODUCTO CARTESIANODadas dos relaciones Compatibles especficas, construye una tercera relacin formada por todas las tuplas que aparecen en ambas relaciones.Operadores Relacionales INTERSECCINSmbolo: Trmino Comn: INTERSECTNotacin: R1 R2Equivalencia: R1 R2 = R1 - (R1 - R2)Resultado:Cabecera - idntica a la de R1 R2Cuerpo - todas las tuplas que aparecen en R1 y en R2 a la vez.Operadores Relacionales INTERSECCINR1 R2Operadores Relacionales INTERSECCIN - Ejemplo

Averiguar los clientes que tienen un prstamo concedido y una cuenta abierta N Cliente (Prestatario) N Cliente (Titular-cuenta)Titular_cuentaPrestatarioN_Cliente#CuentaSantosC-101GmezC-215LpezC-102AbrilC-305GonzlezC-201SantosC-217RodrguezC-222N_Cliente#PrestamoSantosP-17GmezP-23LpezP-15SotoP-14PrezP-93GmezP-11FernndezP-16Operadores Relacionales INTERSECCIN - Ejemplo

N Cliente (Prestatario) N Cliente (Titular-cuenta)N_ClienteSantosGmezLpezDadas dos relaciones especficas, construye una tercera relacin que combina ciertas selecciones, proyeccin y un producto cartesiano en una sola operacin.R2ABa1a2a3b1b2b3R1Bb1b2b4Cc1c2c4Aa1a2

R3c1c2Cb1b2

BSmbolo: Trmino Comn: JOINNotacin: R1 R2Operadores Relacionales FUSIN (JOIN) o Reunin NaturalOperadores RelacionalesFUSIN (JOIN) - EjemploAveriguar los nombres de todos los clientes que tienen concedido un prstamo, el importe de ste y la sucursal donde se lo otorgaron(Prestatario Prstamo)N_Cliente#PrestamoSantosP-17GmezP-23LpezP-15SotoP-14PrezP-93GmezP-11FernndezP-16N_Sucursal#Prestamo$ImporteMirafloresP-17200,000La AuroraP-23400,000Lima CercadoP-15300,000ChacarillaP-14300,000PrimaveraP-93100,000SurquilloP-11180,000La MolinaP-16260,000Operadores RelacionalesFUSIN (JOIN) - EjemploProcedimiento: Calcular el producto cartesiano de las relaciones Prestatario y Prstamo: Prestatario x Prstamo

Seleccionar las tuplas correspondientes al mismo numero-prstamo: s prestatario.# Prstamo = prstamo.# Prstamo (Prestatario x Prstamo) Operadores RelacionalesFUSIN (JOIN) - Ejemplo Realizar la proyeccin de nombre-cliente, sucursal nmero-prstamo e importe de la relacin resultante (eliminando as la doble ocurrencia del # Prstamo): N Cliente, N Sucursal, prstamo.# prstamo, importe (s prestatario. # prstamo = prstamo.# prstamo (Prestatario x Prstamo))=Prestatario PrstamoOperadores RelacionalesFUSIN (JOIN) Ejemplo

(Prestatario Prstamo)N_ClienteN_Sucursal#Prestamo$ImporteSantosMirafloresP-17200,000GmezLa AuroraP-23400,000LpezLima CercadoP-15300,000SotoChacarillaP-14300,000PrezPrimaveraP-93100,000GmezSurquilloP-11180,000FernndezLa MolinaP-16260,000Dadas R1 y R2, donde R2 R1 (la cabecera de R2 es un subconjunto de la cabecera de R1), Se construye una nueva relacin formada por los atributos de R1 que no estn en R2, donde los valores de los otros atributos concuerdan con todos los valores de la relacin R2.Aa1R3R2ABa1a1a2a3b1b4b1b4R1Bb1b4Smbolo: Trmino Comn: DIVIDE BYNotacin: R1 R2Operadores Relacionales DIVISINEquivalencia:r T1 ( b (R1))r T2 ( b ((R2 x T1) R1)T1 T2La relacin resultante de R1 R2 es como sigue:Cabecera : XCuerpo : tuplas (X:x) tales que (X:x, Y:y) en R1 para todas las tuplas (Y:y) en R2R1 R2 = X y (X x R2) subconjunto de R1 Operadores Relacionales DIVISINSean R1 = (X1, X2, ..., XM, Y1, Y2, ..., YN)R2 = (Y1, Y2, ..., YN)Consideremos (X1, ..., XM) y (Y1, ..., YN) como si fueran atributos compuestos X e Y. EntoncesHallar todos los clientes que tengan abierta una cuenta en todas las sucursales de SurcoOperadores Relacionales DIVISIN - EjemploSucursalN_SucursalN_DistritoCuenta (1)Titular-cuenta (1)N_ClienteCuentaN_SucursalCuentaSaldoCuenta (1)Titular-cuenta (1)N_ClienteCuentaGonzlezC-101GmezC-215LpezC-102AbrilC-305GonzlezC-201SantosC-217RodrguezC-222N_SucursalCuentaSaldoChacarillaC-101100,000La AuroraC-215140,000Lima CercadoC-10280,000ChacarillaC-30570,000PrimaveraC-201180,000SurquilloC-222140,000La MolinaC-217150,000N_SucursalN_DistritoMirafloresMirafloresLa AuroraSurquilloLima CercadoLimaChacarillaSurcoPrimaveraSurcoSurquilloSurquilloLa MolinaLa MolinaBarrios AltosLimaSucursalOperadores Relacionales DIVISIN - EjemploHallar todos los clientes que tengan abierta una cuenta en todas las sucursales de Surco Obtener todas las sucursales de Surco:R1 = N sucursal ( s Distrito = Surco ( Sucursal))N_SucursalChacarillaPrimaveraOperadores Relacionales DIVISIN - EjemploHallar todos los clientes que tengan abierta una cuenta en todas las sucursales de Surco Encontrar todos los pares (nombre-cliente, nombre-sucursal) para los que el cliente tiene una cuenta en una sucursal: R2 = N cliente, N sucursal ( Titular-cuenta Cuenta)N_ClienteN_SucursalGonzlezChacarillaGmezLa AuroraLpezLima CercadoAbrilChacarillaGonzlezPrimaveraSantosLa MolinaRodrguezSurquilloOperadores Relacionales DIVISIN - EjemploHallar todos los clientes que tengan abierta una cuenta en todas las sucursales de Surco Hallar los clientes que aparecen en R2 con los nombres de todas las sucursales de R1: N cliente, N sucursal ( Titular-cuenta Cuenta) N sucursal ( s N Distrito = Surco ( Sucursal)) N_ClienteGonzlezPrecedencia de Operadores RelacionalesProyeccinSeleccin Producto cartesiano JOIN, DivisinInterseccinUnin, Diferencia

El producto y el join son asociativos y conmutativosEjemplos de Operaciones RelacionalesConsidere el siguiente esquema relacional:

CLIENTE: (C_cliente, N_cliente, T_cli_direccion, Npais, $SaldoIni, $SaldoAct)VENDEDOR: (C_vendedor, N_vendedor, C_jefe, N_oficina, %Comision)PRODUCTO: (C_producto, N_producto, C_fabricante, $Costo, $Precio)FABRICANTE: (C_fabricante, N_fabricante, T_fab_direccion, N_pais)VENTA: (D_venta, C_cliente, C_vendedor, C_producto, Q_unidades)Ejemplos de Operaciones RelacionalesC_vendedorN_vendedorC_jefeN_oficina%Comision10Rodney Jones27Chicago1014Masaji Matsu44Tokyo1123Francoise Moire35Bruselas937Elena Horna12Bs. Aires1339Goro Azuma44Tokyo1027Terry CardosoChicago1544Albert Ige27Tokyo1235Brigit Bovary27Bruselas1142Bruno Snchez27Bs. Aires10UninEjemplos de Operaciones RelacionalesSi consideramos:Vendedor_subordinado: todos aquellos que tienen un jefeVendedor_jefe: todos aquellos que son jefe de alguienVendedor = Vendedor_subordinado Vendedor_jefeJefes de nivel intermedio:Vendedor_subordinado Vendedor_jefeInterseccinEjemplos de Operaciones RelacionalesC_VENDEDOR

N_VENDEDOR

C_JEFE

OFICINA

%_COMISION

44

Albert Ige

27

Tokyo

12

35

Brigit Bovary

27

Bruselas

11

12

Bruno Snchez

27

Bs. Aires

10

SeleccinVendedores de Tokyo:s oficina=Tokyo (Vendedor)Ejemplos de Operaciones RelacionalesC_VENDEDOR

N_VENDEDOR

C_JEFE

OFICINA

%_COMISION

14

Masaji Matsu

44

Tokyo

11

39

Goro Azuma

44

Tokyo

10

44

Albert Ige

27

Tokyo

12

Seleccins oficina=Tokyoand %_comision > 11 (Vendedor)Ejemplos de Operaciones RelacionalesInformacin de los vendedores de la oficina de Tokyo que tienen una comisin mayor a 11%C_VENDEDOR

N_VENDEDOR

C_JEFE

OFICINA

%_COMISION

44

Albert Ige

27

Tokyo

12

N_Vendedor (s %_comision < 11 (Vendedor))ProyeccinEjemplos de Operaciones RelacionalesNombres de los vendedores que tienen una comisin menor que 11 %N_VENDEDOR

Rodney Jones

Francois Moire

Goro Azuma

Bruno Snchez

Fusin (Join)Ejemplos de Operaciones RelacionalesNombres de los clientes que han comprado el producto 2518 N_Cliente ((s C_producto =2518 (Venta)) (Cliente))