Расписания и база данных - PullRequest
2 голосов
/ 06 декабря 2010

Итак, я ранее разработал систему планирования сотрудников в php.Это было ОЧЕНЬ неэффективно.Когда я создал новое расписание, я сгенерировал строку в таблице под названием «расписания», и для каждого сотрудника, на которого повлияло это расписание, я сгенерировал строку в таблице с именем «schedule_days», в которой указаны время начала и окончания этой конкретной даты,Кроме того, редактирование расписаний также было неудачей.На странице редактирования я вытащил каждого пользователя из базы данных из определенного расписания и распечатал его на странице.Это было очень логично, но очень медленно.

Вы можете себе представить, сколько времени потребуется, чтобы загрузить около 15 сотрудников за недельный график.Это будет 1 запрос для расписания, 1 запрос для каждого пользователя и 7 запросов в день для каждого пользователя. Если у меня 15 пользователей, это слишком много запросов.Так что я просто спрашиваю, что кто-то другой думает о лучшем способе сделать это?

Ответы [ 2 ]

2 голосов
/ 06 декабря 2010

Звучит так, как будто вам нужно научиться выполнять СОЕДИНЕНИЕ, а не совершать многократные поездки на сервер для каждого элемента.

2 голосов
/ 06 декабря 2010

Для расписаний на основе ротации вы хотите использовать систему на основе исключений. Если вы знаете, что сотрудник x работает в ротации y в диапазоне дат z, вы можете вычислить отдельные дни для этого сотрудника на лету. Если они больны / находятся на курсе / и т. Д., Добавьте исключение для сотрудника на этот день. Это сделает базу данных намного меньше, чем отслеживание каждый день для каждого сотрудника.

table employee {EmployeeID}
table employeeRotations {EmployeeRotationID, EmployeeID, RotationID, StartDate, EndDate}
table rotation {RotationID, NumberOfDays, StartDate}
table rotationDay {RotationDayID, RotationID, ScheduledDay, StartTime, EndTime}
table employeeExceptions {EmployeeExceptionID, ExceptionDate, ExceptionTypeID (or whatever you want here)}

Оттуда вы можете написать функцию, которая возвращает On / Off / Exception для любой заданной даты или любой данной недели.

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