2010-02-17 111 views
3

我的問題可能是先前在這裏提出的問題的回聲: How to design a User Object Model using MS Roles & Membership,但由於沒有好的答案,我再次提出問題,我的問題是面向數據模型設計無論如何:設計用戶/組ACL數據模型

因此無論如何,在我的應用程序中,有用戶和組。用戶可以屬於多個組,當然一個組可以包含很多用戶。現在的問題是,我們只知道幾個基本組:用戶,來賓和管理員。未來,可能會有可以做X,可以做Y的團體,並且可能有更多或更多的僅僅是管理員,用戶和來賓。所以我只是想採取簡單的方法。這裏是我對這些方法的想法:

如果我要有一個裸骨骼用戶表和一個角色表,另一個模擬多對多關係,它似乎有點過度設計。如果我理解正確,這將被視爲正常化的方法。相反,如果我在User表中引入IsAdmin,IsGuest,CanDoX,CanDoY等以下列,那麼這將是非規範化的。

我期待在複雜性和靈活性,時間和空間等之間取得平衡。請建議。

回答

2

我強烈建議標準化的USER_ROLE(或ROLE_USER)表。它不是「過度設計」的,它正確和準確地反映了您的要求。

我在使用這個模型的數據庫系統上工作;它目前有250個不同的角色,並且工作正常。在用戶表上有250個「CanDoX」列將是一場噩夢,而且無論如何都不會成爲一種選擇,因爲一些超級用戶可以定義新的角色。

1

而不是多個「CanDoX」,「CanDoY」列使用位掩碼來表示權限。