在我的网络应用程序中,我将有三种类型的帐户。
这三个应该是在单独的表中,还是在一个名为“account_type”的列中,我可以将其标记为用户,客户或管理员?
两者的优点和缺点是什么?这是最好的做法吗?
由于
答案 0 :(得分:14)
一般来说,person
可以是用户,客户和管理员 - 因此,我会从Person
表开始,其中列IsCustomer
,IsUser
,{{ 1}}。稍后(对于快速搜索),您可以决定将单独的表IsAdmin
,Admin
,Customers
与FK一起添加到Users
表。
编辑:
典型案例可能是:
通常,为客户和管理员设置单独的表应该可以加速任何与管理员/客户相关的查询。
答案 1 :(得分:8)
如果用户只能是一种类型,那么最好使用一个表和一个用于IsAdministrator的位字段等。
如果用户可以是多个帐户类型,那么您应该拥有一个带有外键的不同表格,
示例结构(数据类型是SQL Server,仅建议使用)
用户表
角色表
User_Roles表
答案 2 :(得分:2)
优点和缺点根据系统的大小和复杂程度而有所不同。
我会将其分解为User,Role,UserResources
用户(将定义基本信息)
用户角色
- FK->角色类型
Role_Type (用户,管理员,客户,可能是权限,或者您可以进一步解决此问题。)
UserResources (媒体)
- FK->用户