Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库设计:在哪里存储帐户余额?_Mysql_Sql Server_Database_Oracle_Database Design - Fatal编程技术网

Mysql 数据库设计:在哪里存储帐户余额?

Mysql 数据库设计:在哪里存储帐户余额?,mysql,sql-server,database,oracle,database-design,Mysql,Sql Server,Database,Oracle,Database Design,可能重复: 存储用户帐户余额的最佳位置是哪里?为什么 1) “交易”表,在交易发生时计算;或 2) “帐户”表,在用户每次登录或交易发生时更新。根据规范化规则,您不应存储可以从您拥有的其他数据计算的内容 话虽如此,有哪家银行不储存呢?由于系统的许多部分都使用了余额,因此不可能在每次需要余额时都对所有事务进行计算,因此您可以在这里进行非标准化以提高性能 还有一种替代方法,即通过隔夜计算合并价值,然后根据上次合并后的交易调整价值。我想说的是账户表,因为账户余额应该与账户信息联系在一起?这不仅是不

可能重复:

存储用户帐户余额的最佳位置是哪里?为什么

1) “交易”表,在交易发生时计算;或


2) “帐户”表,在用户每次登录或交易发生时更新。

根据规范化规则,您不应存储可以从您拥有的其他数据计算的内容

话虽如此,有哪家银行不储存呢?由于系统的许多部分都使用了余额,因此不可能在每次需要余额时都对所有事务进行计算,因此您可以在这里进行非标准化以提高性能


还有一种替代方法,即通过隔夜计算合并价值,然后根据上次合并后的交易调整价值。

我想说的是账户表,因为账户余额应该与账户信息联系在一起?这不仅是不可能的,也是不合法的。您实际上不需要帐户值,但需要数字和时间戳。为了便于审计,您需要知道当时的价值是多少。@TomTom也感谢您提供的法律见解。我是纯粹来自技术方面的,但你必须考虑法律问题。是的。记住对账单。即使您在几周后取消交易,1月13日的交易也必须看起来相同;)这就是为什么你从不更正价值观,总是进行柜台交易。另外,您的交易可能尚未生效(到期日在未来);)@汤姆-好建议。谢谢。由于事务是在创建事务时计算的,“挂起”事务会发生什么情况?(如果挂起的事务失败或挂起的事务完成,会发生什么情况)?