我想设计一个数据库,它将保存金融交易的记录。我想把它设计成一个产品,这样它就可以用于任何类型的金融transaction.Are。有一些特定于金融交易数据库设计的设计原则,可以帮助我以最小的体系结构级别使数据库更持久,changes.Some好的例子也将是一个很大的帮助。
谢谢
发布于 2010-01-26 22:25:13
一些金融系统特有的东西包括内部控制(这是一个关键的会计术语,做一些研究来真正思考这一点)。像输入检验值的人也不能批准它。使用存储的过程,而不是从应用程序生成的SQL,这样您就可以将权限限制为只有过程(在财务系统中永远不会有动态SQL ),因此用户只能执行他们有权执行的操作。除了生产数据库管理员和表的替代用户之外,任何人都没有权限。欺诈是您试图保护系统免受外部攻击的东西。安全性对金融系统至关重要。
您还需要审核表来了解谁更改了哪些数据,以及何时更改了旧值。这不仅是在有人绕过内部控制(或系统忘记实现一些关键控制)偷钱时帮助发现问题的另一种方法,而且能够在不必恢复的情况下撤销错误通常也是至关重要的。一般来说,会计系统通常具有用户不可见的数据字段,这些数据字段是通过默认值或用户看不到它们的方式生成的。
另一件事是,您需要及时查看操作,因此可能看起来像是自然关系的事情可能需要去规范化,以保留操作发生时的成本。因此,如果您有一个每小时费率表,您将使用它作为查找,以获得操作时的费率,而不是连接到该表,以在查询时获得费率。
金融系统中有私有数据,几乎总是要考虑如何保护这些数据。您需要对数据进行加密和解密。您可能还需要一个加密的备份。
这些数据是公司的命脉,重要的是你要有一个好的备份计划和大量的恢复练习。异地备份至关重要。
数据完整性至关重要。您需要正确的数据类型,并且需要pk/fk关系、约束和触发器来执行规则。一个金融系统不能有孤立的记录。
您需要非常仔细地考虑删除操作。金融系统经常执行软删除(将记录标记为已删除,以避免丢失历史数据。是的,XYZ公司不再是客户,但你不想丢失他们过去订单的财务历史记录。我甚至不会考虑在金融系统中使用级联删除。
在设计系统时,不要只与会计交谈,而要与运行系统的财务人员和审计结果的审计人员交谈。阅读并透彻地了解为您设计的国家已发布的会计准则。看看税收方面的影响。这是很复杂的东西。
考虑一下数据仓库和归档数据。金融系统经常查询旧数据以获取报告,对于金融系统来说,报告非常大,非常大。想一想如何在不影响日常数据输入的情况下有效地做到这一点。
发布于 2010-01-26 14:38:03
要想创建一个有用的“金融交易”系统,你需要自学有关日记帐、账本和其他会计细节的知识,这取决于你实际想要实现的目标。它不像在表中记录实际事务那么简单……
真的,我不认为你会发现金融系统的数据库设计原则与任何需要信息100%正确的数据库系统都有很大的不同。
因此,在使用数据库时阅读以下内容不会伤害任何人:
Database Design Best Practices
Do you source control your databases?
https://stackoverflow.com/questions/2137754
复制相似问题