我想设计一个能够记录金融交易的数据库。我想把它设计成一个产品,以便它可以用于任何类型的金融交易。有一些特定于金融交易数据库设计的设计原则可以帮助我使数据库在长期内更耐用,同时最小化架构级别。一些很好的例子也将是一个很好的帮助。
谢谢
答案 0 :(得分:18)
金融系统特有的一些内容包括内部控制(这是一个关键的会计术语,做一些研究才能真正想到这一点)。输入支票价值的人也不能批准。诸如使用存储过程而不是从应用程序生成的SQL这样的事情,这样你就可以只限制权限(根本没有动态SQL - 在金融系统中),因此用户只能做他们有权做的事情。除了生产dba和表的替代之外,没有任何人的权利。欺诈是你试图保护系统免受外部攻击。安全对金融系统至关重要。
您还需要审核表来了解更改了哪些数据以及更改旧值的时间和内容。这不仅是帮助发现问题的另一种方法,如果有人绕过内部控制(或系统忘记实施一些关键的)偷了钱,但是能够在不必恢复的情况下撤消错误通常是至关重要的。一般而言,会计系统通常具有用户无法查看的数据字段,这些数据字段是通过默认值或用户未看到的方式生成的。
另一件事是您需要及时查看操作,以便看起来像自然关系的事情可能需要非规范化以保留操作发生时的成本。因此,如果您有一个小时费率表,您可以将其用作查询,以便在您不进行查询时获取操作时的费率,以便在查询时获得费率。
财务系统中包含私人数据,几乎总是认为您将如何保护这些数据。您需要加密和解密数据。您可能也想要加密备份。
这些数据是公司的生命线,您必须拥有良好的备份计划并进行大量的实践恢复。异地备份至关重要。
数据完整性至关重要。您需要正确的数据类型,并且需要pk / fk关系,约束和触发器来强制执行规则。金融系统无法承受孤立的记录。
您需要非常仔细地考虑删除。财务系统经常进行软删除(将记录标记为已删除以避免丢失历史数据。是的XYZ公司不再是客户,但您不想丢失过去订单的财务历史。我甚至都不会考虑在金融系统中使用级联删除。
不要只是在设计系统时与会计师交谈,与将运行系统的财务人员和将审核结果的审计人员交谈。阅读并彻底了解您所设计国家/地区的已发布会计准则。看看税务影响。这很复杂。
考虑数据仓库和归档数据。财务系统通常会查询旧数据以进行报告,报告对于财务系统而言是大的,大的,大的。想一想如何在不影响日常数据输入的情况下有效地做到这一点。
答案 1 :(得分:3)
根据您实际想要实现的目标,为了创建一个有用的“金融交易”系统,您需要自学有关期刊,分类账和其他会计细节。它不像在表格中记录实际交易那么简单......
实际上,我认为您不会发现金融系统的数据库设计原则与任何需要100%正确信息的数据库系统有所不同。
因此,在使用数据库时阅读以下内容从不会伤害任何人:
Database Design Best Practices
Do you source control your databases?