個人博客網:https://wushaopei.github.io/ (你想要這里多有)
一、用戶模型設計
電商羡慕中用戶模型的設計涉及以下幾個部分:
以電商平台京東的登錄、注冊頁面作為例:
用戶的基本模塊涉及用戶的賬戶名、密碼、以及手機號碼、所在地等信息。
由個人后台信息截圖可知,用戶的實體信息其實很多,不僅僅是當前頁面所看到的,如下圖:
二、用戶實體屬性的CRUD操作的問題分析
1、當我們確定了需要保存用戶的屬性后,就需要考慮怎么將屬性存到表中了?同時還要考慮保存數據時的一些問題以及優劣性分析!
在將數據進行保存操作時會出現如下幾個問題:
1、數據插入異常
PK : 用戶登錄名
用戶表 :{登錄名 ... ... 會員級別,級別積分上限,級別積分下線}
insert into 用戶表(會員級別)values(`青銅`);
2、數據更新異常
要修改某一行的值時,不得不修改多行數據
例: 用戶等級: 青銅級 —> 注冊會員
update 用戶表 set 等級= `注冊會員` where 等級= `青銅級`
3、數據刪除異常
刪除某一數據時不得不同時刪除另一數據
例: 如何刪除用戶等級名為青銅的等級
delete from 用戶表 where 用戶等級=`青銅`;
4、數據存在冗余
5、數據表過寬,會影響修改表結構的效率
三、用戶實體屬性的操作問題的解決方式
遵守數據庫的設計方式:
- 設計方式是數據庫設計的規范
- 有多種設計范式,如數據庫設計第一范式,第二范式和第三范式
- 數據庫設計最低要滿足第三范式的要求
1、第三范式(3NF)的定義
一個表中的列和其他列之間既不包括部分函數依賴關系,也不包括傳遞函數依賴關系,那么這個表的設計就符合第三范式。
2、根據第三范式(3NF)優化拆分用戶表
這里根據范式將第一張表中的會員級別、級別積分上限、級別積分下線進行拆分成一個小表,因為用戶的個人信息修改的頻率不高,而用戶的級別可能隨着時間、經驗值等的提升而經常變動,單獨拆分出來可以避免對冷數據的重復檢索、節約IO資源。
3、根據第三范式設計好的表如下:
用戶登錄表(customer_login)
用戶信息表(customer_inf)
用戶級別表(customer_level_inf)
用戶地址表 (customer_addr)
用戶積分日志表(customer_point_log)
用戶余額變動表(customer_balance_log)
用戶登錄日志表(customer_login_log)







