You are on page 1of 17

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

Descripción del proyecto


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.
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

You might also like