连接多种账户类型的数据库设计

Database design for linking multiple account types

我正在建立一个网站,用户可以在该网站上为所有者提供的特定服务付费。它不是在线商店,但付款过程非常相似。

我面临的问题在于付款过程中的不同 'login' 选项。可以使用 Facebook 帐户登录,使用他的帐户注册 account/login 或选择填写个人信息而不注册。

我在考虑 'consumers' table(没有帐户的一次性用户),'users' table 注册用户,'facebook_accounts' table 与 Facebook 信息,以及 'user_has_facebook_account' table 用于将 Facebook 帐户链接到基于共享电子邮件地址的注册用户。

但是,如果用户在没有注册帐户和密码的情况下使用Facebook登录怎么办……这真让我头疼。

有什么建议可以让我设计一个数据库来支持这个吗?

您可能应该将使用 Facebook 登录的人添加到用户 table 并为他们创建默认密码,以及存储 OAuth 信息/密钥。

你的 "User" 对象应该是单数的,只是有不同的方法来 "Users" 来简化事情

我只会与客户一起创建一个 table。在那里您可以有一个包含 Facebook 用户 ID 的字段。如果有人使用 Facebook 登录,您可以为他创建一个新记录(您有来自 Facebook 的电子邮件地址等)。因此,您可以设置一个空的本地密码或要求用户为您的页面设置密码。