powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь один к одному по множеству полей, как правильно?
5 сообщений из 5, страница 1 из 1
Связь один к одному по множеству полей, как правильно?
    #39794371
FJ-JF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть задачи:

Сумма Скидка на Продукт должна определяться динамически и зависеть он набора определенных условий, а именно:

Скидка зависит от "Способа Оплаты\покупки товара" (Оплата всей суммы сразу\оплата товара частями);

Скидка зависит от "Остатков товара на складе" (Товара на складе может быть: Мало\Средне\Много);

Скидка зависит от "Категории товара" (Компьютер\Телевизор\Телефон);

Скидка зависит от "Производителя" (Apple\SamsumXaomi);

Скидка зависит от "Пользователя" (Зарегестрированный\Гость)

и тд, таких зависимостей может быть порядка 10.

Если рассматривать самый простой упрощенный вариант, когда Скидка зависит только от, например, Производителя, то это связь 1 к 1:

- в одной таблице DISCOUNT записывам сумму скидки и MANUFACTURER_ID и вторая таблица MANUFACTURER со списком всех производителей
- или даже все делаем в одной таблицес двумя столбцами DISCOUNT_AMOUNT и MANUFACTURER_NAME , где MANUFACTURER_NAME ничто иное как ENUM .

Сложнее становиться когда Сумма Скидки начинает зависеть от группы параметров, рассмотрим вариант, когда Скидка будет зависеть от Производителя и Остатков товара на складе, все так же мы можем обойтись одной таблице но уже с полями:

DISCOUNT (1%, 2%..),
MANUFACTURER (Apple, Sony, Samsung) и
STOCK_BALANCE (LOW, MIDDLE, HUGE)

а если вспомнить, что таких критериев может быть около 10, то в таблице будет 11 столбцов, вроде ничего страшного, но вот количество записей и количество комблинаций может быть достаточно большим, например:


Для зарегистрированного пользователя, который хочет купить Телефон Samsung, которых на складе Много и готов сделать полную оплату предоставить скидку X%.

и тд.

Мой вопрос: как правильно архитектурно построить таблицу (ы) для решения данной задачи?
Какие best practice используются?
Не прошу решить за меня, а просто подтолкните в правильном направлении.

Спасибо.
...
Рейтинг: 0 / 0
Связь один к одному по множеству полей, как правильно?
    #39794383
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FJ-JFМой вопрос: как правильно архитектурно построить таблицу (ы) для решения данной задачи?
Ваш вопрос несколько преждевременен. Универсальный ответ на него: так, чтобы она соответствовала бизнес-логике. А вот бизнес-логика в постановке задачи пока что не проработана; когда проработаете - тогда станет намного яснее, как строить модель.

Просто как пример: допустим, на товары Samsung вы даёте скидку 10%. На телефоны вы даёте скидку 20%. Если товара на складе мало, вы даёте скидку 30%. Вопрос: какую скидку вы дадите покупателю, желающему купить Samsung Galaxy SIII?
...
Рейтинг: 0 / 0
Связь один к одному по множеству полей, как правильно?
    #39794450
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно разделить на 2 таблицы - Скидки (Название, ПериодДействия, Активность, Размер, ...) и УсловияСкидок (ТипУсловия (AND или OR), СтрокаУсловия, ...). Это потребует создания простенького (а может и не очень простенького) интерпретатора строк условий, но зато не надо мучиться со сложной структурой.
Ну и Вам, конечно, надо определиться - Вы хотите от системы скорости или универсальности.
Если надо на лету рассчитывать скидки для сотен тысяч товаров для каждого покупателя отдельно - возможно, универсальностью придется жертвовать.
...
Рейтинг: 0 / 0
Связь один к одному по множеству полей, как правильно?
    #39794583
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FJ-JF,

делайте условия скидок в таблице Discount. Будет 11 полей или больше. Ну и что? Можно разделить на две таблицы или ещё помудрить. Но только, если условия по скидкам совсем неопределённые, заказчик планирует сам придумывать схемы.
...
Рейтинг: 0 / 0
Связь один к одному по множеству полей, как правильно?
    #39796051
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FJ-JF,

Курсач? Абстрактная задача супермаркета на необитаемом острове?

Реально то, - ты хоть 20 условий скидок придумай, но если в соседнем магазине телевизор дешевле, твой никто не купит...

Проще плясять от цены закупки, если не можешь выставить от неё конкурентную цену продажи, которая обеспечит аренду, зарплату, налоги и прибыль - все остальное не имеет смысла...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь один к одному по множеству полей, как правильно?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]