3

我的问题可能与之前在这里提出的问题相呼应: How to design a User Object Model using MS Roles & Membership,但我又问了一遍,因为还没有好的答案,而且我的问题是针对数据模型设计的反正:

所以无论如何,在我的应用程序中,有用户和组。一个用户可以属于许多组,当然一个组可以包含许多用户。现在的问题是,我们只知道几个基本组:用户、访客和管理员。将来,可能会有 can-do-X、can-do-Y 组,并且可能会更多或不超过管理员、用户和访客。所以我很想采取简单的方法。以下是我对这些方法的看法:

如果我打算有一个简单的用户表和一个角色表以及另一个模拟多对多关系的表,它似乎有点过度设计。如果我理解正确,这将被视为规范化方法。相反,如果我在 User 表中放入以下列,如 IsAdmin、IsGuest、CanDoX、CanDoY 等,那么这将是非规范化的。

我希望在复杂性和灵活性、时间和空间等之间取得平衡。请提出建议。

4

2 回答 2

2

我强烈推荐标准化的 USER_ROLE(或 ROLE_USER)表。它没有“过度设计”,它正确准确地反映了您的要求。

我在一个完全使用这种模型的数据库系统上工作;它目前有 250 个不同的角色,并且工作正常。在 users 表上拥有 250 个“CanDoX”列将是一场噩梦,并且无论如何都不是一个选项,因为允许一些超级用户定义新角色。

于 2010-02-18T13:18:37.600 回答
1

而不是多列“CanDoX”、“CanDoY”,而是使用位掩码来表示权限。

于 2010-02-18T13:21:46.880 回答