Algebra Relacional - Fundamentos de Base de Datos
-
Upload
elmeer-tigre-hc -
Category
Documents
-
view
215 -
download
2
description
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