n00b mysql の質問:
すべてのエンドユーザー名と ID を含むテーブルがあり、各ユーザーの接続を追跡したい場合、各エンドユーザーは独自のテーブルを取得する必要がありますか?
例えば
エンド ユーザー A は、ユーザー B、ユーザー C、およびユーザー D に接続されています。リストを持つユーザーA専用の別のテーブルがあるはずです:
User B | 84746
User C | 94837
User D | 03265
n00b mysql の質問:
すべてのエンドユーザー名と ID を含むテーブルがあり、各ユーザーの接続を追跡したい場合、各エンドユーザーは独自のテーブルを取得する必要がありますか?
例えば
エンド ユーザー A は、ユーザー B、ユーザー C、およびユーザー D に接続されています。リストを持つユーザーA専用の別のテーブルがあるはずです:
User B | 84746
User C | 94837
User D | 03265
いいえ、1 つのテーブルを使用します。それがデータベースの目的です:-)そうしないと、大量のテーブルができてしまいます(多くのユーザーがいる場合)。多くのユーザーを期待していなくても、それは適切な方法ではありません。
私はそれに対して強くお勧めします - クエリの結果である必要がある複数のテーブルを作成しないでください (例: SELECT * from (CONCAT(...))
)。代わりに、エンド ユーザーとその接続をマップするテーブルを作成します。
id (primary key) | endUser | connectedUser | connections
---------------------------------------------------------
1 | User A | User B | 84746
2 | User A | User C | 94837
3 | User A | User D | 03265
アクセスを高速化するために endUser 列にインデックスを付けます。設定する必要があります。
可変数のテーブルを管理する方法はわかりませんが、そのようにするとすべての関係が失われます。リレーションシップ用に1 つのテーブルを追加する必要があります。
CREATE TABLE Relationships (
userOwnerID,
userFriendID
);