1. 大部分互聯網業務中 , 用戶登陸功能是非常常見的模塊 , 針對登陸功能的資料庫設計常見的是下面這樣的
User表
id username password ... 其他用戶資訊
查詢時的邏輯類似下面
pass=query("select * from user where username='xxxx'")
if(password==pass){
//登陸成功
}
這樣的結構基本可以滿足功能需要 , 但是當需要增加手機登陸 ,郵箱登陸 , 第三方登陸時 ,表結構該怎么設計呢?
可能有人會想到在user表里增加欄位 , email , telphone , weixin_id ...
這樣的設計導致增加一種登陸方式就要增加欄位 , user表的欄位過多 , 可擴展性非常差,
2. 針對需要第三方登陸的系統 , 最好是按照業務垂直拆分出分表 ,把user表中跟認證相關的業務拆分出來 ,變成獨立的表 ,這樣既能減小user表的容量 ,又能方便的進行擴展欄位 , 例如下面的表
local_auth表
id user_id username telphone email password
third_oauth表
id user_id oauth_id oauth_type refresh_token
user表
id age sex birth ....
上面把本地認證表和第三方oauth認證表與user資訊表進行了拆分 , 這樣如果是用手機 ,郵箱 , 用戶名 登陸,就去查詢local_auth表 ,再去查詢user表
如果是第三方認證登陸 , 就根據第三方的oauth_id ,認證查詢third_oauth表 ,不同的第三方根據oauth_type進行區分 , 再去查詢user表
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/79338.html
標籤:PHP
下一篇:關于畢業五年PHP成長疑惑
