我必须生成一个显示每月跟踪的视图。最终的观点将是这样的:
|人|任务| Jan |二月|三月|四月|五月|六月。 。
|乔|屋顶工作| 100%| 50%| 50%| 25%|
|乔|地下室工作| 0%| 50%| 50%| 75%|
|汤姆|地下室工作| 100%| 100%| 100%| 100%|
我已经有以下表格:
我现在在上面的2个表中创建一个新的外键表,我试图弄清楚创建1或2个表的优缺点。
使用以下列创建一个新表:
或
有2张单独的表格
只有一张表
和另一个表格仅供以下列
所以示例记录将是
| 1 | 13 | 2011年1月| 100%|
其中13表示特定的唯一人员和任务组合。第二种方法可以避免不得不创建新列以继续(这似乎是正确的)但我也想避免过度杀伤。
这将是一种更具伸缩性的方式来拥有此架构。此外,任何其他建议或更优雅的方式也会很棒?
答案 0 :(得分:2)
您可以拥有一个包含数据列的m2m表。我没有看到为什么你不能将MonthYearKey,MonthYearValue与PersonId和TaskId放在同一个表上的原因
Id
TaskId
PersonId
MonthYearKey
MonthYearValue
您可能希望将MonthYearKey移动到他们自己的表中,它实际上归结为常见查询以及此数据的用途。
我会注意到,您永远不想设计一个由于时间而添加列的架构。第一个选项需要一直维护,并且也很难查询。
答案 1 :(得分:1)
选项2肯定更具可扩展性并且不会过度。
选项1要求您每月添加一个新列,并且无法对数据进行简单的基于日期的查询,例如:告诉我去年任何一个月至少工作90%的人。
最终视图将从特定查询或数据视图生成。