1

n00b mysql の質問:

すべてのエンドユーザー名と ID を含むテーブルがあり、各ユーザーの接続を追跡したい場合、各エンドユーザーは独自のテーブルを取得する必要がありますか?

例えば

エンド ユーザー A は、ユーザー B、ユーザー C、およびユーザー D に接続されています。リストを持つユーザーA専用の別のテーブルがあるはずです:

User B  |    84746
User C  |    94837
User D  |    03265
4

3 に答える 3

1

いいえ、1 つのテーブルを使用します。それがデータベースの目的です:-)そうしないと、大量のテーブルができてしまいます(多くのユーザーがいる場合)。多くのユーザーを期待していなくても、それは適切な方法ではありません。

于 2013-03-03T18:32:35.837 に答える
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 列にインデックスを付けます。設定する必要があります。

于 2013-03-03T18:32:47.130 に答える
1

可変数のテーブルを管理する方法はわかりませんが、そのようにするとすべての関係が失われます。リレーションシップ用に1 つのテーブルを追加する必要があります。

CREATE TABLE Relationships (
    userOwnerID,
    userFriendID
);
于 2013-03-03T18:32:59.427 に答える