Bagaimana untuk mereka bentuk struktur jadual MySQL yang boleh diperluaskan untuk melaksanakan fungsi log masuk sosial?

WBOY
Lepaskan: 2023-10-31 09:52:42
asal
1241 orang telah melayarinya

Bagaimana untuk mereka bentuk struktur jadual MySQL yang boleh diperluaskan untuk melaksanakan fungsi log masuk sosial?

Bagaimana untuk mereka bentuk struktur jadual MySQL yang boleh diperluaskan untuk melaksanakan fungsi log masuk sosial?

Dengan populariti rangkaian sosial, semakin banyak aplikasi mula menggunakan ciri log masuk sosial, membolehkan pengguna log masuk ke aplikasi menggunakan akaun media sosial mereka. Untuk melaksanakan fungsi ini, kita perlu mereka bentuk struktur jadual MySQL yang boleh diperluaskan untuk menyimpan maklumat akaun pengguna dan dapat menyokong pelbagai kaedah log masuk sosial. Artikel ini akan memperkenalkan cara mereka bentuk struktur jadual MySQL sedemikian dan memberikan contoh kod khusus.

Pertama, kita perlu mencipta jadual bernama "pengguna" untuk menyimpan maklumat asas pengguna. Struktur jadual boleh ditakrifkan seperti berikut:

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Salin selepas log masuk

Dalam jadual contoh di atas, lajur id berfungsi sebagai kunci utama dan digunakan untuk mengenal pasti setiap pengguna secara unik. Lajur nama pengguna, e-mel dan kata laluan digunakan untuk menyimpan nama pengguna, e-mel dan kata laluan pengguna masing-masing. Lajur create_at dan updated_at digunakan untuk merekodkan masa pendaftaran pengguna dan masa kemas kini terakhir.

Seterusnya, kita perlu mencipta jadual bernama "social_accounts" untuk menyimpan maklumat akaun sosial pengguna. Struktur jadual boleh ditakrifkan seperti berikut:

CREATE TABLE social_accounts (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    provider VARCHAR(255) NOT NULL,
    provider_id VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX(user_id)
);
Salin selepas log masuk

Dalam jadual contoh di atas, lajur id digunakan sebagai kunci utama untuk mengenal pasti secara unik setiap maklumat akaun sosial. Lajur user_id digunakan untuk mengaitkan dengan jadual "pengguna" untuk menunjukkan pengguna mana akaun sosial itu milik. Lajur pembekal digunakan untuk menyimpan nama kaedah log masuk sosial (seperti "Facebook", "Google", dll.). Lajur provider_id digunakan untuk menyimpan pengenalan unik akaun sosial pada media sosial yang sepadan.

Untuk mewujudkan perkaitan antara pengguna dan akaun sosial, kami boleh menggunakan kekangan kunci asing. Buat kunci asing pada lajur user_id pada jadual "social_accounts" dan arahkannya ke lajur id jadual "pengguna":

ALTER TABLE social_accounts
ADD CONSTRAINT fk_user_id
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE CASCADE;
Salin selepas log masuk

Dalam contoh kod di atas, kami menggunakan pilihan "CASCADE" untuk menentukan bila "pengguna " jadual dipadamkan atau dikemas kini Apabila rekod dalam jadual "social_accounts" dikaitkan dengannya, rekod yang sepadan dalam jadual "social_accounts" yang dikaitkan dengannya juga akan dipadamkan atau dikemas kini.

Untuk menyokong pelbagai kaedah log masuk sosial, kami boleh menggunakan jadual penyedia sosial yang berasingan. Jadual "penyedia" digunakan untuk menyimpan penyedia log masuk sosial yang tersedia dan dikaitkan dengan jadual "akaun_sosial".

CREATE TABLE providers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) 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(255) 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
);
Salin selepas log masuk

Dalam kod contoh di atas, kami telah mencipta jadual yang dipanggil "penyedia" untuk menyimpan nama penyedia log masuk sosial yang tersedia. Untuk mengaitkan akaun sosial dengan pembekal, kami menambahkan lajur provider_id pada jadual "social_accounts" dan mengaitkannya sebagai kunci asing kepada lajur id jadual "penyedia".

Ringkasnya, dengan mereka bentuk struktur jadual MySQL dengan betul, kami boleh melaksanakan fungsi log masuk sosial berskala. Dalam reka bentuk ini, jadual "pengguna" digunakan untuk menyimpan maklumat asas pengguna, dan jadual "akaun_sosial" digunakan untuk menyimpan maklumat akaun sosial pengguna, dan perkaitan antara pengguna dan akaun sosial dicapai melalui kekangan utama asing. Selain itu, menggunakan jadual "penyedia" yang berasingan, kami boleh menyokong berbilang kaedah log masuk sosial. Reka bentuk struktur jadual MySQL dan contoh kod sepadan yang diperkenalkan di atas memberikan rujukan untuk melaksanakan fungsi log masuk sosial.

Atas ialah kandungan terperinci Bagaimana untuk mereka bentuk struktur jadual MySQL yang boleh diperluaskan untuk melaksanakan fungsi log masuk sosial?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!