Вариант 1 подходит для простых систем. Один запрос дает вам одну строку со всей необходимой информацией. Это очень эффективно. Эффективность «хорошая». И это может даже квалифицироваться как «лучше» для ваших нужд.
Вариант 2 отличен, если права действия, скорее всего, будут расширены с течением времени непредсказуемым образом и будут использоваться по существу изолированными модулями, которые хотят подтвердить, что пользователь имеет доступ только к своей уникальной подсистеме. Это сложнее в том, что «соединение» должно выполняться при одновременном извлечения как актера, так и информации о доступе. Но мне нравится присоединиться, поэтому я не буду говорить неэффективно слишком громко, и DBS построены, чтобы быть хорошими в них. Используйте индексы с умом, и они в порядке.
Использование таблиц ссылок является более сложным с точки зрения кодирования. Вы разделили свои данные и поэтому должны писать более сложный код, который имеет дело с каждым разным его фрагментом. Однако я лично считаю, что это «хорошая» сложность в том, что каждая уникальная часть данных имеет свою собственную уникальную часть (ы) зависимого кода. Позволяет модульность и унарное инкапсулирование функциональности.