我和 2 个朋友正在开始一个项目,一个简单的社交网络应用程序。困扰我的问题是我们有一个表Wallet
,它将存储两个用户之间所有交易值的总和。
TABLE WALLET:
ID,
UserID,
FriendID,
TotalDebtAmount
根据以前版本的经验,我们决定复制钱包条目,因此如果总共User1
欠User2
200 美元,Wallet
将有 2 个条目:
ID : UserID : FriendID : TotalDebtAmount
1 User1 User2 -200
2 User2 USer1 200
这在创建所有用户债务和信用的列表时会很有帮助,因为我们可以只选择所有条目,WHERE UserID=user
. 如果金额为正,我们的朋友欠我们,如果为负,我们欠我们的朋友。
以前的概念是这样的:
TABLE WALLET:
ID,
CreditorUserID,
DebtorUserID,
TotalDebtAmount
欠User1
200User2
美元将生成一个条目:
ID : CreditorUserID : DebtorUserID : TotalDebtAmount
1 User1 User2 -200
但是选择所有信用和债务将需要WHERE CreditorUserId=user OR DebtorUserID=user
并且在显示它时我们必须检查当前用户在哪一列中列出并相应地修改金额(正数表示欠款和负数 - 相反,因此在网站上显示债务/信用DebtorUser
时,我们需要将 -200$ 更改为 200$,如列中所示)。CreditorUser
User2
User2
DebtorUserID
我们发现重复数据解决方案要容易得多,但这个项目主要用于教育目的,所以我们的首要任务是使用良好的编程实践,有些人说重复数据不是一个。你怎么看?