Skvělá otázka!
Nejprve si udělejme nějaké předpoklady o „lepším“.
Předpokládám, že se moc nestaráte o místo na disku - bitová maska je efektivní z hlediska prostoru, ale nejsem si jistý, že na tom moc záleží, pokud používáte SQL server.
Předpokládám, že vám záleží na rychlosti. Bitová maska může být velmi rychlá při použití výpočtů – ale při dotazování na bitovou masku nebudete moci použít index. Na tom by nemělo tolik záležet, ale pokud chcete vědět, kteří uživatelé mají přístup k vytvoření, váš dotaz by byl něco jako
select * from user where permsission & CREATE = TRUE
(dnes na cestách nemám přístup k serveru SQL). Tento dotaz by nemohl použít index kvůli matematické operaci – takže pokud máte velký počet uživatelů, bylo by to docela bolestivé.
Předpokládám, že vám záleží na udržovatelnosti. Z hlediska udržovatelnosti není bitová maska tak výrazná jako základní problémová doména jako ukládání explicitních oprávnění. Téměř jistě byste museli synchronizovat hodnotu příznaků bitové masky napříč více komponentami – včetně databáze. Ne nemožné, ale bolest v zádech.
Takže pokud neexistuje jiný způsob, jak vyhodnotit "lepší", řekl bych, že trasa bitové masky není tak dobrá jako ukládání oprávnění v normalizované struktuře databáze. Nesouhlasím s tím, že by to bylo „pomalejší, protože se musíte připojit“ – pokud nemáte zcela nefunkční databázi, nebudete to schopni změřit (zatímco dotazování bez výhody aktivního indexu se může znatelně stát pomalejší i s několika tisíci záznamy).