Está en la página 1de 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 Nº
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
[9] Poblaciones a las que hemos vendido todos nuestros
productos

Imaginemos que añadimos la tabla de facturas que se relaciona con


la de ventas, de modo que a la tabla de ventas le añadimos el nº de
Factura con la que se relaciona. En la tabla de factura indicamos la
fecha, el número 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 varía el diseño:

FACTURA(Nº Factura, Fecha, Pagada, Nº Cliente)

VENTA(Cod Producto, Nº Factura, Cantidad, Id Venta)

[10] Obtener el nombre de los clientes que tienen alguna


factura sin pagar

[11] Clientes que han pagado todas sus facturas

Soluciones
Lo primero es renombrar las tablas para facilitar su manejo en las
consultas:

Clientes  C
Pr oductos  P
Ventas  V

[1]  nombre ( población "Palencia "C)

[2]  cód Pr oducto ,Descripción ( cod Pr oducto  Descripción P)

[3]  C .Nombre ,P.Descripción,V .Cantidad (( cantidad 500V )PC)

[4]
 nombre C  nombre (CV )
[5] Se aplica una división sobre toda la tabla de ventas
mezclada con clientes y se divide entre la tabla de
productos (quedan los clientes que tienen todas las
combinaciones de la tabla de productos)
 nombre (( C.nombre,C .N ºCliente ,V .codproducto (CV )) : ( codproducto P))

[6] Dividimos la consulta en dos, primero obtenemos la fila


correspondiente a la venta nº 18 y luego la combinamos
con todas las demás eliminando las que tengan ventas
menores

 idVenta 18V  V '


V 
V .cantidad V '.Cantidad
V'

[7] Se resuelve sacando primero los productos que sí se


compraron en Palencia y luego restándoles del conjunto
total de Productos

V .codproducto (( población"Palencia"C)V )  Pale


codproducto P  Pale
[8] Se trata de una intersección entre los productos de
Palencia y los productos comprados en Valladolid

V .codproducto (( población"Palencia"C)V )  Pale


V .codproducto (( población"Valladolid"C)V )  Vall
Pale IVall
[9] Necesitamos sacar la lista de poblaciones con los códigos
de productos que se han vendido en ellas. Luego
dividimos entre los códigos de la tabla de productos y
quedarán las poblaciones en las que se han pedido todos
los códigos

 poblacion ((C . población ,V .codproducto (CV )) : (codprodcto P))


[10]

 nombre,n º factura ( Pagada 0 (CF ))


[11] La consulta no se puede hacer como la anterior, ya que
puede haber clientes que hayan pagado algunas facturas y
otras no. Se parte de la consulta anterior para hacer esto:

nombre ( Pagada 0 (CF ))  Pagadores


nombre Pagadores

También podría gustarte