我和2個朋友正在開始一個項目,簡單的社交網絡應用程序。問題在於,我們有一個表Wallet
,它將存儲兩個用戶之間的所有事務值的總和。複製數據庫中的數據 - web應用程序項目
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
由於User2
$ 200會產生一個條目:
ID : CreditorUserID : DebtorUserID : TotalDebtAmount
1 User1 User2 -200
但選擇所有債權,債務將需要WHERE CreditorUserId=user OR DebtorUserID=user
並顯示它時,我們會必須檢查當前用戶列在哪一列,並相應地修改金額(正數意味着DebtorUser
欠CreditorUser
並且負數 - 相反,所以當在網站上顯示User2
的債務/信用時,我們需要將-200 $更改爲200 $,因爲User2
在DebtorUserID
列中)。
我們發現重複數據解決方案要容易得多,但該項目主要用於教育目的,因此我們的首要任務是使用良好的編程實踐,並且有人說重複數據不是一種。你怎麼看?
在關係建模,*複製數據*不意味着具有相同的值。這意味着具有相同的值*具有相同的含義*。 –