Как подойти к этой простой проблеме - скрыть группы продуктов от пользователей - PullRequest
0 голосов
/ 14 марта 2011

Итак, у меня есть база данных, которая имеет структуру примерно такую:

[user_table] user_id, name, active
"john", "John S. Smith", true

[group_table] group_id, description, active
"abc", "test group", "true"
"cba", "second group", "true"
"bca", "third group", "true"

Так что теперь я хотел бы скрыть группу "abc" от "john".Я создаю новую таблицу с именем «hide_group» с полями user_id и group_id.Я вставляю соответствующие значения и все хорошо.Но это не очень хорошо оптимизировано.Что если у меня 20 пользователей и сотни групп?Это будет означать сотни новых записей.Есть ли более оптимизированный способ сделать это с отношениями?Я использую движок MyISAM, и, если я вспомню, я не могу использовать внешний ключ с ним.Я читаю документацию по MySQL, но для меня это все еще неясность.Может быть, кто-то может указать мне правильное направление?

изменить, моя структура таблицы выглядит примерно так:

[group]
group_id, group_description 

[group_hide]
group_id, user_id, hide

Я хочу выбрать все группы, которые находятся под таблицей "группа".За исключением тех, которые скрыты внутри таблицы group_id.Как я могу это сделать?Прямо сейчас я могу сделать это либо только выбрать все записи в таблице group_hide (что мне не нужно), либо просто все записи внутри группы, игнорируя все, что находится в group_hide.Я бы не хотел выбирать группы, которые должны быть скрыты, но все остальное должно быть видно.

1 Ответ

1 голос
/ 14 марта 2011

Если вы можете каким-либо образом классифицировать пользователей и их видимость группы, вы можете подумать об определении определенных «ролей».Таким образом, ассоциации могут быть между ролью (скажем, «Администратор» или «По умолчанию» или «Модератор») и группами, а также между ролями и пользователями.

Например, вы можете создать таблицу roles с идентификатороми name, таблица roles_users с 2 столбцами role_id и user_id и другая таблица hidden_categories_roles с 2 столбцами hidden_category_id и role_id.Не забудьте поместить индексы в оба столбца в обеих таблицах для ускорения запросов.

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

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