2013-09-24 2 views
0

Я разрабатываю систему инвентаризации, и мне нужна помощь в разработке таблицы продуктов (предметов) в соответствии с приведенными ниже требованиями.Продвижение инвентаря/Структура таблицы скидок

  1. Некоторые предметы имеют рекламные акции, например, берут два предмета и получают один бесплатный.
  2. Компания предоставляет скидку 2% выше 100 долларов США за единый счет.
  3. Акции: если кто-то покупает 10 упаковок, компания дает 1 пакет, включая некоторые единицы. Также, скажем, если кто-то купил 10 коробок сигарет (содержащих 10 коробок с сигаретами), то компания дает 1 коробку и 5 коробок с сигаретами бесплатно.

Мой вопрос в том, как я могу справиться с этим? Должен ли я создавать отдельные таблицы для всех этих видов продвижения или в одной таблице, я могу обрабатывать их все?

+0

Использовать модель ценообразования Silverston в книге ресурсов ресурсов модели Vol 1. –

ответ

0

Во-первых, вы описали здесь поведение, а не хранение данных. Итак, пока, как вы храните это в базе данных, важно, чтобы ваша главная проблема заключалась в том, как вы пишете код для этого.

так как, например, в C#

public class Product { 
    public string Name { get; set; } 
    public decimal UnitCost { get; set; } 
    public List<IPromotion> { get; set; } 
} 

public interface IPromotion { 
    decimal CalculateTotalDiscount(Product p, int quantity); 
} 

public class BuyAndGetFreePromotion : IPromotion { 
    public int QuantityRequiredToGetPromotion { get; set; } 
    public int NumberOfUnitsFree { get; set; } 

    public decimal CalculateTotalDiscount(Product p, int quantity) { 
     if (QuantityRequiredToGetPromotion == quantity) { 
      return (p.UnitCost * quantity) - (p.UnitCost * NumberOfUnitsFree); 
     } 
     return 0; 
} 

Теперь вы можете сделать либо иерархию классов таблицы или таблицы в классе. Это будет зависеть от того, какой ORM вы используете, если таковые имеются.

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/inheritance.html http://my.safaribooksonline.com/book/web-development/ruby/9780132480345/advanced-active-record/ch09lev1sec5#title-ID0EBYHK

Что касается вопроса. Я не считаю, что 2% -ная скидка будет храниться в качестве Акции, но скорее будет за счет счета/счета. Поэтому решение о том, следует ли иметь несколько таблиц, должно быть основано на разных типах доступных рекламных акций и может ли они быть смоделированы и сохранены последовательно в одной таблице. У вас есть больше примеров рекламных акций, так как в настоящее время я бы сказал, что одна таблица вполне приемлема.

+0

Спасибо Алистеру, что я действительно нашел из следующих двух сайтов: http://docs.oracle.com/cd/B40099_02/books/PriceAdm/PriceAdm_ProductPromo5.html http : //www.databaseanswers.org/data_models/, но я также получил идею из вашего примера выше. Большое спасибо – user2812500

+0

, что сайт databaseanswers страшен, и я не уверен, что страница документации Seibel поможет вам ... кроме давая дополнительные поля, чтобы положить на стол? – Alistair

Смежные вопросы