Ein Datenbankschema für Tags (zB jeder Beitrag hat einige optionale Tags)

8

Ich habe eine Website wie SO, Wordpress, usw., wo Sie einen Beitrag machen und Sie können (optionale) Tags dagegen haben.

Was ist ein gängiges Datenbankschema, um damit umzugehen? Ich nehme an, es ist eine viele & lt; - & gt; viele Struktur, mit drei Tabellen.

Hat jemand Ideen?

    
Pure.Krome 12.03.2009, 23:29
quelle

5 Antworten

9

Eine Struktur mit drei Tischen, viele zu viele sollte in Ordnung sein.

z. Posts, PostsToTags(post_id,tag_id), Tags

Der Schlüssel ist die Indizierung. Stellen Sie sicher, dass die PostsToTags-Tabelle in beide Richtungen indiziert ist ( post_id,tag_id und tag_id,post_id ). Auch wenn die Leseleistung extrem kritisch ist, können Sie eine indizierte Sicht einführen (was Ihnen post_name, tag_name) geben könnte

Sie werden natürlich auch Indizes für Beiträge und Tags benötigen.

    
Sam Saffron 13.03.2009, 11:38
quelle
1

"Ich nehme an, es ist eine sehr viel & lt; - & gt; viele Struktur, mit drei Tabellen. Hat jemand irgendwelche Ideen?"

Genauer gesagt, gibt es keine ernsthaften Alternativen, oder? Zwei relationale Tabellen in einer Viele-zu-Viele-Beziehung erfordern mindestens eine Zuordnungstabelle, um alle Kombinationen von Fremdschlüsseln zu übertragen.

Macht SO das? Wer weiß. Ihr Datenmodell enthält Referenzzählungen und - für alle möglichen - Datum-Zeitstempel und Original-Ersteller und eine Menge anderen Kram über das Tag.

Minimal müssen drei Tische sein.

Was sie auf SO machen, ist schwer zu wissen.

    
S.Lott 12.03.2009 23:38
quelle
0

Ich bin mir nicht ganz sicher, ob das SO ist. Aber es gibt eine gute Diskussion hier .

    
Brian R. Bondy 12.03.2009 23:33
quelle
0

Es wäre eine gute Idee herauszufinden, wie wordpress Tags für Posts behandelt und es gibt Ihnen eine Idee.

    
Shoban 13.03.2009 04:47
quelle
-1

Die andere Möglichkeit ist natürlich, dass es nur zwei Tabellen gibt.

Wenn höchstens 5 Tags vorhanden sind, ist eine Fragetabelle mit fünf Nullable-Fremdschlüsselverweisen auf eine Tag-Tabelle möglich.

Nicht sehr normalisiert, aber es könnte leistungsfähiger sein.

    
Damovisa 13.03.2009 06:58
quelle