You are on page 1of 12

Ingeniería del Software,

Noviembre 2005

TiendaVirtual
de Vinos
Realizado por:
Angel Oreja Martín
Pablo San Feliciano Martín
Victor Teniente Mateos

Departamento de Informática y Automática


Universidad de Salamanca

1
ÍNDICE GENERAL

1. Descripción del proyecto .......................................................................................... 3


2. Diagrama Entidad / Relación.................................................................................... 5
3. Descripción de las Entidades y Relaciones .............................................................. 6
4. Modelo lógico del sistema: MODELO RELACIONAL .......................................... 7
5. Descripción de las relaciones mas interesantes ...................................................... 11

2
1. 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:

o Mantenimiento de los productos


o Mantenimiento de proveedores
o Mantenimiento de los clientes
o Gestionar el carrito de la compra de vinos
o Facturación de los pedidos
o 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 que 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 multiplicado
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.

Clientes
Para que un cliente pueda comprar tiene que estar dado de alta en el sistema. Por

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

4
(0,1) conforma

(1,1) (0,n) (0,n)


cod_producto PRODUCT O Incorpora LINEA_PEDIDO

(1,1) cod_li nea


(1,n)

NIF CIF
ISA 2
Dispone

(1,1) PART ICULAR EMPRESA


id_pedi do

id_caj a PEDIDO (0,1) (0,1)


(0,1) (0,1) (0,1)

(1,1)
CAJA BOT ELLA_IND CAJA_BOT ELLAS
ISA 3
2. Diagrama Entidad / Relación

cod_uva cod_Dorigen (1,1) (1,1) Genera


id_ref
id_caj a_bot

(1,1)
UVA DENOMINACION_ORIGEN (1,1)
(1,1)
(0,n)
Distribuye FACTURA Reci be USUARIO login
(1,1) (0,1)

(1,1)
Reconoce
id_factura n_telef
uva-tipo
(0,n) (0,n)
VINO (1,n) E
(0,n)
T ELEF_USR T lf-User
(1,n) (0,n) (0,n)
Provee T IPO_VINO Posee FORMAT O

id_bodega
(1,1) cod_vino id_form ato

(1,1) E (1,n)
BODEGA T lf-Bod T ELF-BOD n_telef

5
3. Descripción de las Entidades y Relaciones

Informe generado automáticamente con la herramienta CASE StudioCase.

ENTIDADES:

• Regulares:
o TIPO_VINO =(@cod_vino, categoría, porcentaje_uva, crianza, añada, cata,
temperatura, comentarios_vino, cod_Dorigen, id_bodega,cod_uva)
o FORMATO =(@id_formato, volumen)
o BOTELLA_IND = (@id_ref, fecha_envasado, etiquetado)
o BODEGA = (@id_bodega, nombre_bod, direccion_bod, correo_bod)
o CAJA = (@id_caja, tipo_caja, tamaño_caja, precio, descripción)
o LINEA_PEDIDO = (@cod_linea, cod_producto, subtotal_linea, id_pedido, cantidad)
o CAJA_BOTELLAS = (@id_caja_bot, fecha_embalado, n_botellas, descripción_c)
o PEDIDO = (@id_pedido, total_sin_iva,fecha, direccion_des,nombre_des,apellido_des)
o USUARIO = (@login, password, correo_user)
o FACTURA = (@id_factura, login, fecha_factura, id_pedido, n_factura, total_iva)
o PARTICULAR = (@NIF, fecha_nac, nombre, apellido1, apellido2, direccion_user)
o EMPRESA = (@CIF, nombre_e, dirección_e)
o DENOMINACION_ORIGEN = (@cod_Dorigen, zona_producción, info_Dorigen)
o UVA = (@cod_uva, nombre_u)
o PRODUCTO = (@cod_producto, precio)
• Debiles:
o TELF_BOD = (@n_telef, id_bodega)
o TELF_USR = (@n_telef, login)

RELACIONES:

• Regulares:
o Posee = . TIPO_VINO/FORMATO . Tipo N:N
o A) Distribuye = . BOTELLA_IND/VINO . Tipo 1:N (*)
o B) Distribuye = . BOTELLA_IND /CAJA_BOTELLAS . Tipo 1:N
o Provee = . TIPO_VINO/BODEGA . Tipo N:1
o Incorpora = . LINEA_PEDIDO/PRODUCTO . Tipo N:1
o Dispone = . LINEA_PEDIDO/PEDIDO . Tipo N:1
o Recibe = . USUARIO/FACTURA . Tipo 1:N
o Genera = . PEDIDO/FACTURA . Tipo 1:1
o Reconoce = . DENOMINACION_ORIGEN/TIPO_VINO . Tipo 1:N
o uva-tipo = . UVA/TIPO_VINO . Tipo 1:1

(*)Las relaciones A y B son opciones disjuntas en el modelo.

• Debiles:
o Tlf-Bod = BODEGA/TELF-BOD .
o Tlf-User = USUARIO/TELEF_USR .

GENERALIZACIONES:

