Вопрос по архитектуре бд

iolke

Новичок
Здравствуйте,

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

Есть таблица продуты с полями как в неё интегрировать сезон? Предполагаю устанавливать сезон по месяцам.
как должно быть :
Например
Продукт - мясо
Сезон - круглый год ( 12 месяцев)

продукт -груша
Сезон - март, апрель, май, декабрь

как лучше хранить сезон, в отдельной таблице?
И как связать с продуктом несколько месяцев?
Или опять писать 1000 строк только с одной грушей! Груша - март, груша - апрель И так далее и так хранить

Подскажите варианты? Благодарю
 

WMix

герр M:)ller
Партнер клуба
предствляю таблицу с тремя полями
ид-продукта, от-день-года, до-день-года
 

fixxxer

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

Продуктов тысячи * 12 = дохрена строк
Это немного для современного железа.

Если много продуктов "круглый год", то можно считать отсутствие данных в этой таблице признаком круглогодичности.
 

iolke

Новичок
Тогда таблицу.


Это немного для современного железа.

Если много продуктов "круглый год", то можно считать отсутствие данных в этой таблице признаком круглогодичности.
Думаете Продукт - месяц: такая таблица единственный вариант?
 

fixxxer

К.О.
Партнер клуба
Отдельная таблица нужна для быстрого поиска: если сделать на нее индекс (продукт, месяц), то фильтроваться будет быстро - по индексу.

Можно сделать в таблице продуктов поле типа Set() из 12 полей, но поиск будет фуллсканом (mysql будет проверять каждую строку в таблице продуктов), индекс на поле Set бесполезный (это битмаска, и в индексе будет только полное значение битмаски, а не отдельных битов - так что эффективно получится искать толко по полному совпадению всех месяцев). Я потому про поиск и спросил. Если у вас уже поиск по другим полям устроен неоптимально и приводит к фуллскану, и при этом скорость поиска устраивает - можете сделать Set, хуже не станет.

Я, кстати, тут подразумеваю, что СУБД - это mysql (вы не указали, и я предполагаю). Скажем, в postgresql есть более интересные варианты.
 
Последнее редактирование:

Valick

Новичок
Отдельная таблица нужна для быстрого поиска
Не только для поиска, нормализованная структура БД нужна для работы с данными на уровне СУРБД.

iolke , сделай отдельную таблицу season в которой будет всего два поля id_product и month_number
 

iolke

Новичок
На сегодня вопрос решён обычным образом через отдельную таблицу season
 
Сверху