Question

J'ai la configuration suivante pour mon modèle de données de blog:

Blog               Articles             Categories
-----              --------          1  ----------
ID  \ 1         *  ID            /----- ID
Name \------------ BlogID       /       Name 
Owner              Name      * /      
                   CategoryID-/

Je suis inquiet de savoir comment ce modèle de données correspond aux "meilleures pratiques" pour les blogs. Si un blog est supprimé, tous les articles de ce blog doivent-ils être supprimés? Si une catégorie est supprimée, que devrait-il arriver aux articles?

Y a-t-il un meilleur moyen? Y a-t-il quelque chose qui me manque? Que suggèrent les "meilleures pratiques"?

Était-ce utile?

La solution

Cela dépend vraiment de votre cas d'utilisation. De nombreuses applications de blog utilisent des balises avec une relation plusieurs à plusieurs au lieu de catégories avec un relations un à plusieurs, car il est plus logique de voir un article comme étant lié à (éventuellement) plusieurs balises plutôt que de voir un article comme """. ; contenu " au sein d'une catégorie.

Si la logique de votre blog est qu'un article est strictement contenu dans une catégorie, la relation un à plusieurs est alors justifiée. Et dans certaines circonstances, une suppression en cascade serait également justifiée. Après tout, les articles orphelins existeraient-ils même?

Il s’agit simplement d’un cas dans lequel vous devez anticiper l’intuition de votre base d’utilisateurs. Qu'est-ce qu'ils ils supposent est naturel.

Incidemment, c'est beaucoup plus de travail, mais si c'était moi, je ne ferais pas de suppression en cascade. Je marquerais les articles comme orphelins et les cacherais à la plupart des vues. Je voudrais également fournir une interface pour la restauration d'articles orphelins. Et je envisagerais de fournir un script qui supprime tout ce qui est orphelin depuis plus d'une certaine période. De cette façon, si vous vous trompez sur les attentes de vos utilisateurs, vous pouvez résoudre le problème.

Autres conseils

Ce post (plus ancien) introduit quelques variations de schéma de base de données liées aux balises, y compris une discussion détaillée. Peut-être que c'est un bon point de départ.

Dépend. Si votre moteur de blog n'autorise pas une entrée sans catégorie spécifiée, vous devez probablement en informer l'utilisateur et supprimer les articles. Sinon, vous pouvez utiliser un ON DELETE SET NULL à la place.

Si vos relations sont correctement configurées, vous ne devriez pas pouvoir supprimer la catégorie sans supprimer au préalable toutes les données associées. Il semble étrange que la suppression d’une catégorie supprime un tas d’articles, mais dans le même temps, si une catégorie n’est plus valide, les articles ne devraient pas l'être non plus.

Peut-être une option pour remapper tous les articles dans une nouvelle catégorie.

Quelques questions. Un article peut-il avoir plus d'une catégorie? Permettez-vous aux articles d’avoir 0 catégories associées? D'après votre description, je dirais que vous ne voulez pas supprimer les articles. D'après mon expérience lors du développement d'un blog, les catégories sont généralement associées à des articles / publications (plusieurs catégories décrivant plusieurs publications). Donc, je ne les supprimerais pas, mais une fois de plus, cela dépendrait de votre logique métier et de la façon dont vous vouliez le gérer.

Votre clé étrangère (qui devrait exister ) et la relation entre votre catégorie de blog et votre publication de blog ne vous le permettraient pas. Vous devriez envisager de changer la catégorie de votre article en une autre si vous voulez conserver votre article et votre intégrité référentielle.

Oubliez le modèle de données, utilisez le modèle d'objet, c'est-à-dire quelles données sont implémentées et objet est interface, ce qui est plus proche de l'exigence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top