首頁  >  文章  >  後端開發  >  mysql - Thinkphp的RBAC認證中,「使用者-角色」表為什麼需要一個獨立的表? ?

mysql - Thinkphp的RBAC認證中,「使用者-角色」表為什麼需要一個獨立的表? ?

WBOY
WBOY原創
2016-08-18 09:15:46853瀏覽

五張表可以參考這裡:http://www.lyblog.net/detail/...

其實有表:
mysql - Thinkphp的RBAC認證中,「使用者-角色」表為什麼需要一個獨立的表? ?

用戶和角色是一一對應的關係,為什麼不直接在用戶表中加一個角色的字段,而是另建一個表?
這樣做有什麼好處?

補充:
看有人說使用者和角色是一對多的關係,我想知道有什麼必要設定成一對多?
一對一的關係不是更好處理嗎?

回覆內容:

五張表可以參考這裡:http://www.lyblog.net/detail/...

其實有表:
mysql - Thinkphp的RBAC認證中,「使用者-角色」表為什麼需要一個獨立的表? ?

用戶和角色是一一對應的關係,為什麼不直接在用戶表中加一個角色的字段,而是另建一個表?
這樣做有什麼好處?

補充:
看有人說使用者和角色是一對多的關係,我想知道有什麼必要設定成一對多?
一對一的關係不是更好處理嗎?

我的理解是一個使用者可以有多個角色啊

是這樣的:

一個人 可以擁有 多個角色
一個角色 也可以被多個人使用
多對多的關係 一般情況下是 需要建一個中間表去映射的。

除非你用的是想redis非關係型的資料庫

不是一對多,而是多對多。

也許你的專案不需要,但是作為框架來說要考慮更廣泛的需求,從這個角度來說多對多的表可以作為一對一的表使用,因為多對多包含一對一,但是一對一的設計必然無法滿足多對多的需求。因此,此處會有單獨的關係表,懂了?

一個使用者有多個角色。

其實不單獨建立一張表也是可以的。

解耦啊,單一職責的model啊

ManytoMany的關係是需要中間表的!

為了滿足多對多的需求
說下我的理解可能不太準確:比如有這麼多幾個角色a,b,c 按照你的理解用戶1,2,3 可以分別對應a,b,c三個角色沒問題。如果又來了一個使用者4,他需要的角色剛好是a,b兩個角色的權限,這樣使用者4直接屬於a,b兩個角色就可以了。而沒必要再去新建一個角色d來滿足用戶4的需求

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn