Группировка пользователей по виртуальному реестру - PullRequest
0 голосов
/ 26 мая 2011

Я пытаюсь найти самый простой / удобный / эффективный метод для группировки 3 пользователей вместе с помощью mysql.

Чтобы установить сцену:

  • X количество пользователей в списке (все с int account_id's)
  • мини-группировки необходимо создавать для каждого пользователя (например, пользователь 1 хочет группировать по 220).
  • Макс. 3 человека в группе (пользователь 1 + пользователь 220 + пользователь 9123 = группа заполнена)
  • Нужно легко найти, находится ли пользователь в группе или нет, не глядя в кучу столбцов

Я поставлен в тупик о том, как лучше всего создать схему для этого (поэтому я могу легко запросить мою таблицу, чтобы увидеть, есть ли пользователь в группе, или его можно добавить, или проверить доступность группового пространства).

У кого-нибудь есть идеи? Моя первоначальная мысль - такая схема (но на самом деле она кажется слишком жесткой):

Схема

GROUP_ID  USER1  USER2  USER3 LASTUPDATE
1         1      220    null  5/25/2011 20:00:00
2         300    2      4     5/25/2011 20:00:00

Как бы вы это сделали, чтобы сделать что-то такое простое, очень гибкое и эффективное. Я действительно чувствую себя глупо, спрашивая.

1 Ответ

4 голосов
/ 26 мая 2011

Лично я бы подошел к этому, используя 3 таблицы.

Users Table
user_id user_name ..... last_update

Groups Table
group_id group_name ......

Users to groups Table
user_to_group_id user_id group_id

Это формирует отношение многие ко многим, связывая таблицу "Пользователи с группами" , очевидно, вы можете иметь более 3 пользователей, связанных с одной группой, поэтому вам придется сделайте так, чтобы логика PHP проверяла это при добавлении нового пользователя в группу.

Вы можете просто использовать SQL-соединения для извлечения всех необходимых данных и фильтрации результатов в своем PHP-коде.

Надеюсь, это поможет

С уважением

Garry

...