我有3种类型的用户:
每个用户类型将具有不同的用户界面并访问不同类型的数据。他们唯一的相似之处在于他们使用的是一个Web应用程序,但是他们可以访将它们全部放在像tbl_users这样的用户表中是否更好?或者创建tbl_admins,tbl_suppliers,tbl_employees是否更好?
答案 0 :(得分:61)
在设计表格时,您需要考虑的不一定是他们可以访问的内容以及相似/不相似的内容,而是用户级别本身如何相似/不相似。
例如,如果用户类型具有相同的属性(名称,电子邮件,生日等),则它们属于一个表以及指示其权限级别的列。
这也有助于更改用户的权限级别,从而可以将普通员工变为管理员,例如,只需更新用户表中的记录。
如果供应商是不同类型的对象,其属性与其他两个不同,则供应商可能属于他们自己的表。
或者,还有一件事需要考虑:您可以使用users
表,该表仅包含有关所有三种类型用户的非常有限的信息,以及类型是否具有彼此不相关的扩展属性,您可以将带有外键的其他表中的那些存储回主users
表。
答案 1 :(得分:11)
还有第三种选择:将所有用户共有的列放入tbl_users
,并为tbl_admins
,tbl_suppliers
和tbl_employees
创建三个表格tbl_users
为1到0..1。当共享列的数量很大时,您应该将此选择视为替代选择。
答案 2 :(得分:2)
这取决于他们的数据结构有多相似。如果它们相似,那么也许你可以将它们全部放在一个表中。但是,如果他们有很多不同的字段,你最终会得到很多NULL值...然后最好将它们全部放在不同的表中。
答案 3 :(得分:0)
最好将您的所有登录信息保存在一个位置。如果您要对登录过程进行更改,则有3个不同的表将意味着必须在3个不同的位置更改代码。
如果用户可以属于多个角色,请考虑制作UserRoles表。否则,在现有表中添加其他字段(例如RoleType)将有助于区分不同类型的用户。
答案 4 :(得分:0)
您应该将它们包含在一个表中,并创建一个字段/属性,以指示用户是管理员,供应商还是员工。
如果你以这种方式集中它会更简单。
关于他们访问的方式/内容的关注将在您开发的软件下。您可以根据您拥有的用户类型获取/收集UI [或他们在软件系统中访问的任何内容]。
我通常只是根据我拥有的用户类型隐藏和显示内容
希望这会有所帮助..