¿Me echáis una mano con algo de teoría?

05/11/2007 - 17:15 por Masta | Informe spam
Hola a todos.

Tengo una duda a la hora de plantear un par de tablas.

Tengo una tabla de PEDIDOS y otra de CUPONES de tal forma (os pongo
sólo los campos involucrados para este caso).

PEDIDOS
IDPedido
IDCupon
Descontado

CUPONES
=IDCupon
Nombre
Caducidad
Descuento

Como véis, es un simple sistema de couponing para una tienda.

Mi duda es:
Si el cliente introduce un cupongo válido, cuando genero el pedido le
indico el IDCupon correspondiente. Pero si el cliente no pone ningún
cupón, ¿qué debería introducir en el campo IDCupon de la tabla
PEDIDOS? ¿Tengo que crear un cupón sin valor que me sirva de comodín
para estos casos?

¿Cómo lo haríais vosotros contando que luego tendré que hacer
estadísticas de campañas de cupones, con lo que para que salgan las
queries, en el campo IDCupon debería haber un ID existente en la tabla
de CUPONES, no?

Siento que me he liado con algo estúpido, echadme una mano por favor.

Muchas gracias!

Preguntas similare

Leer las respuestas

#21 jcpc91
07/11/2007 - 02:15 | Informe spam
no me parece buena idea ya ke tu relación es de este tipo

________ _________
|cupones | --o< |pedidos |

¿se entiende? espero ke si osea ke en en la tabla de pedidos la llave
foranea seraá opcional

PEDIDOS
IDPedido
IDCupon
Descontado


CUPONES
=IDCupon
Nombre
Caducidad
Descuento


ahora bien a tu pregunta de
¿Cómo lo haríais vosotros contando que luego tendré que hacer
estadísticas de campañas de cupones, con lo que para que salgan las
queries, en el campo IDCupon debería haber un ID existente en la
tabla
de CUPONES, no?

este query lo tendrás ke hacer con un LEFT JOIN O RIGHT JOIN
dependiendo seria algo asi

SELECT * FROM cupones LEFT OUTER JOIN pedidos ON cupones.idcupon pedidos.idcupon

ahora supob ke tienes estod datos en la tabla
cupones
idcupones
1
2
3
4
5
6
7
8
9
y estos otros datos en la tabla pedidos
idpedido idcupon
1 NULL
2 1
3 1
4 2
5 2
6 NULL

si te das cuenta en la tabla pedidos la llave foranea idcupon es
opcional y por lo tanto en algunos registros aparecerá null y en otros
no y cada pedido solo puede utilizar un cupón o no utilizarlo (null)
pero varios pedidos pueden utilizar el mismo cupon como los pedidos 2
y 3 ke utilizan el cupon 1
ala hora de hacer tu consulta con el join terdrá este resultado
idcupon idpedido idcupon
1 2 1
1 3 1
2 4 2
2 5 2
3 NULL NULL
4 NULL NULL
5 NULL NULL

los campos con null significa ke son fupones ke no se han utilizado
si kires ke salgo todos los pedidos inclusive akellos ke no utilizan
ningun cupon tendras ke hacer un FULL OUTER JOIN y el resultado será
idcupon idpedido idcupon
1 2 1
1 3 1
2 4 2
2 5 2
3 NULL NULL
4 NULL NULL
5 NULL NULL
6 NULL NULL
7 NULL NULL
8 NULL NULL
9 NULL NULL
NULL 1 NULL <-este es un pedido sin cupon

ves de ahi puedes sacar estadisticas como saber cuantos veces un cuón
está siendo utilizado o ke se yo ke otras cosas
Respuesta Responder a este mensaje
#22 mllobet
08/11/2007 - 11:44 | Informe spam
En la tabla de PEDIDOS he hecho que no aparezca ya la clave IDCUPON..
así que cuando un pedido utiliza un cupón, lo relaciono en una tabla
aparte:

PEDIDOS
IDPedido
Descontado (0 por defecto)
(...)

CUPONES
=IDCupon
(...)

CUPONES_PEDIDOS
IDCupon
IDPedido

De esta forma lo he implementado ya en test y en breve lo subiré a
producción.

Muchas gracias por esta charla, ha sido muy enriquecedora para mí.
Respuesta Responder a este mensaje
#23 Masta
08/11/2007 - 11:46 | Informe spam
El que ha escrito antes era yo.. estaba registrado con otra cuenta y
no me he dado cuenta :P
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida