Как бы вы создали базу данных для поддержки следующих функций тегов:
- элементы могут иметь большое количество тегов
- поиск всех элементов, помеченных определенным набором тегов, должен быть быстрым (элементы должны иметь ВСЕ теги, поэтому это AND-поиск, а не OR-поиск)
- Создание/запись элементов может быть медленнее для быстрого поиска/чтения
В идеале, поиск всех элементов, помеченных (по крайней мере) набором n заданных тегов, должен выполняться с использованием одного оператора SQL. Поскольку количество тегов для поиска, а также количество тегов для любого элемента неизвестны и могут быть высокими, использование JOIN непрактично.
Любые идеи?
Спасибо за все ответы.
Если я не ошибаюсь, эти ответы показывают, как выполнять OR-поиск по тегам. (Выберите все элементы, имеющие одну или несколько тегов n). Я ищу эффективный И-поиск. (Выберите все элементы, у которых есть ВСЕ теги n - и, возможно, больше.)