社交登录的数据库用户模型

时间:2020-06-13 17:49:05

标签: mysql database postgresql database-design database-connection

我想通过Facebook和Google进行社交登录。

我将其分为3个模型:用户,用户个人资料和authenticationProviders。

userProfiles和authProviders都将1:1链接到用户。 由于我想实施该选项,即用户可以通过Google登录,也可以通过提供电子邮件和密码来手动创建帐户

这是一个好习惯还是有其他一些更好的方法?

这是我的模特

用户

CREATE TABLE users(
        id SERIAL PRIMARY KEY NOT NULL,
        name TEXT,
        screenname TEXT,
        created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
      )

用户个人资料

CREATE TABLE userProfile(
        email TEXT,
        password TEXT,
        created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
        user_id INTEGER,
        PRIMARY KEY (user_id),
        FOREIGN KEY (user_id) REFERENCES users (id)
      )

AuthenticationProvider

CREATE TYPE providerType AS ENUM ('google', 'facebook');
CREATE TABLE authenticationProviders (
    providerKey varchar(128) NOT NULL,
    providerType providerType,
    created_at TIMESTAMP,
    user_id INTEGER,
    PRIMARY KEY (user_id),
    FOREIGN KEY (user_id) REFERENCES users (id)
  )

0 个答案:

没有答案
相关问题