Faktem je, že pokud chcete oprávnění na úrovni článku na uživatele pak potřebujete způsob, jak spojit User
s do Article
s mohou přistupovat. To vyžaduje minimum potřebujete N*A (kde A je počet článků s jedinečným oprávněním).
Přístup 3NF k tomu by byl, jak jste navrhl, mít UsersArticles
set... což by byl velmi velký stůl (jak jste poznamenal).
Uvažte, že k této tabulce by se přistupovalo hodně...Tohle mi připadá jako jedna ze situací, kdy je vhodnější mírně denormalizovaný přístup (nebo dokonce noSQL).
Zvažte model, který Twitter používá pro své tabulky sledujících uživatelů:
A blog o vysoké škálovatelnosti
Ukázka z těchto částí je lekcí získanou na Twitteru, že dotazování sledujících z normalizované tabulky klade na Users
obrovský tlak. stůl. Jejich řešením bylo denormalizovat sledující tak, že sledující uživatele jsou uloženy v jejich individuálních uživatelských nastaveních.
Představuji si, že podobný přístup by mohl být použit k poskytování oprávnění k článkům a vyhnout se extrémně stresovaným UsersArticles
jeden stůl.