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?
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.
"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.
Ich bin mir nicht ganz sicher, ob das SO ist. Aber es gibt eine gute Diskussion hier .
Tags und Links sql architecture many-to-many schema