金融交易系统数据库架构设计的原则是什么?

15

我希望设计一个用于记录金融交易的数据库。我希望将其设计为一个产品,以便它可以用于任何类型的金融交易。是否有一些针对金融交易数据库设计的设计原则,可以帮助我使数据库在长期内更加耐用,并减少架构层面的变化。一些好的例子将会很有帮助。

谢谢

2个回答

19
一些特别针对金融系统的事项包括内部控制(这是一个关键的会计术语,需要进行一些研究才能真正理解)。例如,输入支票金额的人不能同时批准支票。例如,使用存储过程而不是从应用程序生成SQL,以便您可以仅限于过程中的权限(在金融系统中绝不能使用动态SQL),因此用户只能执行其被授权的操作。除了生产DBA和表的备选者之外,任何人都没有权限。欺诈是您试图保护系统免受攻击的原因,而不仅仅是外部攻击。安全对于金融系统非常重要。
您还需要审计表来了解谁何时更改了什么数据以及旧值是什么。如果有人绕过了内部控制(或系统忘记实施某些关键控制项)窃取了资金,这不仅是帮助查找问题的另一种方法,而且通常是撤销错误而无需还原的关键。通常,会计系统具有用户无法查看的数据字段,并且这些数据字段是通过默认值或用户无法查看它们的方式生成的。
另一件事是您需要按时间查看操作,因此可能需要去规范化以保留操作发生时成本的情况。因此,如果您有一个每小时费率表,则会使用该表作为查找来获取操作发生时的费率,而不是在查询时连接到它以获取费率。
金融系统中含有私人数据,几乎总是如此,请考虑如何保护这些数据。您需要加密和解密数据。您可能也希望有一个加密的备份。
这些数据是公司的命脉,必须拥有良好的备份计划并进行多次还原的实践。外部备份至关重要。
数据完整性至关重要。您需要正确的数据类型,需要PK / FK关系、约束和触发器来执行规则。财务系统不能容忍孤立的记录。

你需要非常谨慎地考虑删除操作。财务系统通常会采用软删除的方式(将记录标记为已删除,以避免丢失历史数据)。是的,XYZ公司不再是客户了,但您不希望失去他们过去订单的财务历史记录。我甚至不会考虑在财务系统中使用级联删除。

在设计系统时,不要只与会计师交流,还要与将运行系统的财务人员和将审核结果的审计人员交流。深入阅读并熟知所设计国家/地区的出版会计准则。考虑税务影响。这是复杂的事情。

考虑数据仓库和归档数据。财务系统通常会查询旧数据以进行报告,报告对于财务系统来说非常重要。想想如何在不影响日常数据输入的情况下有效地完成它。


4
根据你想要实现的目标,为了创建一个有用的“财务交易”系统,你需要学习有关会计的日记账、分类账和其他细节。这不仅仅是在表格中记录实际交易那么简单...
实际上,我认为你不会发现金融系统的数据库设计原则与需要其信息100%正确的任何数据库系统有太大的区别。
因此,在处理数据库时阅读以下内容从未对任何人造成过伤害: 数据库设计最佳实践 您是否对数据库进行源代码控制? 应用程序开发人员常犯的数据库开发错误 您最有用的数据库标准是什么?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接