Оптимизация БД под хранения режима работы - MySQL

Узнай цену своей работы

Формулировка задачи:

Всем привет! Раздумываю над структурой таблицы в которой хранится описание магазинов(адреса, настройки, режим работы...). Возник вопрос как хранить режим работы магазинов, в голову пришло два варианта: 1. Создаю в этой-же таблице еще 16 полей(пон. начало дня, пон. конец дня, втор. н. д., втор. к. д. ...... праздники н. д. праздники к. д.) и туда записываю значения в формате time. 2. Создаю отдельную таблицу, в которой будут 17 полей (id, и вышеописанные 16 полей), При добавлении нового магазина проверяю режим работ с уже существующими в таблице (так как большинство работают по однотипному графику, то шаблонов режимов будет не так много), если шаблон уже есть, то вытаскиваю id этого шаблона и записываю его в основную таблицу с магазинами. Если шаблона нет, то записываю новый шаблон в таблицу, а id записываю в основную таблицу. Плюсы и минусы этих вариантов: При первом исполнении получаем дублирования одинаковых значений(так как в основном режимы работ схожи) но зато удобнее выбирать те магазины которые работают в данный момент (выборка происходит в одном запросе). При втором исполнении, экономим места в БД зато при выводе работающих магазинов создаем два запроса: одним запросом выбираем id шаблонов которые в настоящий момент работают, а уже вторым запросом выбираем магазины у которых эти id присутствуют в поле "режим работы". Плюс ко всему добавляется цикл при вытаскивании id шаблонов, а условия для поиска магазинов может быть с несколько десятков "ОR". Так на каком варианте лучше остановиться, и почему?

Решение задачи: «Оптимизация БД под хранения режима работы»

textual
Листинг программы
SELECT * FROM `магазины`
WHERE `id` IN(
    SELECT `магазин_id` FROM `день_магазин` WHERE `день_id`=1
)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5