Question

J'ai une webapp existante et que vous souhaitez ajouter une fonctionnalité de balise afin que les utilisateurs peuvent marquer des objets existants. La question est dois-je ajouter une colonne d'étiquette à chaque objet? ou devrais-je normaliser et utiliser une table d'étiquette où chaque objet aura une collection d'étiquettes? Je me penche vers ce dernier parce qu'il se sent plus propre, plus facile à un rapport et plus facile de créer un nuage de tags. Mais depuis que je sais que cela a été résolu 1000 fois que je voulais poser et de voir si je manque quelque chose?

Était-ce utile?

La solution

Envisagez-vous les utilisateurs qui ont besoin d'associer plus d'une étiquette avec un objet?

Si pas , ajoutez le tag_id fk à la table OBJECT. Sinon, vous auriez besoin de trois tables au total pour modéliser correctement plusieurs-à-plusieurs:

OBJET

  • OBJECT_ID (pk)

OBJECT_TAG_XREF

  • OBJECT_ID (pk, fk Object)
  • tag_id (pk, fk TAG)

TAG

  • tag_id (pk)

Autres conseils

Oui, vous devez normaliser. La « colonne tag » est soit va soutenir une seule étiquette par enregistrement, ou va avoir des performances de recherche hideuse.

Certainement normaliser. Une table pour les balises, une table pour vos objets existants, et une table de liens entre eux.

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