上一章我们讲到了数据库的应用范围非常广泛。如果没有了数据库,可能我们未来寸步难行。
学计算机的男孩、女孩现在都挺多。特别是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加密后与数据库的密码进行对比。
一致则密码通过。不一致则用户将密码输入错误了。
这样就实现保证用户密码安全,防止内部人员泄漏用户密码的可能性。
更多的密码知识,我们在下册和进阶项目中更多的为大家讲解。