设计金融交易系统数据库架构的设计原则?
Posted
技术标签:
【中文标题】设计金融交易系统数据库架构的设计原则?【英文标题】:Design principles for designing database architecture of financial transaction system? 【发布时间】:2011-01-09 09:55:53 【问题描述】:我想设计一个数据库来记录金融交易。我想把它设计成一个产品,这样它就可以用于任何类型的金融交易。是否有一些特定于金融交易数据库设计的设计原则?可以帮助我以最小的架构级别更改使数据库更持久耐用。一些好的例子也会有很大的帮助。
谢谢
【问题讨论】:
【参考方案1】:财务系统特有的一些事情包括内部控制(这是一个重要的会计术语,做一些研究以真正考虑这一点)。输入支票值的人也不能批准它。诸如使用存储过程而不是从应用程序生成的 SQL 之类的事情,这样您就可以将权限限制为仅过程(在金融系统中根本没有动态 SQL),因此用户只能做他们被授权做的事情。除了生产 dba 和表格的替代者之外,任何人都没有任何权利。欺诈是您试图保护系统免受外部攻击的东西。安全性对金融系统至关重要。
您还需要审核表来了解谁更改了哪些数据以及何时更改了旧值以及旧值是什么。如果有人绕过内部控制(或系统忘记实施一些关键控制)偷钱,这不仅是帮助发现问题的另一种方法,而且能够在无需恢复的情况下撤消错误通常是至关重要的。一般而言,会计系统通常具有用户无法查看的数据字段,并且这些数据字段是通过默认值或以用户看不到它们的方式生成的。
另一件事是您需要及时查看操作,因此可能看起来像自然关系的事物可能需要非规范化以保留操作发生时的成本。因此,如果您有一个每小时费率表,您可以使用它作为查询来获取操作时的费率,而不是加入它以获取查询时的费率。
财务系统中几乎总是包含私人数据,请考虑您将如何保护这些数据。您将需要加密和解密数据。您可能还需要加密备份。
这些数据是公司的命脉,拥有良好的备份计划和大量的恢复练习至关重要。异地备份至关重要。
数据完整性至关重要。您需要正确的数据类型,并且需要 pk/fk 关系、约束和触发器来执行规则。金融系统不能承受孤立记录。
您需要非常谨慎地考虑删除。财务系统经常进行软删除(将记录标记为已删除以避免丢失历史数据。是的 XYZ 公司不再是客户,但您不想丢失他们过去的订单的财务历史记录。我什至不会考虑在金融系统中使用级联删除。
在设计系统时不要只与会计师交谈,而应与将运行系统的财务人员和将对结果进行审计的审计员交谈。阅读并彻底了解您正在设计的国家/地区的已发布会计准则。看看税收影响。这是复杂的东西。
考虑数据仓库和归档数据。财务系统经常查询旧数据以获取报告,报告对于财务系统来说非常大、非常大。思考如何在不影响日常数据输入的情况下有效地做到这一点。
【讨论】:
【参考方案2】:根据您实际想要实现的目标,要创建一个有用的“财务交易”系统,您需要自学有关日记帐、分类帐和其他会计细节的知识。它不像在表中记录实际事务那么简单......
真的,我认为您不会发现金融系统的数据库设计原则与任何需要其信息 100% 正确的数据库系统完全不同。
因此,在使用数据库时阅读以下内容不会伤害任何人:
Database Design Best Practices
Do you source control your databases?
Database Development Mistakes Made by App Developers
What are some of your most useful database standards?
【讨论】:
以上是关于设计金融交易系统数据库架构的设计原则?的主要内容,如果未能解决你的问题,请参考以下文章