一個用戶表
id name
然後每一種第三方就新增一個表
ex 微信
id openid uid(主用戶表id) .....
QQ
id openid uid
這樣用戶用不同的第三方就會有不同的帳號 一個用戶就擁有了多個帳號了
如何實現數據互通呢 比如微信登陸 可以綁定QQ 那麼以後微信和QQ的信息就同步了
習慣沉默2017-05-16 13:09:14
可以有幾種方式:
第一種,冗餘欄位
使用者表user : id name phone email .....
第三方登入表login:id uid wxopenid qqopenid......
創建的時候給''然後後面綁定的時候更新相關字段。
第二種拆表
用戶表:user : id name phone email .....
第三方表:openid: id wx_openid qq_openid....
關係表relationship:uid oid 這裡的oid就是第三者表
這樣設計的目的是不用join操作,因為資料多了以後join操作很耗時間,我們在程式碼邏輯層先依照目前登入的uid取得relationship的oid,然後再selectopenid表的相關資料。
不太建議都放在一個表的做法。 。 。
ringa_lee2017-05-16 13:09:14
1、為啥不是用一張表,表裡有個字段,類似 type,表示是哪種第三發登入呢。
2、用兩個不同的第三方登錄,的確產生了兩個帳號了。這時候如果再想把這兩個帳號合併,就比較複雜,牽涉到使用哪裡資料了。當然也是可以這麼做,大不了訊息同時發到多個帳號。
一般的思路,先有一個帳號(帳號來源可以使某種第三方登錄,信箱註冊,手機註冊)反正要有一個帳號,然後呢登入以後綁定新的一個第三方帳號。可以參數 SF 帳號設定嘛, /user...
更新一下,一個表維護多個第三方登入之我的個人理解
表字段- oauth 表
id // 可以自增
type // 可以是wx,qq,weibo 等等
user_id ,//對應user表中的id
data ,// mysql-text 類型,裡面是json 格式或可以用php 的序列化格式,我是推薦json 格式,對應不同的type 想存就存什麼,對於資料讀取,存放都沒什麼差別。