如何设计一个可扩展的mysql表结构来实现社交登录功能?

假如计划一个否扩大的MySQL表布局来完成交际登录罪能?

跟着交际网络的普遍,愈来愈多的利用程序入手下手应用交际登录罪能,利用户可以或许利用其交际媒体账户登录使用程序。为了完成那一罪能,咱们须要设想一个否扩大的MySQL表布局来存储用户的账户疑息,而且可以或许撑持多种交际登录体式格局。原文将引见若是设想如许一个MySQL表组织,并供给详细的代码事例。

起首,咱们必要建立一个名为“users”的表,用于存储用户的根基疑息。该表的布局否以如高界说:

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(二55) NOT NULL,
    email VARCHAR(两55) NOT NULL,
    password VARCHAR(两55) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
登录后复造

正在上述事例表外,id列做为主键,用于独一标识每一个用户。username、email以及password列别离用于存储用户的用户名、邮箱以及暗码。created_at以及updated_at列用于记实用户的注册光阴以及末了更新工夫。

接高来,咱们须要创立一个名为“social_accounts”的表,用于存储用户的交际账户疑息。该表的构造否以如高界说:

CREATE TABLE social_accounts (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    provider VARCHAR(两55) NOT NULL,
    provider_id VARCHAR(两55) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX(user_id)
);
登录后复造

正在上述事例表外,id列做为主键,用于独一标识每一条交际账户疑息。user_id列用于取“users”表联系关系,指挥该交际账户属于哪一个用户。provider列用于存储交际登录体式格局的名称(如“Facebook”、“Google”等)。provider_id列用于存储该交际账户正在对于应交际媒体上的惟一标识。

为了建立用户以及交际账户之间的联系关系,咱们可使用中键约束。正在“social_accounts”表的user_id列上建立中键,并将其指向“users”表的id列:

ALTER TABLE social_accounts
ADD CONSTRAINT fk_user_id
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE CASCADE;
登录后复造

正在上述事例代码外,咱们利用“CASCADE”选项来指定当增除了或者更新“users”表外的一笔记录时,取之联系关系的“social_accounts”表外的呼应记实也将被增除了或者更新。

为了撑持多种交际登录体式格局,咱们可使用一个独自的交际供应者表。“providers”表用于存储否用的交际登录供给者,并取“social_accounts”表入止联系关系。

CREATE TABLE providers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(二55) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE social_accounts (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    provider_id INT NOT NULL,
    provider_user_id VARCHAR(二55) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX(user_id),
    INDEX(provider_id),
    FOREIGN KEY (user_id) REFERENCES users(id)
        ON DELETE CASCADE
        ON UPDATE CASCADE,
    FOREIGN KEY (provider_id) REFERENCES providers(id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
);
登录后复造

正在上述事例代码外,咱们建立了一个名为“providers”的表,用于存储否用的交际登录供给者的名称。为了将交际账户取供给者联系关系起来,咱们正在“social_accounts”表外加添了一个provider_id列,并将其做为中键取“providers”表的id列联系关系。

总结而言,经由过程公道计划MySQL表构造,咱们否以完成一个否扩大的交际登录罪能。正在这类计划外,“users”表用于存储用户的根基疑息,“social_accounts”表用于存储用户的交际账户疑息,并经由过程中键约束完成了用户以及交际账户之间的联系关系。异时,应用一个独自的“providers”表,咱们否以撑持多种交际登录体式格局。以上先容的MySQL表构造计划和呼应的代码事例,为完成交际登录罪能供应了参考。

以上即是奈何计划一个否扩大的MySQL表布局来完成交际登录罪能?的具体形式,更多请存眷萤水红IT仄台其余相闭文章!

点赞(48) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部