View
411
Download
4
Category
Preview:
DESCRIPTION
Sistema Tienda Virtual de Vinos
Citation preview
Tienda Virtual de Vinos
Diagrama entidad-relación y consultas en MYSQL
Fecha
06/06/2011
Escuela CBTIS #172
Profesora
Esperanza Pescador Espitia.
Autores
Laura Lizet Hortelano Calero. Yessica Guadalupe González Morales.
2
Índice Título Página
Descripción del problema…………………………………………..3
Entidades y atributos…………………………………………………5
Diagrama inicial…………………………………………………………6
Diagrama final……………………………………………………………7
Consultas en la base de datos “Tienda de Vinos” en
MYSQL…………………..…………………………………………………...8
3
TIENDA VIRTUAL DE VINOS
Un distribuidor de vinos ha decido montar una tienda virtual en Internet a través de la
cual vender sus productos en línea. Las primeras reuniones se han resumido en un
documento expresado en lenguaje natural, que recoge a grandes rasgos la lógica de
negocio del sistema a construir. Este documento se presenta a continuación:
El software a construir debe cumplir las siguientes funcionalidades:
Mantenimiento de los productos
Mantenimiento de proveedores
Mantenimiento de los clientes
Gestionar el carrito de la compra de vinos
Facturación de los pedidos
Permitir listados y estadísticas
Productos El distribuidor en cuestión comercializa diferentes productos relacionados con el vino.
Cada producto (llamémosle tipo de vino), viene definido por un nombre, una
denominación de origen, una categoría opcional (cosecha, media barrica, crianza,
reserva, gran reserva, reserva especial), la variedad de uva y su porcentaje, la crianza,
una añada, un precio por botella sin IVA, la cata, la gastronomía recomendada, la
temperatura a la que se debe servir y los comentarios destacables de ese tipo de vino.
Cada tipo de vino puede distribuirse en diferentes formatos siendo los más habituales
(aunque pueden aparecer más) media botella, tres cuartos, litro y medio y cinco litros.
No todo tipo de vino tiene por qué distribuirse en todos los formatos.
Cada tipo de vino de un formato determinado puede venderse en una (y sólo en una) de
las dos siguientes posibilidades: por botellas o por cajas de madera de n unidades, de
forma que el precio de la caja será el de cada botella multiplicada por el número de
botellas más un plus por la caja de madera.
De cada tipo de vino se debe tener constancia del número de unidades de que se
dispone, haciendo referencia la unidad al formato de distribución (botella o cajas de n
botellas).
Cada tipo de vino se compra en una bodega, de forma que de cada bodega se debe
conocer el nombre, la dirección, el correo electrónico y una lista de teléfonos de
contacto.
Además, el cliente podrá configurar cajas de madera con las botellas compradas
individualmente (los tipos de cajas disponibles son de 1, 2, 3, 4 y 6 botellas) para poder
adquirir una caja así conformada debe llenarse la caja. La caja de madera tendrá un
coste adicional y variará en función del tamaño.
Opcionalmente, el cliente puede elegir una dirección diferente a la que enviar el pedido.
Si se elige la opción “Regalo”, la factura se enviará a la dirección del cliente y el pedido
a la dirección indicada.
Descripción del proyecto
4
Clientes Para que un cliente pueda comprar tiene que estar dado de alta en el sistema. Por
4 ello, de cada uno se conocerá su NIF, fecha de nacimiento (no se venderá vino a los
menores de 16 años), nombre, apellidos, dirección, correo electrónico y lista de
teléfonos.
Se contempla la posibilidad de que el cliente sea una empresa, pero entonces se
almacenará su CIF, y, obviamente, no hará falta la fecha de nacimiento.
Una vez que el cliente está dado de alta se le asignará un nombre de usuario y una clave.
El carrito de la compra El usuario irá seleccionando los productos e incorporarlos a su carrito. Este carrito se
podrá vaciar en cualquier momento, o bien confirmar su contenido para conformar el
pedido final.
No se desea guardar información histórica de los carritos de la compra.
Facturación Cuando el cliente ha confirmado su carrito, se emite una factura que se le enviará con la
mercancía, excepto si el pedido era para regalo.
Debe tenerse constancia de la dirección a la que se envió la factura.
La factura siempre se paga con VISA en el momento de confirma el pedido.
La factura detallará perfectamente todos los productos comprados, más una cantidad fija
por gastos de envío.
Las facturas no se borrarán, ni podrán modificarse, pero podrán imprimirse tantas veces
como sea necesario.
Listados El usuario no ha definido todos los listados que requiere, pero si le interesa obtener
estadísticas de compras por tipos de vino.
5
Bodega (Id bodega, nombodega,dirección,correo)
Botella ( Idref, fech.envasado)
Caja botellas (Id caja botellas, fech.etiquetado, numbotelas, precio)
Factura (Idfactura, nombre, fecha, Id pedido, numfactura,total)
Formato (Idformato)
Linea de pedido (Codpedido, Id caja de botellas, cantidad)
Pedido (Idpedido, fecha)
Posee (Codvino, Idformato)
Tipo vino (Codvino, porc.uva, coduva, Idbodega, Idpedido)
Usuario (Nombre, login, correouser)
Uva (Coduva, nomuva, vino)
6
7
8
Sistema: Tienda virtual de Vinos
Consulta 01: Obtener el nombre de la uva con el Coduva de UV456.
Sintaxis:
select Nomuva
from uva
where uva.Coduva='UV456'
Consulta 02: Obtener el nombre de usuario de la factura con el Idfactura de
FA444.
Sintaxis:
select Nombre
from factura
where factura.Idfactura='FA444'
9
Consulta 03: obtener el Id de la bodega y el numero de teléfono de la bodega
agrupados por bodega.
Sintaxis:
select bodega.Idbodega, telefonobod.Numtel
from bodega, telefonobod
where bodega.Idbodega=telefonobod.Idbodega
group by
bodega.Nombodega
Consulta 04: Obtener el total de la factura con el id de factura de FA111.
Sintaxis:
select total
from factura
where factura.Idfactura='FA111'
10
Consulta 05: Obtener la categoría del vino con el código de uva UV355.
Sintaxis:
select Vino
from uva,tipovino
where uva.Coduva=tipovino.Coduva
and tipovino.Coduva='UV355'
Consulta 06: Ordenar el nombre de los distribuidores alfabéticamente.
Sintaxis:
select Nombre
from usuario
ORDER BY
usuario.Nombre ASC
11
Consulta 07: Obtener todos los datos de los usuarios.
Sintaxis:
select *
from usuario
Consulta 08: Obtener el código de la uva y el Id de formato de la uva agrupado
por código de uva.
Sintaxis:
select tipovino.Coduva,formato.Idformato
from formato, tipovino
where formato.Idformato=tipovino.idformato
group by
tipovino.Coduva
12
Consulta 09: Obtener los nombres de los usuarios y el Id de la factura
agrupados por nombre de usuario.
Sintaxis:
select factura.Nombre,factura.Idfactura
from factura
group by
factura.Nombre
Consulta 10: Obtener el porcentaje de la uva cuyo código de uva es igual a
UV565.
Sintaxis:
select tipovino.`porc.uva`
from uva,tipovino
where uva.Coduva=tipovino.Coduva
and tipovino.Coduva='UV565'
13
Consulta 11: Obtener los pedidos que fueron hechos en el 2010.
Sintaxis:
select pedido.Fecha
from pedido
where pedido.Fecha
like '2010%'
Consulta 12: Obtener el nombre de la uva y el vino que se elabora con ella.
Sintaxis:
select uva.Vino,uva.Nomuva
from uva
14
Consulta 13: Obtener que Id de la caja de botellas están registradas con un
costo de 8000 pesos.
Sintaxis:
select cajabotellas.Idcajabotellas
from lineapedido,cajabotellas
where lineapedido.Idcajabotellas=cajabotellas.Idcajabotellas
and cajabotellas.precio='8000'
Consulta 14: Obtener el máximo precio que puede tener una caja de botellas.
Sintaxis:
select max(precio)
from cajabotellas
15
Consulta 15: Obtener el nombre de los usuarios cuyo apellido comienze con M.
Sintaxis:
select usuario.Nombre
from usuario
where usuario.nombre
like'M%'
Consulta 16: Obtener que cajas de botellas fueron etiquetadas en el año 2011.
Sintaxis:
select cajabotellas.`Fecha de etiquetado`
from cajabotellas
where cajabotellas.`Fecha de etiquetado`
like '2011%'
16
Consulta 17: Obtener el numero de teléfono de la bodega y el nombre de la
bodega agrupados por nombre de la bodega.
Sintaxis:
select telefonobod.Numtel,bodega.Nombodega
from telefonobod,bodega
group by
bodega.Nombodega
Consulta 18: Ordenar de mayor a menor los totales de cada una de las
facturas.
Sintaxis:
select factura.Total
from factura
where factura.Total <> "0"
order by- factura.Total
17
Consulta 19: Obtener el nombre de usuario cuyo apellido es Hatsune.
Sintaxis:
select usuario.Nombre
from usuario
where usuario.nombre
like'Hatsune%'
Consulta 20: Obtener el password y el correo de los usuarios.
Sintaxis:
select usuario.`password`,usuario.correouser
from usuario
Recommended