Algebra Relacional - Fundamentos de Base de Datos

4
Ejercicios de álgebra relacional (1) Tenemos el siguiente esquema relacional de base de datos: CLIENTES(Nº Cliente , Nombre, Dirección, Teléfono, Población) PRODUCTO(Cod Producto , Descripción, Precio) VENTA(Cod Producto, Nº Cliente, Cantidad, Id Venta ) La tabla de clientes almacena información sobre cada posible cliente de nuestra empresa. En la tabla de productos almacenamos información sobre cada producto de la empresa. La tabla de ventas relaciona a las dos anteriores utilizando el atributo cod Producto para indicar el producto que se venda, y el atributo Cliente para indicar el cliente al que vendimos el producto. Sobre ella se realizan estos ejercicios (las soluciones están al final): [1] Realizar una consulta que muestre el nombre de los clientes de Palencia [2] Indicar el código y descripción de los productos cuyo código coincida con su descripción [3] Obtener el nombre de los clientes junto con el identificador de venta y la cantidad vendida, de aquellos productos de los que se vendieron más de 500 unidades [4] Nombre de los clientes de la tabla Clientes que no aparecen en la tabla de ventas (Clientes que no han comprado nada) [5] Nombre de los clientes que han comprado todos los productos de la empresa [6] Identificador de las ventas cuya cantidad supera a la cantidad vendida en la venta número 18 [7] Productos que no se han comprado nunca en Palencia [8] Productos que se han vendido tanto en Palencia como en Valladolid

description

Algebra Relacional - Fundamentos de Base de Datos

Transcript of Algebra Relacional - Fundamentos de Base de Datos

  • Ejercicios de lgebra relacional (1)

    Tenem os el siguiente esquem a relacional de base de datos:

    CLIENTES(N Clie n te , No m bre , Dire cci n , Te l fo n o , Po blaci n ) PRODUCTO(Co d Pro ducto , De scripci n , Pre cio ) VENTA(Co d Pro ducto , N Clien te , Can tidad, Id Ve n ta)

    La tabla de clientes alm acena inform acin sobre cada posible cliente de nuest ra em presa.

    En la tabla de productos alm acenam os inform acin sobre cada producto de la em presa.

    La tabla de ventas relaciona a las dos anter iores ut ilizando el at r ibuto cod Producto para indicar el producto que se venda, y el at r ibuto N Cliente para indicar el cliente al que vendim os el producto.

    Sobre ella se realizan estos ejercicios ( las soluciones estn al final) : [1] Realizar una consulta que m uestre el nom bre de los

    clientes de Palencia

    [2] I ndicar el cdigo y descripcin de los productos cuyo cdigo coincida con su descripcin

    [3] Obtener el nom bre de los clientes junto con el ident ificador de venta y la cant idad vendida, de aquellos productos de los que se vendieron m s de 5 0 0 unidades

    [4] Nom bre de los clientes de la tabla Clientes que no aparecen en la tabla de ventas ( Clientes que no han com prado nada)

    [5] Nom bre de los clientes que han com prado todos los productos de la em presa

    [6] I dent ificador de las ventas cuya cant idad supera a la cant idad vendida en la venta nm ero 1 8

    [7] Productos que no se han com prado nunca en Palencia

    [8] Productos que se han vendido tanto en Palencia com o en Valladolid

  • [9] Poblaciones a las que hem os vendido todos nuestros productos

    I m aginem os que aadim os la tabla de facturas que se relaciona con la de ventas, de m odo que a la tabla de ventas le aadim os el n de Factura con la que se relaciona. En la tabla de factura indicam os la fecha, el nm ero y si se pago o no (un 1 significa pagado, un 0 que no est pagada) . Cada factura se corresponde con varias ventas y con un solo cliente, para lo cual se vara el diseo:

    FACTURA(N Factura, Fe cha, Pagada, N Clie n te ) VENTA(Co d Pro ducto , N Factura, Can tidad, Id Ve n ta)

    [10] Obtener el nom bre de los clientes que t ienen alguna factura sin pagar

    [11] Clientes que han pagado todas sus facturas

    Soluciones

    Lo prim ero es renom brar las tablas para facilitar su m anejo en las consultas:

    VVentasPoductos

    CClientes

    Pr

    [1] )( "" CPalenciapoblacinnombre = [2] )( Pr,Pr PnDescripcioductocodnDescripcioductocd = [3] ))(( 500.,.,. CPVcantidadCantidadVnDescripciPNombreC >

    [4] )( VCC nombrenombre

    [5] Se aplica una divisin sobre toda la tabla de ventas m ezclada con clientes y se divide entre la tabla de productos ( quedan los clientes que t ienen todas las com binaciones de la tabla de productos)

  • ))(:))(((.,.,.

    PVC ocodproductocodproductVClienteNCnombreCnombre

    [6] Dividim os la consulta en dos, pr im ero obtenem os la fila correspondiente a la venta n 1 8 y luego la com binam os con todas las dem s elim inando las que tengan ventas m enores

    '

    '

    '..

    18

    VVVV

    CantidadVcantidadV

    idVenta

    >=

    [7] Se resuelve sacando prim ero los productos que s se com praron en Palencia y luego restndoles del conjunto total de Productos

    PalePPaleVC

    ocodproduct

    PalenciapoblacinocodproductV

    = ))(( "".

    [8] Se t rata de una interseccin entre los productos de Palencia y los productos com prados en Valladolid

    VallPaleVallVC

    PaleVC

    ValladolidpoblacinocodproductV

    PalenciapoblacinocodproductV

    I

    =

    =))((

    ))(("".

    "".

    [9] Necesitam os sacar la lista de poblaciones con los cdigos de productos que se han vendido en ellas. Luego dividim os entre los cdigos de la tabla de productos y quedarn las poblaciones en las que se han pedido todos los cdigos

    ))(:))(((.,.

    PVC codprodctoocodproductVpoblacinCpoblacion [10]

    ))(( 0, FCPagadafacturannombre =

  • [11] La consulta no se puede hacer com o la anter ior , ya que puede haber clientes que hayan pagado algunas facturas y ot ras no. Se parte de la consulta anterior para hacer esto:

    PagadoresPagadoresFC

    nombre

    Pagadanombre

    = ))(( 0