Esquema DB para empacotamento de produtos / serviços juntos sob um único preço / oferta

5

Estou tentando "conceber" a lógica de negócios deste site que tem muitas atividades, que os usuários podem construir seu "combo" e obter descontos dependendo de suas escolhas e por quanto tempo estão dispostos a pagar por seu plano ( Planos de 1, 3, 6 e 12 meses).

Estou com dificuldade tentando criar uma solução, mantendo o banco de dados normalizado e com relações adequadas, sem precisar recorrer a dados codificados por JSON nos campos do banco de dados. O sistema deve permanecer genérico o suficiente para atender a muitos tipos de empresas que dependem de planos / atividades. Eu preciso saber como estruturar minhas tabelas .

Cenário: Por exemplo, no caso de uma academia, terá fisiculturismo, yoga, boxe, body pump. Se a pessoa escolher musculação e boxe, eles terão um desconto. Se eles adicionarem yoga, boxe e fisiculturismo manterão o desconto, mas adicionarão o yoga sem qualquer desconto no preço. Se a pessoa decidir pagar 12 meses adiantados, receberá um desconto maior.

Musculação + Body Pump

Bodybuilding..$70 | 28% discount
Body Pump.....$70 | 
Total........$100

1 month  - $100 / month
3 months - $ 91 / month
6 months - $ 75 / month

Musculação + Body Pump + Yoga

Bodybuilding..$70 | 28% discount
Body pump.....$70 |
Yoga..........$90 | No discount
Total........$190   

1 month  - $190 / month
3 months - $171 / month
6 months - $158 / month

Eu usarei PHP e MYSQL, mas isso não importa muito, apenas a parte do RDBMS.

Editar para esclarecimento: O que eu realmente procuro é um esquema de banco de dados para produtos de embalagem (ou, neste caso, serviços) juntos sob um único preço / oferta. Cada produto também deve existir no sistema como um produto independente.

Ainda preciso da capacidade de gerar relatórios sobre vendas (e lucro) por produto, mesmo que esse produto tenha sido vendido como parte de um pacote.

Eu precisaria da capacidade de informar sobre o desempenho do pacote.

    
por pocesar 30.12.2012 / 04:38
fonte

1 resposta

2

No mínimo Você precisa:

  1. Uma tabela de cabeçalho promocional - Mantém exatamente o que você obtém com o Promoção (item gratuito, frete grátis, $$ de desconto)
  2. Uma tabela de requisitos de promoção (eu quero dizer para Promo, segure todos os requisito se a promo) Cada registro é um requisito, Requisitos podem ser "devem ser e item da marca X" ou devem ser SKU 1234, ou o total do pedido deve ser > 50 $ (quando fiz isso, tive um tipo de linha bandeira que me disse o que garoto se exigência era.)
  3. Um módulo que é bom verificar se um pedido atende a uma promoção Requisitos.

Infelizmente, não posso fornecer um ERD exato, porque as condições da promoção variam muito de empresa para empresa, por isso é possível que você a torne tão complexa ou simples quanto necessário. Por exemplo, você precisa de Promos por SKU ?, Por categoria, por subcategoria ?, por marca ?, você precisa excluir determinados SKUs ?, marcas? Categoria? locais de envio?

Por último, certifique-se de tornar isso fácil de manter e ajustar, pois quando você acha que cobriu todas as suas bases, a equipe de negócios apresentará uma nova promoção mais louca que o nenhum cliente na Terra entenderá como usar .

EDITAR: * Agora que entendo melhor sua pergunta aqui, o que você precisa: *

Tabela de Cabeçalho do Pacote e uma Tabela de Itens de Linha, O Nome do Pacote e a Descrição são armazenados no cabeçalho, As Linhas retêm os Itens (incluindo os Preços do Item quando vendidos como parte desse pacote).

Você precisa adicionar um pacote ao pedido. Quando isso for feito, adicione cada item no pacote como um item de linha regular, mas tenha um campo extra para especificar que o item faz parte de um Pacote e o PackageID.

Cabe a você decidir como deseja codificar o pedido Imprimir, ou apenas imprimir um total de pacotes, para que o cliente não saiba os preços dos itens de linha ou imprima normalmente, mas adicione a descrição do pacote .

    
por 30.12.2012 / 05:07
fonte