上一章我們講到了數據庫的應用范圍非常廣泛。如果沒有了數據庫,可能我們未來寸步難行。
學計算機的男孩、女孩現在都挺多。特別是80、90后互聯網原住民,很多人都特別愛玩游戲。我們通過游戲里面的用戶裝備信息講解表的關系。
銀行取錢、轉賬、發紅包也是我們日常中最常用銀行卡操作,我們還用銀行卡的存取講解表的關系。
##游戲里裝備和用戶的關系
在游戲里面的某個人物有頭盔、衣服、靴子、武器、項鏈。
并且,每一個不同的武器會增加上不同的攻防值。那我們就可以這么來模擬游戲的表設計。
> 注:以下僅為了讓大家更加理解游戲里、用戶和裝備的關系。
**用戶表**
| 用戶編號 | 用戶名 | 面具 | 靴子 | 武器 |
| -- | -- | -- | -- | -- | -- |
| 1 | 骷髏王 | 1 | | 6 |
| 2 | 混沌騎士 | 4 | | 2 |
| 3 | 半人馬 | | 3 | 7 |
**裝備表**
| 裝備ID | 裝備名 | 恢復血 | 恢復魔 | 防御 |
| -- | -- | -- | -- | -- |
| 1 | 死亡面具 | 10 |3 | 5|
| 2 | 逃脫匕首 | 22 | 4 | 1 |
| 3 | 速度之靴 | 3 | 4 | 5 |
| 4 | 藝人面具 | 1 | 3 | 4 |
| 5 | 法師斗篷 | 5 | 6 | 3 |
| 6 | 魔棒 | 13 | 32 | 32 |
| 7 | 幽魂權杖 | 11 | 33 |45 |
用戶表中骷髏王帶上了裝備表中編號為1(死亡面具)和使用了編號為6(魔棒)的武器。
而用戶3(半人馬),使用了裝備表中編號為3(的速度之靴)和7(幽魂權杖)。
這樣就實現了游戲中某些用戶戴上了裝備。如果用戶的行和列數據里面沒有這個選項的話,則沒有這個數據。
通過裝備的屬性值,與用戶等級屬性值相加就實現了用戶穿上裝備好的回血、防御值增加等不同的效果。
##銀行開戶、取現和轉帳
我們在日常生活中經常進行的一個活動就是使用銀行卡付錢,在銀行的賬單中,忠實的記錄著我們每一筆交易。
我們來通過表格的方式來模擬:
| 銀行卡ID | 銀行卡號 | 密碼 | 是否凍結 | 余額 |
| -- | -- | -- | -- | -- |
| 1 | 6222 0202 0002 66014 | e10adc3949ba59abbe56e057f20f883e | 0 | 12345.00 |
| 2 | 5423 4321 4567 8889 | 5bd2026f128662763c532f2f4b6f2476 | 1 | 45.58 |
上表中設計了用戶的銀行卡ID、卡號、密碼、是否凍結和余額。
場景模擬:
1. 用戶插入卡、輸入密碼正確后。則可以取錢
2. 社會工程學中,人們喜歡用相同的密碼。因此,用戶的密碼必須要進行再次加密,不可逆向解密。因為害怕看到了某個用戶的密碼后,用這個密碼去嘗試用戶的其他銀行卡。
3. 我們自行規定:凍結狀態可以設置為0(未凍結) 和 1 (凍結了)。如果銀行收到法院的通知。則將凍結狀態設置為1。有錢也不讓取錢。(這塊業務邏輯需要在程序中實現)。
4. 用戶若取錢了,或者存錢了將用戶的余額增加或者減少。同時將記錄,記錄至交易流水中。
**交易流水表**
| 銀行卡ID | 操作 | 地點 |
| -- | -- | -- |
| 1 | -1000.00 | 北京市百度大廈ATM |
| 1 | +34000.00 | 上海外灘xx銀行營業室 |
| 2 | -12.08 | 淘寶網購 |
每當用戶的余額發生變化的時候,我們都會忠實的記錄到交易流水表中。讓交易可查、可追述。
這樣就模擬了銀行的凍結、取現、存錢等流程。
***
注:
密碼必須使用md5等加密方式幫用戶進行加密。用戶輸入原密碼如:123456。我們使用md5將用戶輸入的123456加密后與數據庫的密碼進行對比。
一致則密碼通過。不一致則用戶將密碼輸入錯誤了。
這樣就實現保證用戶密碼安全,防止內部人員泄漏用戶密碼的可能性。
更多的密碼知識,我們在下冊和進階項目中更多的為大家講解。