目标:将过度生长的Excel工作表转换为Access数据库,但保持熟悉且易于使用的前端。
这有几个方面,但我坚持的是输入形式之一。我不打算用我已经尝试的后端实现来混淆这个问题,因为我愿意改变它。目前,Excel电子表格用于将员工小时分配输入到各种任务。它看起来像下面这样。
Employee | Task | 10/03/10 | 10/10/10 | 10/17/10 | 10/24/10 | ... | 12/26/11
---------------------------------------------------------------------------------
Doe, John | Code | 16 | 16 | 20 | 20 | ... | 40
---------------------------------------------------------------------------------
Smith, Jane | Code | 32 | 32 | 16 | 32 | ... | 32
---------------------------------------------------------------------------------
Doe, John | Test | 24 | 24 | 20 | 20 | ... | 0
---------------------------------------------------------------------------------
Smith, Jane | Test | 0 | 0 | 16 | 0 | ... | 0
---------------------------------------------------------------------------------
Smith, Jane | QA | 8 | 8 | 8 | 8 | ... | 8
---------------------------------------------------------------------------------
TOTAL | 80 | 80 | 80 | 80 | ... | 80
请注意,工作表上有十五个月的数据,并且在这十五个月的每周输入员工分配。目前,在十五个月结束时,会创建一个新工作表,但数据库应保留此数据用于历史目的。
有没有人对如何创建具有相同外观和感觉的可编辑表单/数据表有任何想法?如果没有,那么替代解决方案如何能够让用户快速浏览所有十五个月并且可以轻松编辑数据?对于您提出的解决方案,后端表会是什么样的?
答案 0 :(得分:2)
这是一个典型的反规范化问题。
要生成可编辑的电子表格,例如数据库视图,您需要一个包含66列的表格(两个标识列和64个每周整数列)。问题是您是希望数据的永久存储使用此表,还是使用带有四列的标准化表(两个标识符,周开始日期和整数小时值)。
我会认真考虑以规范化形式存储数据,然后将(使用临时表)转换为非规范化形式,允许用户打印/编辑数据,然后转换回正常形式。
使用这种技术可以获得以下好处:
支持滚动窗口进入数据的能力(66列,您将看到指定的15个月期间,没有其他期间)。使用滚动窗口,您可以在上个月和接下来的14个月或其他任何时间显示它们。
执行诸如检查每个月的总小时数,或者比较测试与QA在任意日期范围内所花费的小时数相比,会更加容易。
当然,您必须编写代码以在正常和非正规形式之间进行转换,但这应该非常简单。