说服怀疑者!为什么我的数据库中需要一个“ Roles”表?
|
在设计用于存储简单用户/角色信息的数据库表时,谁能告诉我为什么将角色信息直接存储在用户表上(例如,在“角色”列中用逗号分隔)是一个不好的主意。
想法:
数据库不需要知道角色,这是UI的域
访问特定用户角色的速度越快越好
当然,如果将来我想访问所有用户以使用特定角色,查询可能
有点慢,但是那时谁在乎呢?
这有意义吗?我离开摇杆了吗?创建Roles和UserRole表是否会过大并增加不必要的sql和代码开销?
更新:
为了进一步说明我的观点……在代码中,我想知道用户“ Steve”是否具有角色“ Administrator”。
选项1:在UserRole表中查询用户\“ Steve \”的角色列表。遍历该列表,查看RoleName是否与\“ Administrator \”相匹配。
选项2:在“用户”的“角色”属性中拆分csv,然后查看结果列表中是否包含“管理员”
更新二:
我同意我的建议违反了各种“最佳实践”类型的思维方式,尤其是在数据库设计方面。但是,我看不到“最佳实践”在这种情况下如何有意义。我确实喜欢时不时地摇动最佳实践……我喜欢以一种看起来很聪明的方式编写代码,这意味着有时我需要了解更多信息才能知道自己何时不聪明:)
没有找到相关结果
已邀请:
5 个回复
粱委教
更新/插入数据 如果将角色信息存储在用户表中,则下一个要处理的问题是如何执行有效的更新,插入。这使一切变得更加困难。编辑记录时,必须确保从CSV编辑正确的值。 寻找合适的角色 这是最困难的问题,即如何找到给定用户的角色。您可能会在C#或SQL Server中想出这种出色的解析技术,它的效果很好。.但是它变得非常缓慢且难以阅读。您开始处理
,
,
,
和大量其他功能,只是为了分析用户的角色。 解决方案 您可能会认为现在将所有内容放在一个表中会更容易。可能不需要很多时间。但是您必须在开发应用程序时考虑到未来。如果您遵循3nf的规则并创建一个不错的关系结构,则UI会简单得多。 UI管理员屏幕不仅看起来不错,而且与解析或搜索相对,获取特定UserID的角色也是如此琐碎...
春驹晴陪
炬卤遁蝎变
捻盒愧杯
埃输林桨铃