Database
 sql >> Base de données >  >> RDS >> Database

Ajout de fonctionnalités plus avancées telles que la gestion des catégories et le vote sur les discussions et les publications

Dans mon deuxième article sur un forum en ligne, j'ai mentionné qu'il pourrait y avoir plusieurs fonctionnalités plus avancées à ajouter :

  • Forum catégories et des sous-catégories où chaque catégorie a un sujet, plusieurs modérateurs et des informations supplémentaires comme la date de création de la catégorie.
  • Une publication peut avoir un sujet en plus du contenu.
  • Nous souhaiterions peut-être autoriser les utilisateurs à voter pour et voter contre sur les discussions et les messages.

Pour pouvoir saisir plus facilement le modèle, nous avons préparé un exemple d'un tel forum avec des catégories, des fils de discussion, des messages, etc. Nous espérons que cela facilite la compréhension :

Les entités de la partie 1 sont colorées en jaune et les entités de la partie 2 sont colorées en orange. Voici le modèle de base de données actuel après les deux premiers articles :




Plus de détails sur les publications

Dans le deuxième article, j'ai seulement ajouté des relations au "statut" pour les fils de discussion et les publications, mais maintenant je voudrais améliorer les publications avec un détail supplémentaire au-delà du simple contenu. Pour l'instant, je vais ajouter un "sujet" pour chaque message qui pourrait être différent du "sujet" du fil de discussion. Avec le «sujet» (pensez à la ligne d'objet d'un e-mail ou au sujet d'un message MMS), nous pouvons afficher une version condensée du contenu - comme les premières lignes d'un e-mail qui s'affiche dans Outlook ou sur votre téléphone. poster. De plus, les utilisateurs peuvent utiliser le "sujet" d'un message pour enregistrer un commentaire de haut niveau comme "Je ne suis pas d'accord", puis mettre leurs arguments dans la section des commentaires du message. Il s'agit d'une belle modification simple du modèle.

Catégories

Maintenant que nous nous sommes réchauffés, ajoutons un nouveau concept (entité) pour la catégorisation des fils de discussion et des publications. Chaque catégorie sera définie avec un nom; chaque catégorie est créée par un utilisateur et aura au moins un modérateur parmi les utilisateurs, ainsi que quelques autres attributs comme les messages et les fils que nous avons déjà. Nous voudrions des catégories et des sous-catégories, nous allons donc autoriser les catégories à faire référence à d'autres (sous-) catégories.

Comme j'aimerais avoir plusieurs modérateurs sur chaque catégorie, je vais faire un tableau pour lier les catégories à des groupes d'utilisateurs, et lier les utilisateurs à ces groupes. Ce tableau définira des "groupes" d'utilisateurs, dont l'un sera des "modérateurs", mais à l'avenir, cela pourrait être étendu à d'autres types de groupes.

Voter ou "J'aime"

Personnellement, je préfère «voter pour» ou «voter contre» sur quelque chose plutôt que simplement «l'aimer» (mais je suppose que Mark Zuckerberg n'est pas d'accord avec moi sur ce point). Je choisirai de créer un mécanisme de vote qui permet aux utilisateurs de voter pour un « vote en faveur » ou un « vote contre ». Nous pouvons choisir d'interdire les votes négatifs lorsqu'il n'y a pas de votes positifs, ou de limiter le nombre de votes négatifs, mais c'est à l'application de décider, la base de données gardera simplement une trace du décompte des votes positifs et négatifs.

Nous pourrions créer des tables séparées pour les votes sur les discussions et les votes sur les publications, mais je les conserverai dans la même table avec des clés étrangères facultatives de la table des discussions et des publications. De plus, je choisis de ne pas avoir de vote sur les catégories.

Conception formelle

Pour l'instant, cela résume les modifications apportées au modèle, nous pouvons donc examiner la conception formelle. Encore une fois, nous étendons l'ERD qui a été créé dans les parties 1 et 2. Les modifications décrites dans cet article et introduites dans le modèle sont colorées en bleu.




Conclusion

Il y a encore des améliorations supplémentaires qui pourraient être apportées, mais ici, nous avons fait de notre base de données pour un forum en ligne une conception assez complète - cela prendrait en charge la plupart des forums de discussion en ligne typiques.

De quelles autres fonctionnalités votre forum en ligne a-t-il besoin ?

« Partie précédente