powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование базы предложений
11 сообщений из 11, страница 1 из 1
Проектирование базы предложений
    #40112997
Elfix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Столкнулся с проблемой проектирования базы и приложения.

Есть таблица с ценами:

id
create_date
shop_id
product_id
price

Таблица показывает актуальные цены на конкретные продукты в конкретном магазине. Подразумевается, что цена в течение времени может изменяться. В этом случае в таблицу добавляется новая запись с новым значением create_date.

Приложение вытаскивает актуальные (действующие на конкретную дату) и предлагает их купить или заказать.

Вопрос. Как лучше спроектировать базу, чтобы хранить информацию об истории изменения цен в магазине по продукту, но при этом указать приложению, что данный продукт в конкретном магазине на дату запроса больше не продается?

Я думал сделать это простым занулением цены, что будет означать, что товар снят с продажи. Но иногда товар может продаваться бесплатно.

Как лучше организовать? Как это делают интернет-магазины?
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113005
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавь к create_date ещё и delete_date. Заодно и запросы цены на определённую
дату упростятся, поскольку достаточно будет BETWEEN.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113008
Elfix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы имеете ввиду сделать поля "Дата начала" и "Дата окончания"? Тогда возникает новая проблема: нужно контролировать пересечения периодов при попытке добавить новую запись...

Но вариант наверное неплохой...
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113009
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElfixТогда возникает новая проблема: нужно контролировать пересечения периодов при
попытке добавить новую запись...

Можно, но не нужно (ибо напряжно для СУБД). Это задача приложения - корректно
завершить один период и начать новый. В некоторых случаях пользователи могут
даже найти применение для двух одновременно действующих цен. Их фантазия иногда
неописуема.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113045
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И добавьте поле "тип цены", т.к. в общем случае цен может быть несколько (оптовые, ВИП, акционные и пр.).
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113098
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113180
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElfixКак лучше спроектировать базу, чтобы хранить информацию об истории изменения цен в магазине по продукту, но при этом указать приложению, что данный продукт в конкретном магазине на дату запроса больше не продается?Не смешивать сущности цены и количества (признак отсутствия). Ибо экономия копеечная, а гемор реальный (для всех).
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113279
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elfix,

Если "отсутствие цены" и "цена = 0" это разные понятия, то вполне можно для отсутствия цены использовать значение NULL
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113319
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elfix
Я думал сделать это простым занулением цены, что будет означать, что товар снят с продажи. Но иногда товар может продаваться бесплатно.
Как лучше организовать? Как это делают интернет-магазины?


Самый простой и быстрый способ- логическое поле (продается/не продается, по умолчанию продается) В САМОМ КЛАССИФИКАТОРЕ ТОВАРА а не в таблице цен...
Функционал можно расширить, используя вместо логики целое (0 - не продается, 1- продается, 2- ожидается в ближайшее время, 3- только под заказ, ...)
Плюсы:
- самый тупой менеджер без всякого анализа может найти продукт и установить нужное значение.
- не искажаются цено-временные параметры интервалов (не нужно ничего занулять)

Хотя и сомнительна постановка такого вопроса, но всё же не исключена...
Elfix
но при этом указать приложению, что данный продукт в конкретном магазине на дату запроса больше не продается?

то можно признак (продается/не продается) поместить и в таблицу с ценами, тогда это будет хотя бы осмысленно, например с 01.10.21 по 21.10.21 признак 2 (ожидается... ещё едет в магазин)
Вообще-то за прошлые периоды, узнать о том, что товар не продавался можно и по отчетам о продаже и по остаткам на дату...
Наличие расширенного признака в ценах делает анализ более функциональным (сроки доставки например)
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113353
Elfix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,

В самом классификаторе нельзя, так как тогда придется в связанной с ним таблице хранить информацию в каких именно магазинах продается, а в каких нет.
...
Рейтинг: 0 / 0
Проектирование базы предложений
    #40113830
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elfix
Есть таблица с ценами:

Я бы задумался, зачем в ней поле id. Смысла у него, в общем-то, нет.

Elfix
Вопрос. Как лучше спроектировать базу, чтобы хранить информацию об истории изменения цен в магазине по продукту

Для этого нужно добавить к записи пару полей date_from / date_to - цена действует с такого-то момента по такой-то. Соответственно, если на данный момент для данного магазина цены нет - он не может продавать этот товар.

Elfix
Я думал сделать это простым занулением цены

Это плохая практика. Она была вынужденной в шестидесятых-семидесятых годах прошлого века, когда вопрос экономии ресурсов стоял неизмеримо острее, чем сейчас. В 21-м веке баланс изменился, и простая-ясная структура данных, порождающая надёжный безошибочный код, стоит куда дороже, чем экономия пары байтов.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование базы предложений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (9): Анонимы (7), Yandex Bot, Bing Bot
x
x
Закрыть


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