Pertanyaan yang bagus!
Pertama, mari kita membuat beberapa asumsi tentang "lebih baik".
Saya berasumsi Anda tidak terlalu peduli dengan ruang disk - bitmask efisien dari sudut pandang ruang, tetapi saya tidak yakin itu penting jika Anda menggunakan server SQL.
Saya berasumsi Anda peduli dengan kecepatan. Bitmask bisa sangat cepat saat menggunakan perhitungan - tetapi Anda tidak akan dapat menggunakan indeks saat menanyakan bitmask. Ini seharusnya tidak terlalu menjadi masalah, tetapi jika Anda ingin tahu pengguna mana yang memiliki akses membuat, kueri Anda akan menjadi seperti
select * from user where permsission & CREATE = TRUE
(belum mendapat akses ke SQL Server hari ini, di jalan). Kueri tersebut tidak akan dapat menggunakan indeks karena operasi matematika - jadi jika Anda memiliki banyak pengguna, ini akan sangat menyakitkan.
Saya berasumsi Anda peduli tentang rawatan. Dari sudut pandang pemeliharaan, bitmask tidak seekspresif domain masalah yang mendasarinya seperti menyimpan izin eksplisit. Anda hampir pasti harus menyinkronkan nilai flag bitmask di beberapa komponen - termasuk database. Bukan tidak mungkin, tapi rasa sakit di bagian belakang.
Jadi, kecuali ada cara lain untuk menilai "lebih baik", saya akan mengatakan rute bitmask tidak sebaik menyimpan izin dalam struktur database yang dinormalisasi. Saya tidak setuju bahwa itu akan menjadi "lebih lambat karena Anda harus bergabung" - kecuali Anda memiliki basis data yang benar-benar tidak berfungsi, Anda tidak akan dapat mengukur ini (sedangkan kueri tanpa manfaat dari indeks aktif dapat menjadi terasa lebih lambat bahkan dengan beberapa ribu catatan).