Pregunta

Tengo una aplicación web existente y quiero añadir una característica etiqueta de modo que los usuarios pueden etiquetar los objetos existentes. La pregunta es debo añadir una columna de etiqueta para cada objeto? o debería normalizar y utilizar una tabla de variables, donde cada objeto tendrá una colección de etiquetas? Me estoy inclinando hacia la última porque se siente más limpio, más fácil de informar y fácil para crear una nube de etiquetas. Pero como sé que esto ha sido resuelto 1.000 veces quería preguntar y ver si estoy perdiendo algo?

¿Fue útil?

Solución

¿Cree que los usuarios necesitan para asociar más de una etiqueta con un objeto?

Si no , agregue el FK tag_id a la tabla de objetos. De lo contrario, se necesitaría tres mesas en total para modelar correctamente una relación de muchos a muchos:

OBJETO

  • OBJECT_ID (pk)

OBJECT_TAG_XREF

  • OBJECT_ID (pk, FK a objeto)
  • tag_id (pk, FK a TAG)

TAG

  • tag_id (pk)

Otros consejos

Sí, usted debe normalizarla. La 'etiqueta de la columna' está bien va a soportar sólo una etiqueta por registro, o va a tener horrible rendimiento de la búsqueda.

Definitivamente normalizarse. Una mesa para etiquetas, una mesa para los objetos existentes, y una mesa de vínculos entre ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top