Tengo una aplicación web existente y quiero agregar una función de etiqueta para que los usuarios puedan etiquetar los objetos existentes. La pregunta es si debo agregar una columna de etiqueta a cada objeto. o debería normalizarlo y usar una tabla de etiquetas donde cada objeto tendrá una colección de etiquetas? Me inclino por este último porque se siente más limpio, más fácil de informar y más fácil de crear una nube de etiquetas. Pero como sé que esto se ha resuelto 1000 veces, quería preguntar y ver si me falta algo.¿Cómo se modelan las etiquetas en la base de datos?
9
A
Respuesta
6
¿Prevé que los usuarios necesiten asociar más de una etiqueta con un objeto?
Si no, agregue el TAG_ID a la tabla OBJETO. De lo contrario, se necesitaría tres mesas en total para modelar correctamente una relación muchos-a-muchos relación:
OBJETO
- OBJECT_ID (pk)
OBJECT_TAG_XREF
- OBJECT_ID (pk, fk a OBJETO)
- TAG_ID (pk, fk a TAG)
TAG
- tag_id (pk)
4
Sí, deberías normalizarlo. La 'columna de etiquetas' admite solo una etiqueta por registro o tendrá un rendimiento de búsqueda horrible.
2
Definitivamente normalizar. Una tabla para etiquetas, una tabla para sus objetos existentes y una tabla de enlaces entre ellos.
Cuestiones relacionadas
- 1. ¿Cómo se modelan los estados de aplicación?
- 2. ¿Cómo se modelan las misiones del juego (por ejemplo, Oblivion)?
- 3. cómo guardar etiquetas (palabras clave) en la base de datos?
- 4. ¿Cómo colocar todas las tablas en la base de datos sin soltar la base de datos?
- 5. ¿Estructura de datos eficiente para las etiquetas?
- 6. se cierren las conexiones de base de datos en Java
- 7. ¿Cómo se maneja la gestión de la configuración de las tablas de la base de datos?
- 8. Cómo guardar etiquetas/palabras clave de la matriz a la base de datos con php?
- 9. Cómo mostrar etiquetas HTML guardadas en la base de datos utilizando Symfony 2 y Twig
- 10. En Oracle, ¿cómo se cambia la base de datos 'predeterminada'?
- 11. ¿Cómo se enseña la normalización de la base de datos?
- 12. Cómo decidir utilizar las transacciones de la base de datos
- 13. etiquetas html en las etiquetas de opción
- 14. Las etiquetas en los datos de entrada en gnuplot
- 15. ¿Cuál es el modelo de datos utilizado para las etiquetas y los sinónimos de las etiquetas?
- 16. Lista de todas las tablas en la base de datos
- 17. ¿La mejor manera de almacenar etiquetas en una base de datos?
- 18. Enumeraciones persistentes en las tablas de la base de datos
- 19. ¿Cómo se hacen las consultas GIS en Heroku usando la base de datos compartida?
- 20. cómo usar las etiquetas en GIT
- 21. cómo almacenar datos en la base de datos en HTML5
- 22. Alterar las tablas de la base de datos en Django
- 23. Ordenar columnas en las tablas de la base de datos
- 24. Actualización de la base de datos sqlite cuando la base de datos del servidor se actualiza
- 25. ¿Cómo se modelan los roles/relaciones con el Diseño Dirigido por Dominio en mente?
- 26. SQLiteOpenHelper: ¿cómo se crea la base de datos?
- 27. ¿Cómo se definen las etiquetas permitidas en CKEditor?
- 28. ¿Cómo se encuentran las etiquetas que no coinciden en HTML?
- 29. Enterprise Architect: ¿Ocultar etiquetas de claves externas en el diagrama de la base de datos?
- 30. Renombrar todas las tablas en la base de datos
¿Cómo este cambio para atar etiquetas a los usuarios? ¿OBJECT_ID se convertiría en USER_ID? –
@JuniperAsh: Debería agregar una columna 'user_id' a' OBJECT_TAG_XREF', igual que las otras dos columnas, clave principal y clave externa a la tabla de usuarios. –
¡Tiene mucho más sentido! ¡Gracias! –