Jak zaprojektowałbyś bazę danych obsługującą następujące funkcje znakowania:
- elementy mogą mieć dużą liczbę tagów
- wyszukiwanie wszystkich elementów oznaczonych danym zestawem tagów musi być szybkie (elementy muszą mieć WSZYSTKIE tagi, więc jest to wyszukiwanie AND, a nie wyszukiwanie OR)
- tworzenie / pisanie elementów może być wolniejsze, aby umożliwić szybkie wyszukiwanie / czytanie
Najlepiej byłoby, gdyby wyszukiwanie wszystkich elementów oznaczonych (przynajmniej) zestawem n podanych znaczników odbywało się za pomocą jednej instrukcji SQL. Ponieważ liczba tagów do wyszukania, a także liczba tagów na dowolnym elemencie są nieznane i mogą być wysokie, używanie funkcji JOIN jest niepraktyczne.
Jakieś pomysły?
Dzięki za wszystkie dotychczasowe odpowiedzi.
Jeśli się jednak nie mylę, podane odpowiedzi pokazują, jak wyszukiwać OR na tagach. (Wybierz wszystkie elementy, które mają jeden lub więcej z n tagów). Szukam wydajnego wyszukiwania AND. (Wybierz wszystkie elementy, które mają WSZYSTKIE znaczniki n - i prawdopodobnie więcej).