Cómo modelar las etiquetas en la base de datos?
-
19-09-2019 - |
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?
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.