Я работаю над приложением с архитектурой рабочего пространства в стиле Slack, где пользователь может получить доступ к одной и той же функции приложения в нескольких «экземплярах» (рабочих пространствах).
Я собираюсь продолжить использовать Slack в качестве примера для объяснения моей проблемы.
Когда в моем приложении предпринимается какое-либо действие, мне нужно проверить, что у пользователя есть права на выполнение действия с указанным ресурсом и что ресурс находится в той же рабочей области, что и пользователь.
Первые таблицы, которые я создаю, например «Пользователи», имеют простое отношение базы данных к рабочей области. Например, используя поле WorkspaceId в таблице Users.
Моя проблема заключается в том, что я создаю больше таблиц, которые находятся «дальше», такие как UserSettings, которые могут иметь отношение один к одному с таблицей Users. Теперь мне нужно выполнить соединение с записью Users, чтобы получить рабочее пространство, которое UserSettings запись принадлежит.
Так что теперь я думаю, стоит ли добавлять значение workspaceId для всех таблиц, так как я в конце концов выполню много соединений в моей базе данных, чтобы продолжить проверку того, что у пользователя есть разрешения на этот ресурс.
Поиск советов / шаблонов архитектуры, которые могут помочь в сценарии.