Как сохранить данные о буднях вместе со временем начала и окончания в базе данных? - PullRequest
0 голосов
/ 21 июня 2020

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

Я подумал о создании новой таблицы с 7 столбцами на 7 дней, но как насчет времени? тогда потребуются дополнительные 14 столбцов.

Ответы [ 2 ]

1 голос
/ 21 июня 2020

Учитывая тот факт, что магазины могут иметь несколько раз открытия и закрытия в день (легко проверить на Google Maps), может потребоваться несколько записей для каждого магазина. Так почему бы не использовать следующую структуру:

store_id   |   day_of_week    |    start_time    |    end_time

, где day_of_week в [0,6].

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

Обратите внимание, что store_id не будет здесь первичным ключом , но все столбцы вместе (т.е. составной ключ).

1 голос
/ 21 июня 2020

Это довольно сложно. Заманчиво иметь три столбца:

<date of week>  <open time>  <close time>

Однако это усложняется в следующих случаях:

  • Магазины, которые открыты 24 часа в сутки.
  • Магазины, закрывающиеся после полуночи.
  • Магазины с разным графиком работы в праздничные дни.
  • Магазины, закрывающиеся в середине дня (это бывает в некоторых странах).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...