Различные типы групп с различными ассоциациями. Как это организовать? - PullRequest
0 голосов
/ 23 мая 2011

Я пишу приложение в cakePHP, но это больше вопрос базы данных. Я новичок в написании приложений для баз данных и новичок в cakePHP.

В моем приложении есть пользователи и два разных типа групп, с которыми они могут ассоциироваться. Например.

Тип A - Группы типа A включают в себя такие вещи, как {новые пользователи, опытные пользователи, опытные пользователи, администраторы, суперпользователи}. Пользователь должен принадлежать 1 и только 1 из этих групп. Эти группы в основном используются для управления тем, что пользователь может делать с приложением.

Тип B - Группы типа B включают в себя такие вещи, как {друзья, семья, коллеги, мелкий микс, средний микс, большой микс и т. Д.}} Пользователь может принадлежать ко многим из этих групп или не участвовать в все. Эти группы в основном используются для управления тем, кого мы приглашаем на определенные функции и события.

Сначала я подумал, что у меня будет таблица с именем «Группы» и я просто добавлю демона с именем «тип», чтобы я мог сохранять их различимыми, но повторно использовать ту же таблицу. Все поля, скорее всего, будут идентичны для двух разных типов групп.

Но я не думаю, что это сработает, поскольку пользователь может принадлежать только одному типу A, но он может принадлежать к любому количеству групп типа B. Как могут отличаться отношения, используя только одну таблицу?

Моя единственная мысль, которую я оставил, - создать 2 таблицы, по одной для каждого типа группы. Поля будут повторяться, по крайней мере, на данный момент, но это позволило бы мне иметь разные отношения с пользовательской таблицей, например, имеет одну, имеет 0 или более ...

Есть ли лучший способ сделать это? Подходят ли мои предложенные решения?

1 Ответ

0 голосов
/ 23 мая 2011

Мне кажется, что две отдельные таблицы - это правильное решение, потому что у вас есть две разные концепции, которые вы назвали «группа». Просто переименуйте первую «группу» во что-то еще, например «Категория», и все будет иметь смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...