2011-12-30 2 views
1

У меня проблемы с ценообразованием на основе политики, времени и клиента для наших SKU (блоки хранения акций). До сих пор я создал следующую таблицу для расчета стоимости на основе времениВнедрение политики, основанной на времени и основанной на клиенте ценообразования

SKUPrices 
ID Pk 
SKUID FK_To_Sku 
DateFrom 
DateTo 
Price 

Я считаю, что эта схема может обрабатывать временную основой ценообразования хорошо (мне нужен обзор сообщества на нем, хотя), но я не могу понять, как обрабатывать ценообразование на основе клиента (если мы хотим продать немного skus некоторым клиентам по субсидированным ставкам в течение некоторого периода времени) и ценообразование на основе политики (когда субсидированные ставки будут применяться к skus, если они будут проданы по какой-либо политике в течение некоторого периода времени).

+0

Что делать, если существуют противоречивые цены для SKU? Вы выбираете по самой высокой/самой низкой цене? – Anurag

+0

цена в определенный период времени будет уникальной, так как мы обеспечим, чтобы временные периоды не перекрывались. –

+0

Может ли политика и цена клиента действовать в отношении одного и того же SKU в одно и то же время? Если нет, добавление идентификатора customerID и PolicyID в таблицу SKUPrices, похоже, решает проблему. Это предполагает, что существуют бизнес-правила, указывающие, какой ЗАКАЗАТЬ выбрать их, когда клиент покупает что-то, или, возможно, организация просто следует дешевому методу; в этом случае, поскольку может быть 3 разных варианта, система будет выбирать min (Price) для диапазона дат, о котором идет речь, предполагая, что клиент имеет право на цены как на клиенте, так и на основе политики. – xQbert

ответ

2

очень простой способ реализации этих требований было бы просто добавить еще 2 колонки, как это:

SKUPrices 
------------------ 
ID Pk 
SKUID FK_To_Sku 
CustomerId FK_to_Customer 
PolicyId FK_to_Policy 
DateFrom 
DateTo 
Price 

Тогда можно просто указать значения по умолчанию для клиентов и политики идентификаторами (NULL или 0), если вы хотите ввести значения, основанные на дате. Добавьте клиента или политику FKs, если вы хотите сохранить цены клиента или политики.

Это довольно простая схема хранения цен, но это может быть достаточно для ваших нужд. Вы также можете позаботиться о шкале цен (разные цены в разных количествах) или других потребностях. Возможно, вы уже можете обратиться к этому с помощью своих политик, я не знаю.

+0

эта схема правильно нормализована? –

+0

Это не совсем нормализовано (как уже указывал Марк Баннистер). Но я использовал оба подхода (этот и несколько таблиц, предложенный Марком), и должен сказать, что всегда нужно иметь дело с несколькими таблицами, когда нужно получить цену. Это будет в основном справочной таблицей, поэтому я собираюсь «не нормализовать любую стоимость». – MicSim

+0

Еще одно дополнение: дизайн базы данных всегда зависит от ваших * текущих * и * будущих требований. Вы должны всегда думать о том, какие требования, вероятно, ударят вас в будущем. Это то, что должно привести ваше решение к той или иной схеме. – MicSim

1

Настройка отдельных таблиц для Клиента и политики ценообразования:

CustomerPrices 
------------------ 
ID Pk 
SKUID FK_To_Sku 
CustomerId FK_to_Customer 
DateFrom 
DateTo 
Price 

PolicyPrices 
------------------ 
ID Pk 
SKUID FK_To_Sku 
PolicyId FK_to_Policy 
DateFrom 
DateTo 
Price 

включает проверки на столах клиентов и политика ценообразования при расчете цен на отдельном левых внешнем присоединяется к каждой таблице.

+0

, пожалуйста, объясните немного, почему мы должны создать две таблицы вместо одной, а какие - недостатки, если я пойду с решением MicSim. –

+0

На самом деле это три таблицы - эти два в дополнение к вашей исходной таблице SKUPrices. Решение MicSim неправильно нормируется, так как у вас будут цены, зависящие от Клиентов и/или Полисов в той же таблице, что и те, которые зависят только от SKU. –

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