В настоящее время у меня есть древовидная структура, содержащая элементы данных; на каждом из них можно выполнять базовые операции CRUD. Отсюда мне нужно реализовать разрешения для каждого пользователя для каждого из этих четырех действий. Таким образом, данному пользователю может быть предоставлено создание и чтение, но не разрешение на обновление или удаление. Эти разрешения затем каскадируют дерево до любых дочерних элементов разрешенного объекта; поэтому данный пользователь будет иметь Create и Read для любых дочерних объектов корневого объекта.Разрешения CRUD для пользователей в древовидной структуре
Каков наилучший способ хранения этих разрешений с использованием базы данных SQL (MySQL с PHP)? В настоящее время я думаю, что идеальным решением может быть создание другой таблицы базы данных, которая отслеживает идентификатор пользователя, идентификатор объекта, а затем список логических элементов, отслеживающих каждое возможное разрешение, а затем проверку идентификатора пользователя и идентификатора объекта на таблицу разрешений и перемещаясь по дереву до тех пор, пока объект разрешения не будет найден (или не найден, в зависимости от обстоятельств).
Моя основная проблема с этим двоякая. Во-первых, это делает невозможным предоставление разрешения одному объекту, но не его детям. Во-вторых, похоже, что это может вызвать удар по особенно глубоким объектам. Итак, как хорошо это можно сделать?
Не так изящно, как я надеялся, но потом посмотрел, как настроен MySQL. Я не уверен, что будет лучший способ сделать что-то. Благодаря! – moberemk
Согласен. Из моего блога: «Почему существует более одной базы данных? Потому что они все сосут» ;-) –