Sql 将管理员用户与前端用户放在同一个表中是否是良好的数据库设计?
我有可以登录前端页面的用户和可以登录管理页面的管理员Sql 将管理员用户与前端用户放在同一个表中是否是良好的数据库设计?,sql,sql-server,database,database-design,data-modeling,Sql,Sql Server,Database,Database Design,Data Modeling,我有可以登录前端页面的用户和可以登录管理页面的管理员 用户和管理员都应该是具有不同角色的“用户”,还是应该被划分到不同的表中?是的,所有用户都属于用户表。您还需要有一个角色表,并在两者之间有一个FK。角色应与用户帐户分开跟踪,因为随着时间的推移,某些人可能会被提升(或降级)。在这种情况下,在两个不同的表中有两个不同的用户帐户有意义吗?我想不是 这是我要使用的基本结构- 使用者 用户id(主键) 用户名 角色 角色id(主键) 角色名称 用户角色 用户id(主键,用户的外键。用户id)
用户和管理员都应该是具有不同角色的“用户”,还是应该被划分到不同的表中?是的,所有用户都属于用户表。您还需要有一个角色表,并在两者之间有一个FK。角色应与用户帐户分开跟踪,因为随着时间的推移,某些人可能会被提升(或降级)。在这种情况下,在两个不同的表中有两个不同的用户帐户有意义吗?我想不是 这是我要使用的基本结构- 使用者
- 用户id(主键)
- 用户名
- 角色id(主键)
- 角色名称
- 用户id(主键,用户的外键。用户id)
- 角色id(主键,角色的外键。角色id)
实际上,最好将两者保持在同一个表中,因为它们拥有相同的数据类型。创建一个单独的角色表和一个单独的用户角色表。在第一个定义角色中,在第二个定义中,将用户加入到各自的角色中(他们可能有多个角色?我个人将“用户”放在一个表中。您决定如何表示角色(例如,作为用户表本身的静态位,或通过高级RBAC权限)取决于系统的复杂程度。但是用户就是用户。从数据的角度来看,管理员是具有不同角色的用户是有道理的。每个userright都可以有一个表,将用户与其角色关联起来。用户可以有多个这样的角色,但归根结底,管理员就是用户。我相信你的问题没有绝对的道理,这取决于你的应用程序 用户类型可能位于不同表中的两个原因是:
- 数据结构的类型不同(细节/地址等)
- 睡个好觉。如果手动编辑FK值(指向用户),可以避免将任何内容指向前端用户的风险
请考虑,如果在单独的表中有常规用户和管理用户,则常规用户表中的用户id将与管理用户表中的用户id匹配。您必须确保一种类型的用户id永远不会被意外地用作另一种类型。发现这样的问题比发现可能导致用户id更改为不同用户id的问题更难。如果管理员和用户共享字段,则他们似乎应该放在同一个表中,以避免重复结构。他们都有名字和姓氏。他们都是现实世界中的人。这可能是应该的 但另一方面,各州和城市都有自己的名字。这两个都是地点。他们应该总是坐在同一张桌子上吗?有时它们在递归模型中也会这样做。有时它们是分开的 我的想法。。。。。。管理员是否被认为是系统中的“类型”用户?或者,如果没有“用户”类型的东西应用于它,那么它真的会有所不同吗?这取决于管理员在系统中的真正含义。共享结构是否沿着城市/州的路线?或者共享结构是否符合“您是类型用户”的要求
但如果有疑问,可以将管理员放在用户表中,因为我怀疑他们是否真正独立。您可能希望为两者共享一个身份验证系统。您可能希望为两者共享帐户创建。除非管理员是只有开发人员才能在后端使用的特殊东西。解决方案非常好,但用户和用户可以是不同的动物。想想网上银行,他们可能不会将员工登录和普通客户登录混合在同一个表中。对于简单到复杂的解决方案来说,这很有效@user247245在企业级方面是正确的-银行使用PCI合规性等。我们的一些电子商务商店是IBM WebSphere Commerce,我们使用单独的本地主机IP和本地机器访问我们内部的数据库。然后,通过一个单独的防火墙服务器将WWW实时同步到云负载均衡器中。为什么不将角色id放在用户表中呢?想想上帝管理员。如果我们希望god admin创建角色,并向其授予diff权限(diff模块),并将角色分配给其他子管理员,那么它将拥有一个针对用户的完全不同的角色系统。那么,将用户和管理员结合在一个集成的办公自动化模块的复杂管理角色系统中,例如一个带有CMS和CRM的企业门户中,将是一个坏主意。维护和代码或数据库迁移(用于更新服务器)也是其他工作。另外,在唯一的聚集索引用户名列中,轻管理员表比重用户表快。@PixMach(旧帖子),但一个用户可能分配了多个角色。i、 e.用户可以同时拥有
文章编辑器
和客户经理
角色。因此,USER\u ROLES
table管理一对多关系。我认为这是最好的解决方案。