这根本不是一个编程问题。让我解释一下:我正在创建一个游戏,我需要一个能够存储用户注册数据的数据库(例如用户名,电子邮件,密码)。如果用户获胜,他/她将获得现金积分。用户将能够通过真实货币兑换他/她的现金点,因此我认为现金点是非常非常关键的数据。我的问题是:您是否将现金点数据存储在相同的“用户”表中?或者你会创建一个名为“cash”的新表(例如),然后将其存储到? (从安全的角度来看)
由于
答案 0 :(得分:1)
如果您在cash表中存储现金点,则会被视为不良设计。表格应为normalized
。您应该将现金点存储在单独的表中,并使用userId
作为该表中的外键。您也可以查看加密Cash Points表数据。
答案 1 :(得分:1)
Cashpoints肯定在一个单独的表中,但不是从安全角度来看。从设计角度来看,它会更好,并允许您为每个用户保留CashPoint更改的日志。
答案 2 :(得分:1)
最好是实施一个简单的分类帐系统,将交易作为信用或借记记录在用户帐户中,并且帐户本身具有可以审计的总额。
如果您涉及现金或类似现金的货币,必须记录所执行的交易。如果有人抱怨缺钱,您需要能够验证影响其余额的每笔交易,并发现任何差异。
这也假设您正在利用交易来避免提交未完成的交易。余额调整和交易记录应该是同一笔交易的一部分。
与往常一样,测试尽可能无情。
答案 3 :(得分:1)
那么你应该创建一个类似于银行余额的数据库设计。这样你可以跟踪所有的变化,这是
create table balance
(id int,
debit numeric (10,2),
credit numeric (10,2),
balance_before numeric(10,2),
balance_after numeric(10,2),
timestamp datetime,
user_id int,
description varchar(32),
...
);