将登录名和密码放在一个表中或每个类型的用户的多个表中?

Omu*_*Omu 9 sql database database-design

我有不同的3种类型的用户,每种类型的用户都可以拥有列和与其他类型没有的表的关系,但所有用户都有登录(唯一)和密码,
你会怎么做:

  • 为每种类型创建一个表或
  • 为所有人创建一个表或
  • 为所有这些创建一个表只用于登录和密码,并为所有其他东西分开并用FK绑定它们
  • 别的

Mar*_*ers 11

3号是您建议的最佳选项(稍微更新以便澄清):

  • 为所有这些创建一个表,用于登录和密码以及其他任何共享的表,以及一个单独的表,用于所有其他未共享的内容,并将它们与FK绑定

除非不存储密码,否则请存储哈希版本的盐渍密码.

另一种方法是将组和/或角色分配给用户.这可能比固定表结构更灵活,允许您动态添加新角色.但这取决于您的需求是否对您有用.

正如Aaronaught指出的那样,在主表中,您需要AccountType确保用户只能拥有其中一个角色.您必须记住在加入表时检查此列的值,以确保用户只有一个活动角色.

对外键的唯一约束确保用户只能拥有一次角色.