【发布时间】:2012-03-26 00:12:27
【问题描述】:
我正在构建一个网站,让用户从多个来源(包括 Facebook 和 Google+)登录该网站,并且我希望能够在我的数据库中保留每个用户的一些基本信息,以便我可以跟踪创建诸如 cmets 和帖子之类的东西。我如何在 SQL 数据库中有效地做到这一点。我是否为每种类型的用户创建一个新表?
【问题讨论】:
标签: mysql sql facebook schema google-plus
我正在构建一个网站,让用户从多个来源(包括 Facebook 和 Google+)登录该网站,并且我希望能够在我的数据库中保留每个用户的一些基本信息,以便我可以跟踪创建诸如 cmets 和帖子之类的东西。我如何在 SQL 数据库中有效地做到这一点。我是否为每种类型的用户创建一个新表?
【问题讨论】:
标签: mysql sql facebook schema google-plus
您只需要两个表,一个用户表和一个用户类型表。用户表将有一个类型列,该列将链接到用户类型表并告诉您类型。我会是这样的基本的东西:
User (
Id Int NOT NULL PRIMARY KEY,
UserName VarChar(50) NOT NULL,
EmailAddress VarChar(100),
{... More fields generally used by all account types ...}
UserTypeId Int NOT NULL
)
UserType (
Id Int NOT NULL PRIMARY KEY,
Type VarChar(50) NOT NULL
)
如果您有特定于每种登录类型(如 Google+ 或 Facebook)的信息,您可以为每种特定登录类型创建一个表。然而,现实情况是,您可能会为所有可能的不同类型获得相同的基本信息字段集,因此无需担心太多。
【讨论】:
通常的做法是:
USER 表FACEBOOK_USER 表(有自己的 PK 和 USER FK)GOOGLE_USER 表...加载用户时,您可以连接所有这些表,或者您可以创建一个包含连接的视图,或者,如果您有许多特殊类型,您可以加载用户,然后单独读取其他用户(也许保留一个 @987654325 @ 在USER 表中以加快速度)。
【讨论】: