Pracuję z aplikacją, która wykorzystuje maski bitowe do przechowywania przypisań ról użytkownika. To jest ból w tyłku. Jeśli to sprawia, że jestem stronniczy, winny, jak oskarżony.
Jeśli korzystasz już z relacyjnej bazy danych, jest to anty-wzorzec, który narusza większość teorii relacyjnych i wszystkie reguły normalizacji. Kiedy budujesz własny magazyn danych, może to nie być taki zły pomysł.
Jest coś takiego, że łączy się zbyt wiele tabel, ale do tego służą zbudowane relacyjne bazy danych. Wiele z nich ma dodatkowe funkcje, jeśli wydajność staje się problemem: indeksy, widoki indeksowane itp. Nawet jeśli wartości, na które patrzysz, nie zmieniają się zbyt często, co jest zaletą dla maski bitowej, narzut związany z zarządzaniem indeksowaniem jest dość łatwe w bazie danych.
Chociaż baza danych dobrze agreguje dane, mogą stać się powolne, gdy zaczniesz wprowadzać takie rzeczy, jak złożone formuły lub funkcje skalarne do zestawów danych. Możesz zrobić to bitowo w swojej aplikacji, ale jeśli wszystko, co robisz, to uzyskiwanie powiązanych danych (wyszukiwanie ról użytkownika), nie korzystasz z tego, co najlepiej robi twoje przechowywanie danych.
Moim ostatnim argumentem przeciwko temu byłaby prostota dla innych programistów. Masz użytkowników, role i zadania. Jest to zestaw relacji wiele do wielu (ponieważ istnieje więcej niż jeden związek), który jest tak powszechny, że zarządzanie nim powinno być łatwe. To tylko CRUD.