¿Cómo diseñaría una base de datos para admitir las siguientes características de etiquetado:
- los elementos pueden tener una gran cantidad de etiquetas
- Las búsquedas de todos los elementos que están etiquetados con un conjunto determinado de etiquetas deben ser rápidas (los elementos deben tener TODAS las etiquetas, por lo que es una búsqueda AND, no una búsqueda OR)
- crear / escribir elementos puede ser más lento para permitir una búsqueda / lectura rápida
Idealmente, la búsqueda de todos los elementos que están etiquetados con (al menos) un conjunto de n etiquetas dadas debe hacerse usando una sola instrucción SQL. Dado que se desconoce el número de etiquetas para buscar, así como el número de etiquetas en cualquier elemento y puede ser alto, no es práctico usar JOIN.
¿Algunas ideas?
Gracias por todas las respuestas hasta el momento.
Sin embargo, si no me equivoco, las respuestas dadas muestran cómo hacer una búsqueda OR en las etiquetas. (Seleccione todos los elementos que tengan una o más de n etiquetas). Estoy buscando una eficiente búsqueda AND. (Seleccione todos los elementos que tengan TODAS las etiquetas n, y posiblemente más).