本期余額=上次余額+收入-支出
怎么能讓明細的表現變成這種的
時間 ----------- 交易類型 ---- 收入/支出 ---- 可用余額
2018-03-13 ---- 購買 ---------- -100 ---------- 270
2018-03-12 ---- 出售 ------------ 50 ----------- 370
2018-03-11 ---- 充值 ------------ 50 ----------- 320
2018-03-10 ---- 購買 ----------- -30 ----------- 270
2018-03-09 ---- 充值 ----------- 300 ---------- 300
流水表結構是這樣的。
用戶id --- 時間 ----------- 交易類型 ------ 操作類型 ----- 變動金額
----1 -----2018-03-09 ------ 充值 ------------ 收入---------- 300
----1 -----2018-03-10 ------ 購買 ------------ 支出---------- 30
----1 -----2019-03-11 ------ 充值 ------------ 收入---------- 50
----1 -----2019-03-12 ------ 出售 ------------ 支出---------- 50
----1 -----2019-03-13 ------ 購買 ------------ 支出---------- 100
不用單獨記錄這種余額字段,可用余額就是統(tǒng)計出來的。
有經驗的朋友指點一下好嗎?現在就是不知道怎么統(tǒng)計出這種效果。
我覺得還是需要在記錄每一筆交易記錄的同時,把當前余額也記錄下來會比較好。
下面來說你這種情況:
計算公式就是:
某條交易記錄余額 = 當前余額 - (某條交易記錄時間點 ~ 現在時間點之間的充值金額總和) + (某條交易記錄時間點 ~ 當前時間點之間的消費記錄總和)
以上只是操作類型為簡單的增加
和減少
的時候。
這種方式,在時時統(tǒng)計的時候,效率還是太慢了。建議還是需要加一個交易余額的字段。
書接上文,大兄弟你也太糾結了...
其實你給出的兩種情況,自己取舍一下就知道哪種快速、直接了。
你有消費(充值或者支出)的時候,計算完當前余額,拿著你的這個余額,更新你的用戶表余額。
然后再用你的這個余額,直接放在消費記錄里插入就好了。
維護起來比起你時時統(tǒng)計的要簡單多了。
我還在另外一個表里面有個 總余額字段,這里明細這里再記錄個余額字段,感覺有點別扭。
你們都怎么做的呢?
比如我更新另外一個余額表字段,這個明細里面的余額也要更新一次嗎?
用戶交易明細表
用戶id | 時間 | 交易類型 | 操作類型 | 變動金額 | 當前余額 |
---|---|---|---|---|---|
1 | 2018-03-09 | 充值 | 收入 | 300 | 300 |
1 | 2018-03-10 | 購買 | 支出 | 30 | 270 |
1 | 2019-03-11 | 充值 | 收入 | 50 | 330 |
1 | 2019-03-12 | 出售 | 收入 | 50 | 380 |
1 | 2019-03-13 | 轉賬 | 支出 | 200 | 180 |
我還有另外一個表是記錄余額的,與用戶基礎信息表是1對1關系。
用戶余額表
用戶id | 余額 |
---|---|
1 | 180 |
2 | 200 |
3 | 100 |
如果按照我這種設計有問題嗎? 兩個表都有余額。
比如我現在要做一個操作,用戶id=1 轉賬-100,給用戶id=2。
那我要先去 用戶余額表,進行給用戶id=1,扣除100,更新成新的余額。
然后,我要 去交易明細表 插入一個交易記錄,id=1,轉賬類型,支出,100,
再計算一下,當前余額。
現在計算有兩種辦法,
一種是用 用戶余額表里面的id=1的余額,減去 100,更新給 交易明細表 的當前余額字段。
另一種是,去交易明細表 找上一條交易明細的當前余額值,再扣除 100 ,更新給這個新的交易明細。
問題來了?我該怎么做呢?用哪種方式更新,這個新交易明細里的 當前余額。
同時我還要操作id=2的用戶,他要增加 100,上面的操作,還要再來一遍。
感覺好復雜,感覺控制不好,就要出錯。
按照我這種設計,有毛病嗎?你們都怎么做的呢?
這要維護 兩個表的余額字段,不能出錯。好處是查詢快?不用復雜的sql語句統(tǒng)計?
如果不加這個當前余額,用sql語句自動算出來返回給php結果集,這種效率低?
怎么取舍???
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數據專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯網學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。