dedlfix: Abfrage von Tags - grundlegendes Verständnis

Beitrag lesen

Tach!

Häufig kann man ja mittlerweile "Tags" angeben. Wenn ich also eine Nachricht über Griechenland eingebe, könnte ich als Tags zum Beispiel "Athen; Finanzkrise" eingeben.
In meiner Vorstellung steht das dann auch so in der Datenbank (ich gehe mal von MySQL aus).

Es mag ja sein, dass du sie mit Semikolon getrennt in ein Eingabefeld eingibst, aber sie so zusammen im DBMS abzulegen ist sehr ungünstig. Denn wenn du Abfragen nach einzelnen Tags stellst, musst du dabei immer die zusammenstehenden Information auftrennen. Das geht zwar irgendwie, ist aber recht aufwendig, weil das bei jeder Abfrage mit jedem Datensatz passieren muss und somit die Verwendung eines Index nicht möglich ist. Na gut, ein Volltextindex könnte gehen. Dadurch wird es aber insgesamt nicht besser. Bei Aufgaben wie "Liste aller Tags" bekommst du dann langsam ernste Probleme. Besser ist, eine m:n-Beziehung zu implementieren. In einer Tabelle stehen die Artikel, in einer anderen stehen alle Tags, aber jeder nur einmal. In einer dritten Tabelle stehen die Zuordnungen zwischen Artikel und Tags über deren IDs.

Wenn ich das jetzt auf mein Problem übertrage, dann würde ich auch gerne solche Tags verwenden. Aber der Sinn dieser Tags besteht doch sicherlich darin, dass ich z. B. alle Nachrichten anzeigen lasse, in denen die Tags "Athen" stehen.

Mit der m:n-Beziehung geht das jedenfalls so: Liste alle Nachrichten, zu deren ID in der Zuordnungstabelle ein Datensatz existiert, dessen Tag-ID der von Athen entspricht.

dedlfix.