0

私 (現在のユーザー) が所有する複数のグループにユーザーを割り当てる必要がある状況がありますが、最善の方法はわかりません。他の投稿をいくつか読みましたが、私の要件は少し異なると思います。

状況は、登録ユーザーが友達とグループを作成し、友達をグループに割り当てることができる AS3 のモバイル アプリの場合です。

現在、私のテーブル構造は次のとおりです。

User table
id    username
--------------
1     user1
2     user2
3     user3

Friend link table
id    user_id    friend_user_id
-------------------------------
1     1          2
2     2          1
3     1          3
4     3          1

Group table
id    group_name    user_id
---------------------------
1     group1        1
2     group2        1

Group link table
id    group_id    user_id
-------------------------
1     1           2
2     2           2
3     1           3

基本的に、ユーザーはIDを設定するアカウントを作成し、他の登録ユーザーになることができる友達を追加します。これにより、フレンド リンク テーブルに 2 つのレコードが作成されます (ユーザーごとに 1 つ)。その後、ユーザーはグループを作成できます (グループはユーザー ID によってリンクされます)。その後、ユーザーは友人をグループに割り当てることができます。

私は3つの質問があると思います:

  1. 現在の構造はそのような状況に適していますか?
  2. ユーザーを追加/削除するときに利用可能なすべてのグループを表示する必要があるため、ユーザーが友達/グループ リンクを保存したら、どのようにデータを挿入/削除すればよいですか?

ありがとう

編集: 質問 2 の続き - グループ ID、ユーザー ID、および isSelected フラグを設定してアプリから PHP スクリプトに配列を渡すことで、選択したグループをグループ リンク テーブルに書き込むことができましたが、ユーザーが削除されると失敗します選択されていないグループではなく、選択されたグループのみを渡すためです。

4

1 に答える 1

0

DB構造について私が提案するのは、フレンドリストとグループリストの違いは何ですか? どちらも特定の肩書を持つ人々のグループですよね?私には、リンクが繰り返されるため、不必要なオーバーヘッドが発生する可能性があるようです。

たとえば、グループ テーブルを次のように変更することを提案します。

group_id: int not_null auto_increment
owner_id: int not_null
group_name: varchar(125) not_null

そして、 group_join テーブルを用意します

group_joinid: int not_null auto_increment
groupid: int not_null
userid: int not_null

groupid は group テーブルから、userid は user テーブルからのものです。あなたの聴衆の規模がわからないので、このアプローチを調整する必要があるかもしれませんが、これはユーザーとグループの間で繰り返されるリンクの可能性を排除するために継ぎ目があります

于 2013-07-09T03:13:05.303 に答える