拥有两个单独的用户表或一个用户表是否更好?

时间:2011-09-24 16:27:59

标签: php mysql authentication

我的网络应用程序将有两种类型的用户100%不同 - 在网站上的字段,功能和用途。一类用户的目的是发布博客,另一类用户的目的是阅读它们并“跟随”海报。

他们共同的唯一东西是需要id,电子邮件,密码和其他一些元数据,如加入日期等。

我是否应该尝试从同一个帐户表中删除它们,或者为每个帐户表创建一个表?

备注

- 可以考虑的一个潜在的事情是,为了防止用户混淆,我认为这两种帐户之间的电子邮件应该是唯一的。

- 除了普通的“帐户”元数据之外,读者和作者将需要存储不同的数据集。

4 个答案:

答案 0 :(得分:4)

我会将它们分开。

TABLE User {
    id
    email
    password
    salt
    created
    modified
}

TABLE follower {
    user_id
    ...
}

TABLE author {
    user_id
    ...
}
随着时间的推移,您的应用程序将会增长。也许现在你有两个命运角色 - 但它可能会在未来发生变化。您可能会有作者也跟随其他作者,或者“升级”为作者的粉丝。您可能还会开始添加其他“角色”,并希望这样:

TABLE user_role {
    user_id
    role_id
}

TABLE role {
    id
    name
}

答案 1 :(得分:3)

定义“用户”。如果用户是在您的网站上注册了他或她自己的人,使用电子邮件地址,密码和昵称,以及谁可以登录,那么请将所有人都放在users表中。

用户在网站上可以做或不能做的事情对用户来说没有区别。这是他们的权限不同。在单独的表中将权限映射到用户。不要为每种类型的用户创建表。

否则,当您将来添加新类型的权限时,您不必为该类型的用户添加新表(并更改处理用户的所有(sql)代码:登录,重置密码等)。您只需添加一种新类型的权限,并将其映射到各自的用户。

答案 2 :(得分:2)

它将为您节省大量工作,只需拥有一个表,并在表中有一个列,用于定义它们的类型。

答案 3 :(得分:0)

不,为每个人制作一张桌子。它将更容易管理,它将是可扩展的