ユーザー テーブル
ID 名
その後、各サードパーティが新しいテーブルを追加します
ex WeChat
id openid uid (メイン ユーザー テーブル ID) .....
QQ
id openid uid
このように、異なるサードパーティを使用するユーザーは異なるアカウントを持ち、1 人のユーザーが複数のアカウントを持つことになります。
データの相互運用性を実現するにはどうすればよいですか? たとえば、WeChat ログインを QQ にバインドし、WeChat と QQ の情報をバインドすることができます。 QQ は将来的に同期されます。
いくつかの方法があります:
最初の冗長フィールド
ユーザー テーブル user: id 名前 電話 email....
サードパーティ ログイン テーブル ログイン: id uid wxopenid qqopenid...
作成時に '' を与えて、後でバインドするときに関連するフィールド。
2 番目のタイプのテーブル分割
ユーザー テーブル: user: id 名前電話メール....
サードパーティ テーブル: openid: id wx_openid qq_openid....
関係テーブルの関係: uid oid ここでの oid は 3 番目のタイプです。パーティー テーブル
この設計の目的は、データが多すぎると結合操作に時間がかかるため、結合操作の必要性を排除することです。コード ロジック層では、まず現在ログに記録されている関係の oid を取得します。 -in uid を選択し、openid テーブル内の関連データを選択します。
すべてを 1 つのテーブルに置くことはお勧めできません。 。 。
1. テーブルを使用しないのはなぜですか? テーブルには、使用されているサードパーティ ログインの種類を示すフィールドがあります。
2. 2 つの異なるサードパーティでログインすると、確かに 2 つのアカウントが生成されます。この時点でこれら 2 つのアカウントを統合する場合は、より複雑になり、どのデータを使用するかが関係します。もちろん、これを行うことは可能であり、最悪の場合、情報が複数のアカウントに同時に送信されることになります。
一般的な考え方は、まずアカウントを取得することです (アカウント ソースは、ある種のサードパーティのログイン、電子メール登録、携帯電話の登録にすることができます)。いずれにせよ、アカウントを取得し、その後、新しいサードパーティのアカウントをバインドする必要があります。ログイン中。 SF アカウント設定、/user をパラメータ化できますか...
更新、1 つのテーブルで複数のサードパーティ ログインを維持することについての私の個人的な理解
テーブル フィールド - oauth テーブル
id // 自動インクリメント可能
type // wx、qq、weibo などにすることができます
user_id, // // mysql-text タイプのテーブルの id
データは、JSON 形式であるか、さまざまなタイプに対応する JSON 形式を使用することをお勧めします。データの読み取りと保存には違いはありません。