Рекомендации по хранению и доступу к настройкам конфиденциальности пользователей WebApp? - PullRequest
1 голос
/ 22 января 2010

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

Они будут устанавливать свои предпочтения любым из следующих способов:

  • На основе пользователя (выберите конкретных пользователей - т.е. Блок: "Munch", "Dummy")
  • Флажок на основе (выберите одну или несколько групп пользователей - т.е. «Мои друзья», «Любой в моей сети»)
  • На основе радиокнопок (выберите только одну группу пользователей - т. Е. «Все»)

Моя текущая мысль заключается в том, что, поскольку информация относится к просматриваемому пользователю, а не к тому, кто щелкает по сайту, вам нужно будет сохранить эти параметры в базе данных и на основе любой конкретной комбинации результатов выполнить определенный запрос.

Единственная проблема в том, что может быть огромное количество разных запросов:

  • 7 флажков могут иметь до 128 различных комбинаций (2 ^ 7)
  • 128 комбинаций = 128 различных оптимизированных запросов

Похоже, что это неэффективно ни во время, затраченном на написание запросов, ни в количестве запросов для каждого просмотра страницы (запрос на запуск другого запроса ... blech!).

И поскольку я уверен, что это было сделано раньше, я чувствую, что должен что-то упустить из виду. Есть ли лучший способ сделать это с помощью PHP / MySQL?

Ответы [ 2 ]

1 голос
/ 22 января 2010

Я бы предварительно пересчитал результаты в таблицу «нельзя просматривать», т. Е. Если usera в некоторой форме блокирует userb (напрямую или потому, что он в группе), таблица получает запись, сообщающую именно об этом. это давняя задача делать тяжелую работу на письме, а не на чтении.

0 голосов
/ 22 января 2010

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

Хорошо. Посмотрите на этот пример: вы выбираете «Все» в группе «Радиокнопка» - зачем кому-то тогда скрывать это от своих друзей?

Радио-кнопки были бы и самым простым способом для пользователя и вас.

С наилучшими пожеланиями, ламы

...