将关键数据存储到MySQL数据库中

时间:2013-07-15 19:54:11

标签: mysql database security

这根本不是一个编程问题。让我解释一下:我正在创建一个游戏,我需要一个能够存储用户注册数据的数据库(例如用户名,电子邮件,密码)。如果用户获胜,他/她将获得现金积分。用户将能够通过真实货币兑换他/她的现金点,因此我认为现金点是非常非常关键的数据。我的问题是:您是否将现金点数据存储在相同的“用户”表中?或者你会创建一个名为“cash”的新表(例如),然后将其存储到? (从安全的角度来看)

由于

4 个答案:

答案 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),
...
);