Ms access MS访问:滚动12个月
我正在进行一项数据库增强,它将添加资源跟踪,用于12个月的前滚(forecast)。换句话说,一个人在这个月、下个月以及12个月后的某个项目上预计花费多少时间;他们目前正在进行的每一个项目的所有信息 我正在考虑最好的方法,并提出以下表格格式(请记住,这是一个现有的数据库,所以一些字段映射到其他表格上的字段) 表格式1:Ms access MS访问:滚动12个月,ms-access,vba,Ms Access,Vba,我正在进行一项数据库增强,它将添加资源跟踪,用于12个月的前滚(forecast)。换句话说,一个人在这个月、下个月以及12个月后的某个项目上预计花费多少时间;他们目前正在进行的每一个项目的所有信息 我正在考虑最好的方法,并提出以下表格格式(请记住,这是一个现有的数据库,所以一些字段映射到其他表格上的字段) 表格式1: 投射 联系人ID 分类(当前/历史) 报告期(截至日期) 容量月 百分比(这是一个人每月在项目上花费的时间) 基本上,每个项目每月(12个月)为联系人创建一个记录。我的保留意见
- 投射
- 联系人ID
- 分类(当前/历史)
- 报告期(截至日期)
- 容量月
- 百分比(这是一个人每月在项目上花费的时间)
- 基本上,每个项目每月(12个月)为联系人创建一个记录。我的保留意见是,该表可以很快获得大量记录。没什么大不了的,但我个人尽量避免
- 投射
- 联系人ID
- 分类(当前/历史)
- 报告期(截至日期)
- 一月
- 二月
- 十二月
- 百分比
- 我还想用M0,M1…M11代替月份名称,作为我的第二点:
我肯定我丢失了信息,所以我会根据需要添加。我无法上传副本,因为它是专有信息。我或多或少地在寻找第二种意见,以最好的方式做这些表格。任何建议或魔鬼倡导者都将不胜感激 数据库设计中始终建议使用规范化,因此我选择表格式1-
[CapacityMonth]
选项。但对于您的情况,以下是第一种方法的几个原因:
- 结构:长格式表格总是比宽格式表格好。在Access中,行是便宜的,因为列涉及表结构设计(例如,Access对行没有限制,但对列有255个限制)。考虑后端更改与前端应用程序设计更改。此外,使用长格式比宽格式(甚至更少的表单/报表控件)更容易索引、查询、聚合、合并和重塑,特别是当您的应用程序随着时间的推移而增长,并且所需的需求可能会变得越来越复杂时。因此,从一开始就要设计效率和可扩展性方面的最佳实践
- 查询:作为报表和数据处理的主干,您希望为查询优化而构建。使用
列,查询所涉及的脚本更少,可维护性更好,可读性更清晰,效率也更高 例如,比较可读性(回想一下读起来像陈述句一样的SQL语句):[CapacityMonth]
从Format2Table中选择[一月]
此外,比较季度/年度总计的汇总查询:从Format1Table中选择[Percent],其中[CapacityMonth]=“一月”
选择Sum([一月])+Sum([二月])+…+按[年度]分组的[年度总计]金额([12月])
最后,要检索列中的月度总计报告,第一种格式需要一个group by查询,而第二种格式需要堆叠的union查询。还有其他例子选择Sum([Percent])作为[YearTotal]分组依据[Year]
- 转换:不用担心,
方法的优点在于,您可以运行交叉表查询,以任何指定顺序获得只读表、报表或电子表格导出的月份列[CapacityMonth]
将总和(百分比)转换为百分比之和 选择ContactID,ProjectID 从Format1Table 按ContactID、ProjectID分组 ‘九月’、‘十月’、‘十一月’、‘十二月’、‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’的枢纽容量代码>
[CapacityMonth]
选项。但对于您的情况,以下是第一种方法的几个原因:
- 结构:长格式表格总是比宽格式表格好。在Access中,行是便宜的,因为列涉及表结构设计(例如,Access对行没有限制,但对列有255个限制)。考虑后端更改与前端应用程序设计更改。此外,使用长格式比宽格式(甚至更少的表单/报表控件)更容易索引、查询、聚合、合并和重塑,特别是当您的应用程序随着时间的推移而增长,并且所需的需求可能会变得越来越复杂时。因此,从一开始就要设计效率和可扩展性方面的最佳实践
- 查询:作为报表和数据处理的主干,您希望为查询优化而构建。使用
列,查询所涉及的脚本更少,可维护性更好,可读性更清晰,效率也更高 例如,比较可读性(回想一下读起来像陈述句一样的SQL语句):[CapacityMonth]
从Format2Table中选择[一月]
此外,比较季度/年度总计的汇总查询:从Format1Table中选择[Percent],其中[CapacityMonth]=“一月”
选择Sum([一月])+Sum([Fe