Добрый день. Какой вариант хранения пользовательских разрешений (что ему можно делать, что нельзя) лучше хранить?
1) таблица permissions и в ней поля: group - группа пользователя, newsADD, newsEDIT, newsDELETE, где ставлю 1- можно, 0 - нельзя
2) таблица permissions и в ней поля: group - группа пользователя, valuePerm - значение что можно, а что нельзя: newsADD, newsEDIT, newsDELETE
В первом варианте все поля уже определены, а во втором значения разрешений могут быть добавлены.
А использовать сторонние системы задания прав и аутентификации не рассматриваете?
Если объектов аудита (новости, комментарии и т.п.) мало, то 1-й лучше:
занимается меньше места, восемь комбинаций разрешений для прав в одной записи таблицы
Если объектов аудита много, то лучше 2-й (или вводить дополнительную таблицу объект аудита), так как в первом случае придется добавлять расширением первой таблицы. Будет происходить добавлением полей (например, commentAdd, commentEdit, commentDelete и т.п.). И возможно, записи в таблице будут в этом случае сильно разрежены.
P.S. А вообще (если не использовать стороннее решение), лучше немного поструктуризировать (если помимо новостей будут другие объекты аудита):
- Таблицы объект аудита, Тип операции и т.п.
А использовать сторонние системы задания прав и аутентификации не рассматриваете?
рассматривал, везде пишут, что где мало данных - то 1 вариант, если много и расширяться, то 2 вариант, в котором, как вы написали, отдельная таблица для типа операции, объекты разрешения. но второй вариант мне кажется сложней в плане проводимых запросов на выборку, добавление и удаление.