Faktanya adalah jika Anda menginginkan izin tingkat artikel per pengguna maka Anda memerlukan cara untuk menghubungkan User
s ke Article
s mereka dapat mengakses. Ini memerlukan minimum Anda memerlukan N*A (di mana A adalah jumlah artikel yang diizinkan secara unik).
Pendekatan 3NF untuk ini adalah, seperti yang Anda sarankan, untuk memiliki UsersArticles
set... yang akan menjadi tabel yang sangat besar (seperti yang Anda catat).
Pertimbangkan bahwa tabel ini akan banyak diakses...Bagi saya ini seperti salah satu situasi di mana pendekatan yang sedikit didenormalisasi (atau bahkan noSQL) lebih tepat.
Pertimbangkan model yang digunakan Twitter untuk tabel pengikut pengguna mereka:
Jeff Atwood tentang masalah ini
Contoh dari potongan-potongan itu adalah pelajaran yang dipetik di Twitter bahwa menanyakan pengikut dari tabel yang dinormalisasi memberi tekanan luar biasa pada Users
meja. Solusi mereka adalah mendenormalisasi pengikut sehingga pengikut pengguna disimpan di pengaturan pengguna masing-masing.
Saya membayangkan pendekatan serupa dapat digunakan untuk melayani izin artikel dan menghindari UsersArticles
yang sangat tertekan satu meja.