Доброе время суток.Проблема такая. 1. Есть группы пользователей (nested sets).2. Есть пользователи которые принадлежат группам.3. Есть такая фитча как область видимости. К примеру Вы где-то в середине дерева групп. И Вам дозволен просмотр пользователей по ACL. Следовательно Вы должны видеть всех кто ниже по дереву.Как оптимально хранить отношения кто кого видит или не видит? Раньше создавал 2 таблицы такого рода.1. Таблица видимости групп. 2 поля - ЮЗЕР -> ГРУППА_КОТОРУЮ ВИДИТ ЮЗЕР.2. Таблица видимости пользователей. 2 поля - ЮЗЕР -> ПОЛЬЗОВАТЕЛЬ КОТОРОГО ВИДИТ ЮЗЕР.И думал что все ок. НО когда добавляются новые пользователи и группы приходится пересчитывать эти таблицы, а элементов там более 250 000 :shock: И ведь эти таблицы участвуют в подзапросах, к примеру: SELECT * FROM TABLE WHERE user IN (select target_user from VISIBILLITY_INDEX WHERE user=1). А когда идет запись в эти таблицы то все операции выборки LOCK!Вообщем товарисчи выручайте советом.
|