3个不同表格中的用户,客户,管理帐户?
在我的web应用程序中,我将有三种类型的帐户。3个不同表格中的用户,客户,管理帐户?
- 用户:使用Web应用程序的免费
- 客户:广告和获取公司徽标
- 管理:用于编辑和删除的东西
如果所有这三个是独立的或者在名为“account_type”的列中,我可以将其标记为User,Customer或Admin?
两者有什么优点和缺点?对此有最佳做法吗?
感谢
在一般情况下,一个person
可以是用户,客户和管理员 - 因此,我将与Person
表列开始,IsUser
,IsAdmin
。稍后(为了快速搜索),您可能决定将单独的表格Admin
,Customers
,Users
与FK添加到Person
表格中。
编辑:
一个典型的例子可以是:
- 5百万的用户
- 1000客户
- 10管理员
通常,具有为客户单独的表,并管理员应该加快任何管理员/客户相关的查询。
有时,用户和客户具有不同的属性,因此您需要将其分成2个表格,而不是将可选列放在同一个表格中。 – brunocascio 2017-05-31 23:22:39
如果一个用户只能是一个类型,你会用一个表和IsAdministrator位域等
更好,如果使用者可以超过一个帐户类型,你应该再有一个不同的表的外键,
样本结构(数据sypes是SQL Server和只是建议)
用户表
- 用户名 - 诠释
- 用户名 - VARCHAR(25)
- 密码 - VARCHAR(25)
- 名字 - VARCHAR(50)等等...
角色表
- RoleId - int
- 角色描述 - VARCHAR(25)
User_Roles表
- 用户ID - INT(带foregin关键用户表)
- 角色ID INT(外键角色表)
优缺点取决于系统的大小和复杂程度。
我将其拆分成用户,角色,UserResources
用户(将定义基本信息)
用户角色
- FK->角色类型
Role_Type(用户,管理员,客户,可能的权限,或者你可以进一步解决这个问题)。
UserResources(媒体)
- FK->用户
我认为它会留在用例如何与其他的东西在你的数据模型是有用的。即用户和管理员之间的连接是什么? – Nix 2010-08-18 12:05:48
我会说一个表,但是如果每个角色都有很多不同的属性,那么应该考虑不同的表。您可以用id/enum标记用户,我们称之为角色。角色= 1将是一个用户,角色= 2将是一个客户,角色= 3将是一个管理员。所以你可以很容易地用一个外键构造扩展你的角色(比如David Stratton说的)。 – hering 2010-08-18 12:10:21