Я працюю з додатком, який використовує бітові маски для зберігання призначених для користувача ролей. Це біль у попці. Якщо це робить мене упередженим, винним як звинувачення.
Якщо ви вже використовуєте реляційну базу даних, це антитіла, яка порушує більшість теорій реляції та всі норми нормалізації. Коли ви будуєте власне сховище даних, це може бути не так вже й поганою ідеєю.
Існує таке поняття, як об'єднується занадто багато таблиць, але для цього впорядковані реляційні бази даних. У багатьох є додаткові можливості, якщо продуктивність стає проблемою: індекси, індексовані перегляди тощо. Навіть якщо значення, які ви шукаєте, змінюються не дуже часто, що є перевагою для Bitmask, головна потреба в управлінні індексуванням є досить легко в базі даних.
Хоча база даних добре справляється з агрегуванням даних, вони можуть стати млявими, коли ви почнете вводити в набори даних такі речі, як складні формули або скалярні функції. Ви можете робити побіжно в своєму додатку, але якщо все, що ви робите, - це отримання пов’язаних даних (пошук ролі користувачів), ви не скористаєтеся тим, що найкраще зберігає ваші дані.
Мій останній аргумент проти цього буде простотою для інших розробників. У вас є користувачі, ролі та завдання. Це набір відносин "багато до багатьох" (оскільки існує декілька відносин), який є настільки поширеним, що ним слід легко керувати. Це просто речі CRUD.