Está en la página 1de 2

Ejercicio 1: Modelo Entidad-Relacin

Una empresa de revelado de fotos est desarrollando un sitio web de venta del servicio de revelados. Se necesita
elaborar el modelo de datos en el que se almacenar la informacin de los pedidos de revelado.

La primera vez que un usuario del sitio vaya a ingresar un pedido, se tomarn primero sus datos para generar su cuenta.
La informacin del usuario (cliente en el sistema) a registrar ser: dni, nombre y apellido, identificado de usuario (PK),
domicilio completo (direccin, nro, piso, dpto., ciudad y pcia), y password que el usuario indique para loguearse a su
cuenta.

Respecto a los pedidos de revelado se almacenar un identificador nico (que asignar el sistema), la fecha y hora de
alta del pedido y el cliente al que corresponde. Un pedido de revelado de fotos corresponde a un nico cliente pero un
cliente puede tener en cualquier momento del tiempo ms de un pedido.

Un pedido en particular se puede componer de 1 o varios tems (tipos de fotos segn su tamao). Por ejemplo, un
pedido puede tener el tem foto 13 x 18 y el tem foto 15 x 20. Cada tem (tipo de foto) tiene un precio unitario. Sobre
cada tem de un pedido el cliente indicar la cantidad de fotos que desea revelar y atributos adicionales para ese
conjunto de fotos (si quieren que tenga borde blanco o no; si quiere que sea con brillo o mate) que no modifican el
precio unitario pero que son preferencias del cliente a ser tenidas en cuenta.

Un pedido tendr en todo momento un estado que permitir al cliente consultar en todo momento en que parte del
proceso est. Ejemplos de estados son: en cola para imprimir, en impresin, en punto de entrega, etc. Cada vez que el
pedido vaya avanzando, se cambiar el estado. Es decir, cada pedido tiene en un momento un nico estado. Un estado
puede estar precedido por 1 o varios anteriores y puede suceder a 1 o varios tambin.

El usuario (cliente) abona el pedido desde la pgina. Las formas de pago pueden ser con tarjeta de dbito o con tarjeta
de crdito. No se descarta a futuro permitir otras formas de pago La forma de pago es nica para todo el pedido. De ella
se registra, el nro de la tarjeta, el banco emisor, la fecha de vencimiento, el titular y el cdigo de seguridad.

Las formas de entrega, para un pedido, pueden ser: retiro en sucursal de OCA, retiro en punto de entrega o entrega en
domicilio. Cada opcin tiene un costo distinto, siendo la entrega en domicilio el ms costoso. Una vez que el usuario
elige la forma de entrega para el pedido y el lugar (para sucursal o retiro en punto de entrega), el sistema grabar en la
base de datos una fecha tentativa en que el pedido estar revelado y disponible. En caso de entrega a domicilio, esa
fecha tentativa corresponder a la fecha en que es posible que reciba el pedido en su casa.

a) Proponer un DER al problema planteado, indicando entidades, atributos, relaciones y cardinalidades.


b) Construya el MR para el DER del punto a), identificando las PK y FK, y listando las restricciones adicionales.

Ejercicio 2: Consultas
Dadas las siguientes relaciones
Proveedores (id_proveedor [PK]; razn_social; domicilio; localidad; id_rama [FK]; totalLocales)
ProveedoresDepositos (id_proveedor [PK, FK]; cantDepositosMaquinaria; cantDepositosRepuestos)
Rama (id_rama [PK], descripcionRama)

Utilizando SQL, determinar:


a) Un listado con todos los datos de proveedores y su rama asociada, donde figuren proveedores que tienen
ramas y tambin aquellos proveedores que no tienen rama asociada.

SELECT *
FROM Proveedores LEFT JOIN Ramas ON Proveedores.id_rama = Rama.id_rama;

b) Un listado del total de locales (de los proveedores), agrupados por rama

SELECT Proveedores.id_rama, Sum(Proveedores.totalLocales) AS SumaDeTotalLocales


FROM Proveedores
GROUP BY Proveedores.id_rama;
c) Un listado con aquellos proveedores que tengan rama y cuya cantidad total de depsitos sea superior a 7.

SELECT *
FROM proveedores
WHERE proveedores.id_rama IS NOT NULL
AND proveedores.id_proveedor NOT IN (SELECT id_proveedor
FROM ProveedoresDepositos
WHERE ((cantDepositosMaquinaria + cantDepositosRepuestos)) < 7);

También podría gustarte