2010-04-25 3 views
1

Мне нужно создать базу данных смены сотрудника. поэтому у меня есть 3 таблицы до сих пор, сотрудник, employee_shift и shiftРасписание SQL для сотрудника

Предположим, чтобы рассчитать, сколько сдвигов работник сделал в конце месяца, мой вопрос означает, потому что у месяца есть 30 дней, у некоторых есть 28 и 31 день.

это означает, что мне нужно создать в таблице сдвига 31 различные варианты? один за каждый день месяца? чтобы рассчитать, какой из сотрудников работал больше всего?

В моих деловых отношениях он говорит, что у сотрудника есть 1 или 2 смены в день, поэтому у меня должно быть 60 различных строк вариаций? im i right или есть простой способ его работы

ответ

0

Я хотел бы использовать три таблицы, как это:

Employee - EmployeeId, EmployeeName etc. 
ShiftRecords - ShiftRecordId, EmployeeId, InTime, OutTime 
Shift - ShiftId, ShiftStartTime, ShiftEndTime 

Если есть вероятность того, что время переключения будет меняться, вы можете включить сдвиг даты начала и окончания вместе с IsActive столбца в таблице Shift.

+0

вы можете создать оператор выбора, чтобы показать emp с самым высоким сдвигом в течение определенного месяца – 2010-04-26 20:03:27

0

Я также придерживался трех таблиц: Employee, Shifts и Employee_InOut. Последняя таблица будет иметь столбцы для даты, времени и времени выхода. Время вовремя и время будет ключом, чтобы узнать, какой сдвиг выполняет сотрудник. Поэтому я могу просто пересчитать количество сдвигов вместе со сменными деталями для сотрудника в течение месяца. Это будет просто.

+0

№ YOu dont - и вы должны заставить кого-то помочь вам конструировать, потому что если вы попробуете таблицу полей 60 для этого, вы в основном слепые, пытающиеся создать базу данных sql. Попросите кого-нибудь в компании помочь вам. Тот, кто знает основы SQL. TH узнаете;) – TomTom

+0

Просто вернитесь к основам РСУБД и нормализации. Помещение стольких полей ограничит вашу гибкость и просто увеличит сложность многих сгибов. – Kangkan

0
  1. Вы не можете вставлять данные в столбцы TimeStamp. Используйте Время вместо этого.
  2. У вас не может быть Emp_Id и Shift_Id в качестве основного ключа, поскольку это повторяется. Если вам действительно нужен первичный ключ, добавьте еще один столбец: Shift_Record_Id.

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