Wie würden Sie eine Datenbank entwerfen, die die folgenden Tagging-Funktionen unterstützt:
- Elemente können eine große Anzahl von Tags haben
- Die Suche nach allen Elementen, die mit einem bestimmten Satz von Tags versehen sind, muss schnell erfolgen (die Elemente müssen ALLE Tags enthalten, es handelt sich also um eine UND-Suche, nicht um eine ODER-Suche).
- Das Erstellen / Schreiben von Elementen kann langsamer sein, um ein schnelles Nachschlagen / Lesen zu ermöglichen
Idealerweise sollte die Suche aller Elemente, die mit (mindestens) einer Menge von n angegebenen Tags versehen sind, mit einer einzigen SQL-Anweisung durchgeführt werden. Da die Anzahl der zu suchenden Tags sowie die Anzahl der Tags für ein Element unbekannt sind und möglicherweise hoch sind, ist die Verwendung von JOINs unpraktisch.
Irgendwelche Ideen?
Vielen Dank für alle bisherigen Antworten.
Wenn ich mich jedoch nicht irre, zeigen die angegebenen Antworten, wie eine ODER-Suche nach Tags durchgeführt wird. (Wählen Sie alle Elemente mit einem oder mehreren von n Tags aus.) Ich suche eine effiziente UND-Suche. (Wählen Sie alle Elemente mit ALL n Tags aus - und möglicherweise mehr.)