o ISA 3 = . PARTICULAR/EMPRESA/(@USUARIO
o ISA 2 = . (@PRODUCTO/CAJA/BOTELLA_IND/CAJA_BOTELLAS

AGREGACIONES:

o VINO = . Relacion agregada: Posee

6
4. Modelo lógico del sistema: MODELO RELACIONAL

• TIPO_VINO

Cod_vino Categoría Porcentaje_uva Crianza Añada Cata Temperatura Comentarios_vino Cod_Dorigen Cod_uva Id_bodega

Claves ajenas:

⇒ Id_bodega referencia BODEGA:


Al borrar: En cascada
Al actualizar: En cascada
Posibilidad de valores nulos: No

⇒ Cod_uva referencia UVA:


Al borrar: En cascada
Al actualizar: En cascada
Posibilidad de valores nulos: No

⇒ Cod_Dorigen referencia DENOMINACION_ORIGEN:


Al borrar: En cascada
Al actualizar: En cascada
Posibilidad de valores nulos: No

• FORMATO

Id_formato Volumen

• BOTELLA_IND

Id_ref Fecha_envasado Etiquetado

• BODEGA

Id_bodega Nombre_bod Direccion_bod Correo_bod

7
• CAJA

Id_caja Tipo_caja Tamaño_caja Precio Descripción

• LINEA DE PEDIDO

Cod_linea Cod_producto Subtotal_linea Id_pedido Cantidad

Claves ajenas:
⇒ Cod_producto referencia PRODUCTO:
Al borrar: En cascada
Al actualizar: En cascada
Posibilidad de valores nulos: No
⇒ Id_pedido referencia PEDIDO:
Al borrar: En cascada
Al actualizar: En cascada
Posibilidad de valores nulos: No

• CAJA_BOTELLAS

Id_caja_bot Fecha_embalado N_botellas Descripción_c

• PEDIDO

Id_pedido Total_sin_iva Fecha

• USUARIO

Login Password Correo_user

• FACTURA

Id_factura Login Fecha_factura Id_pedido N_factura Total_iva

8
Claves ajenas:
⇒ Id_pedido referencia FACTURA:
Al borrar: En cascada
Al actualizar: En cascada
Posibilidad de valores nulos: No

⇒ Login referencia USUARIO:


Al borrar: Restringido
Al actualizar: En cascada
Posibilidad de valores nulos: No

• PARTICULAR

NIF Fecha_nac Nombre Apellido1 Apellido2 Direccion_user

• EMPRESA

CIF Nombre_e Dirección_e

• DENOMINACION_DE_ORIGEN

Cod_Dorigen Zona _ producción Info_Dorigen

• UVA

Cod_uva Nombre_u

• PRODUCTO

Cod_producto Precio

• TELF_BOD

N_telef Id_bodega

9
Claves ajenas:
⇒ Id_bodega referencia BODEGA:
Al borrar: En cascada
Al actualizar: En cascada
Posibilidad de valores nulos: No

• TELF_USR

N_telef Login

Claves ajenas:
⇒ Login referencia USUARIO:
Al borrar: Restringido
Al actualizar: En cascada
Posibilidad de valores nulos: No

• POSEE

Cod_vino Id_formato

• VINO

Cod_vino Id_formato Id_ref

Claves ajenas:
⇒ Id_ref referencia identificador del producto:
Al borrar: En cascada
Al actualizar: En cascada
Posibilidad de valores nulos: No

10
5. Descripción de las relaciones mas interesantes

• Agregación VINO: TIPO_VINO posee FORMATO

VINO
(0,n) (0,n)
TIPO_VINO Posee FORMATO

Esta agregación permite definir un elemento manejable en el sistema, es


decir el conjunto formado por el vino en cuestión y el formato en el que
se distribuye.

• Generalización PRODUCTO

(1,1) (0,n)
PRODUCTO Incorpora LINEA_PEDIDO

(1,1)

ISA 2

(0,1) (0,1) (0,1)

CAJA BOTELLA_IND CAJA_BOTELLAS

Esta relación de generalización permite englobar las características


comunes a los distintos tipos de productos que pueden seleccionarse en
una línea de pedido, así como elegir el producto de cada línea.

• Relacion reflexiva LINEA_PEDIDO

conform a
(0,1)

LINEA_PEDIDO
(0,n)

Esta relación reflexiva expresa la asociación que pudiera existir entre la


línea de pedido que incluye la caja de madera vacía con la/as línea/as de
pedido de botellas individuales que la configuran.

11
• Relación VINO distribuye BOTELLA_IND / VINO distribuye
CAJA_BOTELLAS

BOTELLA_IND CAJA_BOTELLAS

(1,1) (1,1)

Distribuye

(0,n)

VINO

La entidad VINO se relaciona de forma disjunta con las entidades


BOTELLA_IND y CAJA_BOTELLAS, es decir, el conjunto formado
por un TIPO_VINO y el formato de distribución solo puede seguir una (y
solo una) de dichas formas de venta.

• Relaciones USUARIO-FACTURA-PEDIDO

PEDIDO

(1,1)

Genera

(1,1)

(1,1)
(0,n)
FACTURA Recibe USUARIO

La entidad USUARIO se relaciona con una o varias facturas (en función


del numero de veces que ha realizado compras), manteniendo un
histórico de facturas y quedando asociada de forma unívoca cada entidad
FACTURA con un único usuario.
Además, cada entidad PEDIDO se corresponde con una (y solo una)
entidad FACTURA y viceversa.

12

You might also like