Saya bekerja dengan aplikasi yang menggunakan bitmasks untuk menyimpan tugas peran pengguna. Rasa sakit di pantat. Jika ini membuat saya bias, bersalah seperti yang dituduhkan.
Jika Anda sudah menggunakan basis data relasional, ini merupakan anti-pola yang melanggar sebagian besar teori relasional dan semua aturan normalisasi. Ketika Anda membangun penyimpanan data Anda sendiri, itu mungkin bukan ide yang buruk.
Ada yang namanya terlalu banyak tabel yang bergabung, tetapi database relasional dibangun untuk menangani hal ini. Banyak yang memiliki fitur tambahan jika kinerja menjadi masalah: indeks, tampilan yang diindeks, dll. Bahkan jika nilai yang Anda cari tidak terlalu sering berubah, yang merupakan keuntungan bagi Bitmask, kelebihan dari keharusan mengelola pengindeksan adalah cukup mudah di database.
Meskipun database melakukan pekerjaan yang baik dalam mengumpulkan data, mereka bisa menjadi lamban ketika Anda mulai memperkenalkan hal-hal seperti rumus kompleks atau Fungsi Skalar ke dalam kumpulan data. Anda dapat melakukan bitwise di aplikasi Anda, tetapi jika semua yang Anda lakukan adalah mendapatkan data terkait (mencari peran pengguna), Anda tidak mengambil keuntungan dari apa yang dilakukan penyimpanan data Anda yang terbaik.
Argumen terakhir saya yang menentangnya adalah kesederhanaan untuk pengembang lain. Anda memiliki pengguna, peran, dan tugas. Ini set hubungan banyak-ke-banyak (karena ada lebih dari satu hubungan) yang sangat umum, itu harus mudah dikelola. Itu hanya hal-hal CRUD.