0

我正在開發一個可搜索的臨時/兼職人員數據庫,而且我沒有實施其工作時間可用性的經驗。我已經爲員工,技能,代理和客戶開發了架構。現在我需要捕捉員工的每小時可用性。在關係數據庫中表示工作時間/日程表

系統應該能夠代表24/7小時時間表的任意組合,即:

  • 週一8-9am,週二1-5am,週三3-10pm;
  • 週一至週五1-4pm;
  • 週六至週日8 am-6pm;

當然,偶爾會出現全職員工,儘管我在員工表中會想到全職員工將會有一個布爾型字段,而這個時間表/系統將會只有員工兼職才能諮詢。

任何經驗/指導/方向這將是非常感激。

回答

1

我將通過集中在可用性每天用於與以下的列每一個用戶它型號:是星期六以下MySQL的約定其中1是星期日和7

a)白天(1-7)

二)開始時間 - 開始時間可以爲空,如果沒有可用的

C)結束時間 - 結束時間爲空,如果沒有可用的

d)注意到 - 在當天的可用性任何筆記

E)的用戶ID(其時間表被示出的用戶)

f)不可用的id - 是/否

這意味着每個用戶將具有7個可用性記錄。然而,在用戶臉上,你可以進行調整,從一天到另一天的數據副本

+0

感謝,@ssmusoke,這方面的工作。將'天'是一個'INT'類型?你究竟是什麼意思「MySQL約定」? :D – 2012-04-10 10:22:54

+0

星期幾有不同的約定,但MySQL使用1作爲星期日和7星期六,但有些語言在週日使用0,週六使用6。我建議你使用tinyint unsigned(意味着它只能是+ ve),它從1到128,因爲這將足以滿足你的需求。詮釋高達20億,所以你不需要這一切。 – 2012-04-10 11:00:20

+0

aaiyt,我終於做的是增加額外的表'只有等領域Empl_Schedule''Empl_ID','Empl_Day'和'Empl_Time' - 所有TINYINT簽名,所有的複合主鍵。 'Empl_Day'將具有值'1,2..7'和'Empl_Time''0,1..23'。員工可用的任何一天的每個小時都將進行一次行記錄。最後在'Employee'表上有一個布爾型字段'FullTime'。謝謝,@ssmusoke – 2012-04-10 16:16:13

0

爲什麼不在一段時間內創建間隔和用戶之間的關聯? 如果你知道,這是一週經常性的,你選擇任何給定的一週。 如果你知道,現在已是一個月復發,你可以選擇任何給定的月份等..

StartAvailableDateTime1 DATETIME,
AvailableDateTime2 DATETIME,
用戶名INT