2013-05-12 5 views
1

Je développe un site web qui permet aux utilisateurs de lire des articles. Je souhaite implémenter des fonctionnalités qui permettent de marquer automatiquement les articles lus lorsqu'ils sont consultés par un utilisateur. Le problème est que je ne sais pas comment stocker les données de lecture d'article dans db. Il pourrait y avoir des centaines de milliers d'articles et plusieurs milliers d'utilisateurs. Le stockage de la ligne pour chaque article/utilisateur dans la table de jointure "Lire les articles" semble être inefficace. Quelles sont les autres options?Quelle est la meilleure façon de stocker des articles en lecture dans sql db?

+3

Non, c'est la bonne façon. – eggyal

+0

Vous le faites déjà correctement. – ajtrichards

+0

Ne pas sous-estimer la puissance d'une base de données :-) – Bart

Répondre

2

Il pourrait y avoir des centaines de milliers d'articles et plusieurs milliers d'utilisateurs. Le stockage de la ligne pour chaque article/utilisateur dans la table de jointure "Lire les articles" semble être inefficace.

Le schéma qui stocke une ligne par paire {user, article} est correct. L'implication d'avoir beaucoup de lignes rend ce système inefficace est incorrect: les bases de données modernes sont optimisées pour gérer beaucoup de lignes très efficacement. En outre, l'implication de "traduire des centaines de milliers d'articles et plusieurs milliers d'utilisateurs" en plusieurs lignes est également incorrecte: vous stockerez une ligne par article que l'utilisateur lit, pas pour chaque article, le nombre de lignes que vous obtenez serait donc inférieur de plusieurs ordres de grandeur à l'estimation du pire des cas.

0

En fonction de votre stratégie:

Si vous stockez des articles uniques pour chaque utilisateur (fonctionnalité me lire plus tard), vous pouvez stocker l'état de l'article.

Si vous avez un ensemble d'articles qui peuvent être lus par n'importe quel utilisateur, alors vous le faites correctement en introduisant une table supplémentaire pour stocker les états de lecture. Je ne vois rien de mal dans cette approche.

Questions connexes