Trabajo con una aplicación que usa máscaras de bits para almacenar asignaciones de roles de usuario. Es un dolor en el trasero. Si esto me hace parcial, culpable como acusado.
Si ya está utilizando una base de datos relacional, es un antipatrón que viola la mayoría de la teoría relacional y todas las reglas de normalización. Cuando crea su propio almacenamiento de datos, puede que no sea una mala idea.
Existe la posibilidad de unir demasiadas tablas, pero las bases de datos relacionales están diseñadas para manejar esto. Muchos tienen características adicionales si el rendimiento se convierte en un problema: índices, vistas indexadas, etc. Incluso si los valores que está buscando no cambian con mucha frecuencia, lo cual es una ventaja para Bitmask, lo importante es tener que administrar la indexación. bastante fácil en la base de datos.
Aunque la base de datos hace un buen trabajo al agregar datos, pueden volverse lentos cuando comienza a introducir cosas como fórmulas complejas o funciones escalares en conjuntos de datos. Puede hacer el bit a bit en su aplicación, pero si todo lo que está haciendo es obtener datos relacionados (buscar los roles de un usuario), no está aprovechando lo que su almacenamiento de datos hace mejor.
Mi último argumento en contra sería la simplicidad para otros desarrolladores. Tienes usuarios, roles y tareas. Es un conjunto de relaciones de muchos a muchos (porque hay más de una relación) que es tan común que debería ser fácil de administrar. Es solo cosas CRUDAS.