Для проекта, над которым я работаю, мне нужно спроектировать базу данных для пользователей, элементов нескольких различных типов и ACL-подобной системы разрешений.
По сути, это то, что я хотел сделать (гораздо сложнее, но этого достаточно, чтобы продемонстрировать, что я имею в виду):
- пользователь: (идентификатор, имя, пароль)
- статья: (id, название, тело)
- image: (id, title, file_name)
- разрешение: (item_type, item_id, user_id, чтение, запись, управление)
(itemType и itemId вместе представляют собой составной внешний ключ, ссылающийся на статью или изображение, в зависимости от item_type)
Кто-то скажет, что использование таблицы разрешений не очень хорошая идея, и этого можно достичь, добавив столбцы чтения, записи и управления столбцами к статье и изображению, но имейте в виду, что может быть несколько пользователей с разными правами на одно и то же. Предметы. Это не вариант отказаться от этого.
По-моему, это будет нормально работать. Но когда дело доходит до реализации, я не смог найти ни одной php orm, чтобы дать мне свободу делать это. Это привело меня к мысли, что я могу делать что-то не так.
Итак, мои вопросы:
Как правильно реализовать ACL и создать базу данных для этого?
Как это делается для приложений уровня предприятия?
Существуют ли решения ACL, не относящиеся к дБ,?