Het feit is dat als u permissies op artikelniveau per gebruiker dan heb je een manier nodig om User
te relateren s naar het Article
waar ze toegang toe hebben. Dit vereist een minimum je hebt N*A nodig (waarbij A het aantal uniek geautoriseerde artikelen is).
De 3NF-benadering hiervoor zou zijn, zoals u suggereerde, om een UsersArticles
. te hebben set... wat een zeer grote tafel zou zijn (zoals u opmerkte).
Bedenk dat deze tabel veel gebruikt zou worden... Dit lijkt mij een van de situaties waarin een enigszins gedenormaliseerde benadering (of zelfs geenSQL) meer geschikt is.
Overweeg het model dat Twitter gebruikt voor hun tabellen met gebruikersvolgers:
Jeff Atwood over dit onderwerp
En blog met hoge schaalbaarheid
Een voorbeeld van die stukken is een les die Twitter heeft geleerd dat het bevragen van volgers uit een genormaliseerde tabel enorme druk legt op een Users
tafel. Hun oplossing was om volgers te denormaliseren, zodat de volgers van een gebruiker worden opgeslagen in hun individuele gebruikersinstellingen.
Ik kan me voorstellen dat een vergelijkbare aanpak kan worden gebruikt om artikelrechten te verlenen en een enorm gestresste UsersArticles
te vermijden. enkele tafel.