2012-01-11 1 views
0

Мне было интересно, может ли кто-нибудь показать/сказать мне лучший способ хранить часы работы сотрудников в день в базе данных?SQL-менеджер по работе с базами данных

На данный момент я думал о таблице TimeSheet {timesheetID, employeeID, date, starttime, endtime}, но это может привести к быстрому росту стола?

Я мог бы сделать так, чтобы он хранил только записи за 3 месяца и перемещал остальные в архивную таблицу или просто удалял остальные? (Вероятно, плохой опыт). Поэтому мне было интересно, может ли кто-нибудь объяснить мне другой способ управления расписаниями сотрудников в базе данных.

Спасибо всем :)

+0

Я предлагаю записать часы работы как пару значений DATETIME или как DATETIME и продолжительность в часах. Если вы только записываете «дату», «время начала» и «время окончания», будет неудобно вычислять часы работы для бедного сотрудника, чей переход заканчивается после полуночи. – pilcrow

+0

Сколько у вас сотрудников? Учитывая 1'000 сотрудников, работающих 200 дней в году и добавляющих 5 записей в день - вы смотрите на миллионы строк в этой таблице - в год. Это ничего не ** для любой приличной системы реляционных баз данных! Миллион ** в день ** может быть немного сложной задачей ..... –

ответ

1

ваш подход хороший.

не следует преждевременно оптимизировать.

Индексы будут очень полезны, когда придет время для запроса.

0

Зависит от технологии, которую вы используете, и немного больше от ожидаемого объема.

Современные RDMS предназначены для управления тысячами, сотнями тысяч, миллионами записей. Если вы правильно проектируете и индексируете свои таблицы, вы, вероятно, имеете долгий путь, прежде чем у вас возникнут какие-либо проблемы.

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