Доступ к разделам.
Я стою перебд выбором.
Сделать отдеьную таблицу с "разрешениями".
Либо сделать в таблице столбец с указанием имен юзеров и названий групп.
Конечно же нужно делать отдельную таблицу, в которой каждая запись будет иметь UNIQUE-ключ по полям OID-ресурса и OID-группы_пользователей. А делать в таблице с ресурсами поле со списком разрешений - порочная практика, абсолютно противоречащая самой идее релятивности БД.
Трудности:
Тогда придется усложнять весь алгоритм работы скрипта. Так при создании раздела или страницы надо делать дополнительную запись в таблицу разрешений, если пользователь создает свою страничку (типа сообщение или статья, она же запись в бд в таблице контента) то в таблице разрешений создается как минимум одна запись. А если допустим, админ хочет закрыть страничку для одних, и открыть для других, по каждой группе и пользователю придется делать отдельную запись в таблице, что приведет к увеличению БД.
Можно сделать в записи БД, поле кторое говорит, "доступно для всех" или "закрыто для всех", а в таблицу "доступа" писать исключения.
А если добавить в таблицу контента поля скажем rd_access и wr_access а вних прописать имена и названия груп которые имеют соответствующий доступ разделенные запятой или пробелом. Такой способ упрощает скрипт и облегчает БД, ондак выборка из бд основанная на уровне доступа пользователя к конкрентной страничке затруднена, однако решается, например посредствам регэкспов.
Для каждого раздела тоже задавать уровень доступа необходимый для просмотра.
Тогда при выводе списка разделов тебе останется только следить за тем чтобы уровень доступа юзера был выше чем заданый для раздела.
Сейчас у меня реализоват алгоритм описанный в посте #4, В полях указываются имена пользователей и груп соответственно которые имеют доступ на чтение и запись.
Конечно вариант от 1 до 10 тоже по своему хорош. Но с конкрентными менами более гибкий.