powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / SQL [закрыт для гостей] / Как лучше организовать хранение "слотов" расписания?
7 сообщений из 7, страница 1 из 1
Как лучше организовать хранение "слотов" расписания?
    #746048
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Как лучше организовать хранение "слотов" расписания?

Есть сотрудники, сотрудник оказывает консультации в определённые дни/часы по предварительной записи клиентов. Время на одну консультацию – не более 15 мин.
Например, сотрудник Вася с апреля по май консультирует по вторникам и четвергам, а с мая по июль – только по пятницам. Т.е. в разный период – могут быть разные дни недели.
По времени консультации – это может быть как диапазон (с 8:00 до 12:00, с шагом в 15 мин.), так и «точечные» приёмы, типа только в 9:15, 13:15 и 16:15.
Клиент смотрит онлайн, какие слоты у сотрудника свободны, и записывается к нему.

Решение «в лоб» - при создании расписания сразу генерировать все-все слоты и складывать их в БД.
Т.е. если Вася принимает с января по май по вторникам в 9:15, то для каждого вторника сохраняем в БД дату/время приёма.
Но тогда если Вася работает весь год «по диапазону» - пять дней в неделю с 8:00 до 15:00 (с шагом в 15 мин.), то это получится около тридцати слотов на каждый день, умножаем на кол-во дней в году – что-то больно дохрена, и это только один сотрудник.
Зато с таким подходом наверно легко отображать доступные слоты в календаре для клиентов – не нужно никаких преобразований, либо слот есть, либо его нету.
Но блин…
Как лучше сделать-то?...
Кто-нибудь реализовывал подобное?
...
Рейтинг: 0 / 0
Как лучше организовать хранение "слотов" расписания?
    #746049
Фотография Green
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1  27.03.2024, 14:39
[игнорируется]
Всем привет!

Как лучше организовать хранение "слотов" расписания?

Есть сотрудники, сотрудник оказывает консультации в определённые дни/часы по предварительной записи клиентов. Время на одну консультацию – не более 15 мин.
Например, сотрудник Вася с апреля по май консультирует по вторникам и четвергам, а с мая по июль – только по пятницам. Т.е. в разный период – могут быть разные дни недели.
По времени консультации – это может быть как диапазон (с 8:00 до 12:00, с шагом в 15 мин.), так и «точечные» приёмы, типа только в 9:15, 13:15 и 16:15.
Клиент смотрит онлайн, какие слоты у сотрудника свободны, и записывается к нему.

Решение «в лоб» - при создании расписания сразу генерировать все-все слоты и складывать их в БД.
Т.е. если Вася принимает с января по май по вторникам в 9:15, то для каждого вторника сохраняем в БД дату/время приёма.
Но тогда если Вася работает весь год «по диапазону» - пять дней в неделю с 8:00 до 15:00 (с шагом в 15 мин.), то это получится около тридцати слотов на каждый день, умножаем на кол-во дней в году – что-то больно дохрена, и это только один сотрудник.
Зато с таким подходом наверно легко отображать доступные слоты в календаре для клиентов – не нужно никаких преобразований, либо слот есть, либо его нету.
Но блин…
Как лучше сделать-то?...
Кто-нибудь реализовывал подобное?
Но есть же календарь рабочего времени, который формируется сразу, весь. Можно и слоты сделать. Расход байтов неваженю
...
Рейтинг: 0 / 0
Как лучше организовать хранение "слотов" расписания?
    #746053
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если известено расписание свободных слотов, то можно хранить только занятые слоты для каждого сотрудника. Если слот в базе отсутствует, то приложение отображает этот слот как свободный(хранить в базе его необязательно).
Если у Васи в течение года поплывёт расписание, то придётся менять алгоритм работы системы, чтобы она отображала свободные слоты в соответствии с расписанием. Например, конфигом. И лучше чтобы Вася или его референт сам задавал своё расписание на полгода вперёд, учитывая отпуска.

Другой вариант -- есть таблица юзеров (Вася, Петя, ..) и есть одна таблица слотов (всевозможных). Можно создать что-то вроде маппинга между ними, что-то типа Слот_ID <--> User_ID. Айдишки не займут столько места, как куча слотов на каждого юзера. В этом мапинге можно опять же хранить либо только занятые слоты(но тогда надо определять дополнительно возможные часы присутствия Васей, чтобы посетители не выбирали слоты в нерабочие для Васи часы), либо всевозможные слоты по каждому конкретному юзеру, обновляя статус слота (Занят/Свободен).
...
Изменено: 27.03.2024, 15:03 - Кусь
Рейтинг: 0 / 0
Как лучше организовать хранение "слотов" расписания?
    #746060
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расписание меняется постоянно, и у каждого сотрудника оно может быть своё, отличающееся от остальных.
Единственное что не меняется - это что каждый слот "кратен" 15 минутам, т.е. время всегда либо hh:00, hh:15, hh:30, или hh:45 минут.
...
Рейтинг: 0 / 0
Как лучше организовать хранение "слотов" расписания?
    #746482
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1  27.03.2024, 14:39
[игнорируется]
Но тогда если Вася работает весь год «по диапазону» - пять дней в неделю с 8:00 до 15:00 (с шагом в 15 мин.), то это получится около тридцати слотов на каждый день, умножаем на кол-во дней в году – что-то больно дохрена, и это только один сотрудник.
30*47*5=7050 - на одного сотрудника в год.
Это немного.
1  27.03.2024, 14:39
[игнорируется]
Но блин…
Как лучше сделать-то?...
Вам виднее.
Но я бы ввёл типы занятости, то есть работа по отдельным приёмам и работа в диапазоне.
В диапазоне не надо хранить пустые слоты, только занятые. При этом расчёт доступности слотов не будет жёстко привязан к 15 минутам, а его можно задавать настройкой, которая будет храниться в БД и может зависеть от сезона, например. Недостаток в этом только один, нужно разобраться в построении запроса для генерации слотов на лету. Главным же преимуществом будет то, что в случае изменения времени длительности приёма не придётся пересчитывать ранее созданный график.
...
Рейтинг: 0 / 0
Как лучше организовать хранение "слотов" расписания?
    #746483
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1  27.03.2024, 14:39
[игнорируется]
Кто-нибудь реализовывал подобное?
Системы записи на приём в поликлиниках и госучреждениях :)
...
Рейтинг: 0 / 0
Как лучше организовать хранение "слотов" расписания?
    #749288
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем пока сделал так, посмотрим как оно всё будет ворочаться:
1  27.03.2024, 14:39
[игнорируется]
Решение «в лоб» - при создании расписания сразу генерировать все-все слоты и складывать их в БД.
Т.е. если Вася принимает с января по май по вторникам в 9:15, то для каждого вторника сохраняем в БД дату/время приёма.
Но тогда если Вася работает весь год «по диапазону» - пять дней в неделю с 8:00 до 15:00 (с шагом в 15 мин.), то это получится около тридцати слотов на каждый день, умножаем на кол-во дней в году – что-то больно дохрена, и это только один сотрудник.
Зато с таким подходом наверно легко отображать доступные слоты в календаре для клиентов – не нужно никаких преобразований, либо слот есть, либо его нету.
Всем спасибо за ответы!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / SQL [закрыт для гостей] / Как лучше организовать хранение "слотов" расписания?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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