在设计用于存储简单用户/角色信息的数据库表时,谁能告诉我为什么将角色信息直接存储在用户表中是一个坏主意(例如,在角色列中以逗号分隔)。
想法:
- 数据库不需要知道角色,那是 UI 的域
- 访问特定用户角色的速度越快越好
- 当然,如果将来某个时候我想访问特定角色的所有用户,则查询可能
慢一点,但谁在乎呢?
这有道理吗?我是不是摇摆不定?创建 Roles 和 UserRole 表会不会过大并增加不必要的 sql 和代码开销?
更新:
为了进一步说明我的观点......在代码中,我想知道用户“Steve”是否扮演“管理员”角色。
选项 1:查询 UserRole 表以获取用户“Steve”的角色列表。遍历该列表并查看 RoleName 是否与“Administrator”匹配。
选项 2:拆分用户角色属性中的 csv 并查看结果列表是否包含“管理员”
更新二:
我同意我的建议违反了各种“最佳实践”类型的思维,尤其是在数据库设计方面。但是,我没有看到“最佳实践”在这种情况下有何意义。我确实喜欢不时改变最佳实践……我喜欢以一种看起来很聪明的方式编码,这意味着有时我需要了解更多才能知道我什么时候不聪明:)