用户,客户,管理员帐户在3个不同的表中?

nev*_*ame 12 database database-design

在我的网络应用程序中,我将有三种类型的帐户.

  • 用户:免费使用Web应用程序
  • 客户:用于广告和获取公司徽标
  • 管理员:用于编辑和删除内容

这三个应该是在单独的表中,还是在一个名为"account_type"的列中,我可以将其标记为User,Customer或Admin?

两者的利弊是什么?这是最好的做法吗?

谢谢

Dam*_*vic 18

在一般情况下,person可以是用户,客户和管理员-因此,我将开始与一个Person表列IsCustomer,IsUser,IsAdmin.后来(快速搜索),你可以决定添加单独的表 Admin,Customers,Users与FK的Person表.

编辑:

典型案例可能是:

  • 500万用户
  • 1000个客户
  • 10个管理员

通常,为客户和管理员提供单独的表应该可以加速任何管理员/客户相关的查询.


Dav*_*vid 8

如果一个用户只能是一种类型,那么最好使用一个表和一个用于IsAdministrator的位字段等.

如果用户可以是多个帐户类型,那么您应该使用外键具有不同的表,

示例结构(数据类型是SQL Server,仅建议使用)

用户表

  • UserID - int
  • 用户名 - varchar(25)
  • Password - varchar(25)
  • Firstname - varchar(50) etc...

Roles table

  • RoleId - int
  • Role Description - varchar(25)

User_Roles table

  • UserId - int (with a foregin key to the Users table)
  • RoleId int (foreign key to the Roles table)