M_1*_*M_1 12 database-design scheduling data-structures
我正在尝试为我的软件开发公司的大约10-20人编写一个简单的员工计划软件.经过一番考虑后,我决定用Python,Ruby或PHP + Postgres/MySQL DB编写一个Web应用程序.在设计数据库模型时,我开始想知道哪种数据结构实际上最适合这种应用程序.
显示月视图的应用示例与此类似:
OCTOBER 1 2 3 4 5 6 7 8 9 ...
John Apple M M A A N N O O O ...
Daisy Pear O O O M M A A N N ...
Steve Cat A A N N O O O M M ...
Maria Dog N N O O O M M A A ...
Run Code Online (Sandbox Code Playgroud)
其中M - >为早班; A - >下午班次等(字母可以改为代码)
什么数据结构或数据库设计最适合这个?我正在考虑为每个用户存储类似于 - >"MMAANNOOOAAMMNNAAOO ..."的字符串(最多31个字符 - > 1个字符,1天); 月表将包含每个员工的此类字符串.
你会建议什么?
Dam*_*vic 12
我会选择三桌Kimball明星(日期,员工,日程表),因为迟早你会被要求创建(要求)报告.谁工作了大多数夜晚?谁在大多数周末工作?谁不在周末工作?为什么我总是在星期五下午安排?在某一天的某一天,某些员工最有可能不会出现?等等......
表格将是:
Date, Employee, Schedule
您可以预先填写dimDate表10年左右 - 可能需要不时调整"IsHoliday"列.
员工表也很少(相对)变化.
Date, Employee, Schedule
计划表是您填写工作计划的地方,我还为每个班次建议了"HoursOfWork",这样很容易在报告中汇总小时数,例如:"John Doe去年在假期工作了多少小时? "
Date, Employee, Schedule
您也可以将KeyDate,KeyEmployee和Shift组合成一个复合主键,以确保您不能在同一天在同一班次安排同一个人,而不是使用代理KeySchedule.如果使用了代理键,请在应用程序层上进行检查.
查询时,连接表格如下:
Date, Employee, Schedule
如果使用MySQL,可以将MyISAM用于存储引擎并将外键(FK)实现为"仅逻辑" - 使用应用程序层来处理参照完整性.
希望这可以帮助.
归档时间: |
|
查看次数: |
16706 次 |
最近记录: |