2013-09-12 2 views
1

Я планирую создать базу данных для отслеживания времени пользователя в/время M-F. Каждую неделю следует начинать в понедельник и проходить через воскресенье.Дизайн базы данных для отслеживания еженедельного времени

У меня есть таблица, заполненная всей моей популяцией пользователей, поэтому я знаю, какие пользователи мне нужно создавать записи и где они принадлежат. Я предложил до сих пор, таблица, состоящая из следующих полей для отслеживания записей (наряду с примерами данных для заполнения поля):

Field Name in table (Example of possible data) 
--------------------- 
Employee (John Smith) 'String 
Unit (Quality Assurance) 'String 
WeekOf (9/9/13) 'date 

InMonday (6:30) 'string, validate either a time in/out or N/A if holiday/vacation 
OutMonday (3:15) '^^ 
HoursWorkedMonday (8.00) 'total hours worked 
VacationMonday (0.00) 'if N/A for time, should have hours here 
OvertimeMonday (0.00) 'any additional work hours should go here 

Для этого, например, я бы создать In/Out на каждый день (и, возможно, отслеживать дату, для которой каждый день). Является ли это посторонним или есть, по-видимому, лучшая организация для отслеживания еженедельных измерений времени? Должен ли я использовать одну таблицу с индикатором единицы или несколькими таблицами для каждой единицы?

ответ

2

Обычно это одна таблица с полем «Дата», поле «В поле» и поле «Выход». Это почти стандартные данные расписания. Посмотрите, как он установил this guy.

Убедитесь, что вы используете идентификатор сотрудника в расписании, а затем у вас будет соответствующая таблица сотрудников со всей необходимой информацией (ID, имя, адрес, все остальное, что вы храните на нем).

+0

Ах я вижу, то я могу присоединиться, что другие данные, то когда мне нужно. Поэтому почти каждый пользователь должен иметь ежедневное время. Поэтому, если я вводю неделю за раз, я должен создать учетные записи за неделю для моих пользователей, а затем придумать способ потянуть их в мой интерфейс для редактирования. Должен ли я разбить это на таблицы «единиц» или сохранить единицу в качестве поля в основной таблице? Как вы справляетесь с управляемостью, например, будет много пользователей. Редактировать: по лотам, я имею в виду пару сотен в день –

+1

Я не уверен на 100%, что вы в конечном итоге хотите делать с данными. Если вы говорите о хранении часов вместо фактического Time In/Time Out, тогда я бы сохранил фактические единицы вместо этих полей. Просто одно поле «TimeWorked», а затем введите количество часов. Что касается редактирования этих данных, когда он находится в базе данных (в отличие от просто добавления новой записи), вы можете перенести данные и затем записать их обратно в ячейку по ячейке. В общем, вы не хотите создавать открытое соединение с вашими данными, ВСЕГДА используйте несвязанные формы. Это затрудняет запись ненужных записей в таблицу. –

+0

Извините, я имею в виду, когда дело доходит до создания фактических таблиц, как я должен группировать свои данные в таблицы. Скажем, я работаю в «Департаменте запасных частей», если у меня есть таблица для «Департамента деталей», «Департамент комиссии» и т. Д., Или это должно быть полем «ОТДЕЛ» в одной таблице, чтобы отслеживать время. IE, я думаю, мне понадобится запрос объединения, если я захочу увидеть все данные в одном, если его разделение, и данные, находящиеся в одной таблице, с полем «department». –

1

Хотя этот проект технически осуществим, я должен задать вопрос о том, как сделать его самостоятельно в Access.

  1. Основная проблема с безопасностью:

    • Как настольной программы, это может быть очень легко взломать без предосторожностей. Имейте в виду, что с помощью Access пользовательский интерфейс и интерфейс дизайнера по умолчанию одинаковы.
      • Если это будет простой, простой дебют, мотивированный пользователь просто должен открыть панель навигации, и они могут добавлять/редактировать/удалять все расписания.
      • Если вы скрываете навигационную панель, пользователь может просто выполнить быстрый поиск в Google и научиться ударять F11 (или найти его случайно, в любом случае)
      • Вы можете попробовать регулярно (ежедневно? Почасово?) Переносить данные от общедоступного back-end до архива db, который недоступен для обычных пользователей. Это может работать, но все же дает им окно для редактирования записей. И если вы не сделаете право на передачу, они все равно могут добавить старые записи.
    • Как веб-форма на SharePoint, это может быть довольно безопасно. Я бы рекомендовал это, если у вас есть Sharepoint.
  2. Вы также должны учитывать ваше время разработки. Это очень общая бизнес-задача во многих отраслях промышленности: от ресторанов до фабрик до школ. Таким образом, существует огромное количество дешевых веб-вариантов, которые уже существуют, и вы можете начать использовать сегодня. Я даже предполагаю, что некоторые из них включают в себя итоговые обзоры, которые также выходят из числа департаментов.

    Я никогда не исследовал это сам, но быстрый поиск Google нашел интересную страницу: http://en.wikipedia.org/wiki/Comparison_of_time_tracking_software

+0

Я не указал, но я буду делать это в vb.net, отключен с паролем в базе данных. Лучше, чем текущая ситуация с большими таблицами Excel. Данные действуют как проверка ручных листов. Спасибо за ссылки, я сейчас посмотрю. –

+0

Это звучит лучше (я изображал автономный db на общем диске). Что касается ссылок, я вроде как те, которые даже не требуют ввода пользователя. Вы можете просто измерить часы между первым щелчком мыши и последним щелчком мыши дня. – PowerUser

+0

Может ли пояснитель пояснить? Я всегда открыт для новых идей. – PowerUser

Смежные вопросы