Faktem jest, że jeśli chcesz uprawnienia na poziomie artykułu na użytkownika wtedy potrzebujesz sposobu na powiązanie User
s do Article
s mają dostęp. Wymaga to minimum potrzebujesz N*A (gdzie A jest liczbą artykułów z unikalnymi uprawnieniami).
Podejściem 3NF do tego byłoby, jak sugerowałeś, posiadanie UsersArticles
zestaw... który byłby bardzo dużym stołem (jak zauważyłeś).
Weź pod uwagę, że dostęp do tej tabeli byłby bardzo często… Wydaje mi się, że jest to jedna z sytuacji, w których bardziej odpowiednie jest nieco zdenormalizowane podejście (lub nawet noSQL).
Rozważ model, którego używa Twitter dla swoich tabel obserwujących użytkowników:
I blog o wysokiej skalowalności
Próbka z tych fragmentów to lekcja wyciągnięta z Twittera, że wysyłanie zapytań do obserwujących ze znormalizowanej tabeli kładzie ogromny nacisk na Users
stół. Ich rozwiązaniem była denormalizacja obserwujących, tak aby obserwujący użytkownika byli przechowywani w ich indywidualnych ustawieniach użytkownika.
Wyobrażam sobie, że podobne podejście można zastosować do obsługi uprawnień do artykułów i uniknięcia niezwykle stresującego UsersArticles
pojedynczy stół.