Планирование управления слотами / сессиями - PullRequest
0 голосов
/ 30 марта 2010

У меня есть структура планирования на две таблицы для хранения доступных слотов по дням и сессиям.

Слот определяется диапазоном времени дня.

CREATE TABLE slot (
  `id` int(11) NOT NULL AUTO_INCREMENT
, `date` date
, `start` time
, `end` time
);

Сессии не могут накладываться друг на друга и должны быть помещены в слот.

CREATE TABLE session (
  `id` int(11) NOT NULL AUTO_INCREMENT
, `date` date
, `start` time
, `end` time
);

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

Пример:

INSERT INTO slot
  (date, start, end)
VALUES
  ("2010-01-01", "10:00", "19:00")
, ("2010-01-02", "10:00", "15:00")
, ("2010-01-02", "16:00", "20:30")
;

INSERT INTO slot
  (date, start, end)
VALUES
  ("2010-01-01", "10:00", "19:00")
, ("2010-01-02", "10:00", "15:00")
, ("2010-01-02", "16:00", "20:30")
;

2010-01-01

   <##><####>                               <- Sessions
 ------------------------------------       <- Slots
10  11  12  13  14  15  16  17  18  19  20

2010-01-02

         <##########>          <########>   <- Sessions
 --------------------    ------------------ <- Slots
10  11  12  13  14  15  16  17  18  19  20

Мне нужно знать, какие промежутки 1 часа я могу использовать:

+------------+-------+-------+
| date       | start | end   |
+------------+-------+-------+
| 2010-01-01 | 13:00 | 14:00 |
| 2010-01-01 | 14:00 | 15:00 |
| 2010-01-01 | 15:00 | 16:00 |
| 2010-01-01 | 16:00 | 17:00 |
| 2010-01-01 | 17:00 | 18:00 |
| 2010-01-01 | 18:00 | 19:00 |
| 2010-01-02 | 10:00 | 11:00 |
| 2010-01-02 | 11:00 | 12:00 |
| 2010-01-02 | 16:00 | 17:00 |
+------------+-------+-------+

1 Ответ

0 голосов
/ 30 марта 2010

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

Я рекомендую просто сделать это на среднем уровне. Сделайте базу данных ответственной за хранение слотов и сеансов и оставьте вычисления более подходящим для этой задачи.

Базы данных предназначены для постоянных знаний, а не для размещения бизнес-логики.

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