Mysql娛樂化講解表關(guān)系
上一章我們講到了數(shù)據(jù)庫(kù)的應(yīng)用范圍非常廣泛。如果沒有了數(shù)據(jù)庫(kù),可能我們未來(lái)寸步難行。
學(xué)計(jì)算機(jī)的男孩、女孩現(xiàn)在都挺多。特別是80、90后互聯(lián)網(wǎng)原著民,很多人都特別愛玩游戲。我們通過(guò)游戲里面的用戶裝備信息講解表的關(guān)系。
銀行取錢、轉(zhuǎn)賬、發(fā)紅包也是我們?nèi)粘V凶畛S勉y行卡操作,我們還用銀行卡的存取講解表的關(guān)系。
游戲里裝備和用戶的關(guān)系
在游戲里面的某個(gè)人物有頭盔、衣服、靴子、武器、項(xiàng)鏈。
并且,每一個(gè)不同的武器會(huì)增加上不同的攻防值。那我們就可以這么來(lái)模擬游戲的表設(shè)計(jì)。
注:以下僅為了讓大家更加理解游戲里、用戶和裝備的關(guān)系。
用戶表
用戶編號(hào) | 用戶名 | 面具 | 靴子 | 武器 |
---|---|---|---|---|
1 | 骷髏王 | 1 | 6 | |
2 | 混沌騎士 | 4 | 2 | |
3 | 半人馬 | 3 | 7 |
裝備表
裝備ID | 裝備名 | 恢復(fù)血 | 恢復(fù)魔 | 防御 |
---|---|---|---|---|
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 | 幽魂權(quán)杖 | 11 | 33 | 45 |
用戶表中骷髏王帶上了裝備表中編號(hào)為1(死亡面具)和使用了編號(hào)為6(魔棒)的武器。
而用戶3(半人馬),使用了裝備表中編號(hào)為3(的速度之靴)和7(幽魂權(quán)杖)。
這樣就實(shí)現(xiàn)了游戲中某些用戶戴上了裝備。如果用戶的行和列數(shù)據(jù)里面沒有這個(gè)選項(xiàng)的話,則沒有這個(gè)數(shù)據(jù)。
通過(guò)裝備的屬性值,與用戶等級(jí)屬性值相加就實(shí)現(xiàn)了用戶穿上裝備好的回血、防御值增加等不同的效果。
銀行開戶、取現(xiàn)和轉(zhuǎn)載
我們?cè)谌粘I钪薪?jīng)常進(jìn)行的一個(gè)活動(dòng)就是使用銀行卡付錢,在銀行的賬單中,忠實(shí)的記錄著我們每一筆交易。
我們來(lái)通過(guò)表格的方式來(lái)模擬:
銀行卡ID | 銀行卡號(hào) | 密碼 | 是否凍結(jié) | 余額 |
---|---|---|---|---|
1 | 6222 0202 0002 66014 | e10adc3949ba59abbe56e057f20f883e | 0 | 12345.00 |
2 | 5423 4321 4567 8889 | 5bd2026f128662763c532f2f4b6f2476 | 1 | 45.58 |
上表中設(shè)計(jì)了用戶的銀行卡ID、卡號(hào)、密碼、是否凍結(jié)和余額。
場(chǎng)景模擬:
- 用戶插入卡、輸入密碼正確后。則可以取錢
- 社會(huì)工程學(xué)中,人們喜歡用相同的密碼。因此,用戶的密碼必須要進(jìn)行再次加密,不可逆向解密。因?yàn)楹ε驴吹搅四硞€(gè)用戶的密碼后,用這個(gè)密碼去嘗試用戶的其他銀行卡。
- 我們自行規(guī)定:凍結(jié)狀態(tài)可以設(shè)置為0(未凍結(jié)) 和 1 (凍結(jié)了)。如果銀行收到法院的通知。則將凍結(jié)狀態(tài)設(shè)置為1。有錢也不讓取錢。(這塊業(yè)務(wù)邏輯需要在程序中實(shí)現(xiàn))。
- 用戶若取錢了,或者存錢了將用戶的余額增加或者減少。同時(shí)將記錄,記錄至交易流水中。
交易流水表
銀行卡ID | 操作 | 地點(diǎn) |
---|---|---|
1 | -1000.00 | 北京市百度大廈ATM |
1 | +34000.00 | 上海外灘xx銀行營(yíng)業(yè)室 |
2 | -12.08 | 淘寶網(wǎng)購(gòu) |
每當(dāng)用戶的余額發(fā)生變化的時(shí)候,我們都會(huì)忠實(shí)的記錄到交易流水表中。讓交易可查、可追述。
這樣就模擬了銀行的凍結(jié)、取現(xiàn)、存錢等流程。
注:
密碼必須使用md5等加密方式幫用戶進(jìn)行加密。用戶輸入原密碼如:123456。我們使用md5將用戶輸入的123456加密后與數(shù)據(jù)庫(kù)的密碼進(jìn)行對(duì)比。
一致則密碼通過(guò)。不一致則用戶將密碼輸入錯(cuò)誤了。
這樣就實(shí)現(xiàn)保證用戶密碼安全,防止內(nèi)部人員泄漏用戶密碼的可能性。
更多的密碼知識(shí),我們?cè)谙聝?cè)和進(jìn)階項(xiàng)目中更多的為大家講解。