我有 3 种不同类型的用户,每种类型的用户都可以有其他类型没有的列和与表的关系,但他们都有登录名(唯一)和密码,
你会怎么做:
- 为每种类型创建一个表或
- 为所有这些创建一个表或
- 为所有这些创建一个表,仅用于登录名和密码,并将所有其他内容分开,并用 FK 将它们绑定(bind)
- 别的
最佳答案
第 3 个是您建议的最佳选项(为了澄清而略有更新):
- 为所有这些创建一个表,用于登录名和密码以及任何其他共享的内容,为所有其他未共享的内容创建一个单独的表,并将它们与 FK 绑定(bind)
除了不存储密码外,存储加盐密码的散列版本。
另一种方法可能是为您的用户分配组和/或角色。这可能比固定表结构更灵活,允许您动态添加新角色。但这是否对您有用,取决于您的需求。
正如 Aaronaught 所指出的,在主表中您需要一个 AccountType
来确保用户只能拥有其中一个角色。您必须记得在加入表格时检查此列的值,以确保用户只有一个事件角色。
外键的唯一约束确保用户只能拥有一次角色。
关于sql - 为每种类型的用户将登录名和密码放在一个表或多个表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284354/