我需要在数据库表中创建与财务年度相关联的实体(特别是合同)。这些合同将适用于项目。任何合同变更将通过创建同一财政年度的新合同记录来记录,但原始合同将作为历史记录与项目保持关联。这些项目可以持续数年,因此在任何时候,项目都将拥有每年的实时合同记录以及该年度的任何数量的历史合同。
所有这些都是偶然的,但我试图提供一些背景信息。如果今年的合同 - 这将很容易,我只是将年份存储为1月1日的日期字段或仅仅是整数。然而,合同在财政年度运行,我不知道如何处理这个问题。我不想要一个包含财务年度的单独表,因为我不希望用户必须维护它。我不希望将财务年度存储为字符串“2009/2010”,因为这不是排序/提取数据的理想选择。
任何想法都会有所帮助,到目前为止,我最好的目标是在2栏中开始和结束一年,并且“知道”从一年四月开始等等。
答案 0 :(得分:2)
如果您没有不同类型的财政年度(例如美国1月开始,英国4月开始),那么我只会使用整数并采用标准。例如Fin_Year = 2010意味着截至2010年3月的财政年度(2009/2010)。这不需要额外的表或存储,意思是隐含的,你的代码应该理解Fin_Year是一种特殊的日期。
编辑: UK Government data standard使用结束年代表特定的财政年度。
答案 1 :(得分:0)
+1如果需要存储财政年度,那么我同意Joel。
但是,您可以考虑的另一种方法是仅存储每个合同生效的日期(实际上您可能已经打算这样做)。因此,数据库模式本身并不关心财务年度,但您可以将此逻辑放入查询中。查找当前财政年度的当前和历史合同:
SELECT * FROM Contracts
WHERE StartingDate >= '20090401' AND StartingDate < '20100401'
ORDER BY StartingDate DESC