Wege zur Umsetzung-tags - vor-und Nachteile der einzelnen

Verwandte

Mit SO als Beispiel, was ist die vernünftigste Art und Weise zu verwalten, tags wenn Sie erwarten, werden Sie oft ändern?

Weg 1: Ernst denormalisierte (Trennzeichen-getrennt)

Tabelle Beiträge 
+--------+-----------------+ 
| postId | tags | 
+--------+-----------------+ 
| 1 | c++,Suche,code | 

Hier-tags werden durch Komma getrennt.

Profis: Tags abgerufen werden gleichzeitig mit einem einzigen select Abfrage. Aktualisierung von tags ist einfach. Einfach und Billig zu aktualisieren.

Nachteile: Extra parsing-tag auf Abruf, schwer zu zählen, wie viele posts verwenden Sie die tags.

(alternativ, wenn auch begrenzten, so etwas wie 5 tags)

Tabelle Beiträge 
+--------+-------+-------+-------+-------+-------+ 
| postId | tag_1 | tag_2 | tag_3 | tag_4 | tag_5 | 
+--------+-------+-------+-------+-------+-------+ 
| 1 | c++ |search | Codes | | | 

Weg 2: "Etwas normalisiert" (separate Tabelle, keine Kreuzung)

Tabelle posts 
+--------+-------------------+ 
| postId | Titel | 
+--------+-------------------+ 
| 1 | Wie u-tag? | 

Tabelle taggings 
+--------+---------+ 
| postId | tagName | 
+--------+---------+ 
| 1 | C++ | 
| 1 | suchen | 

Profis: Einfach zu sehen-tag zählt (count(*) from taggings where tagName='C++').

Nachteile: tagName wird wahrscheinlich wiederholt werden viele, viele Male.

Weg 3: Die coolen kid ' s (normalisiert mit Schnittpunkt Tabelle)

Tabelle Beiträge 
+--------+---------------------------------------+ 
| postId | Titel | 
+--------+---------------------------------------+ 
| 1 | Warum ist ein Rabe wie ein Schreibtisch? | 

Tabelle tags 
+--------+---------+ 
| tagId | tagName | 
+--------+---------+ 
| 1 | C++ | 
| 2 | Suche | 
| 3 | foofle | 

Tabelle taggings 
+--------+---------+ 
| postId | tagId | 
+--------+---------+ 
| 1 | 1 | 
| 1 | 2 | 
| 1 | 3 | 

Profis:

  • Keine sich wiederholenden tag-Namen.
  • Mehr Mädchen wie Sie.

Nachteile: teurer ändern tags, als Weg #1.

  • Ich würde senden Sie eine E-Mail / twitter jemanden, der hatte für die Verwaltung von tags, bevor Sie. Wie Jeff Atwood oder einem der anderen, SO die Entwickler. Sie könnten in der Lage sein zu geben, einige Einblicke.
  • klingt für mich wie Sie nur die Frage beantwortet. So wählen Sie einfach die, die am besten passt Ihre Anforderungen. Wenn Sie möchten, dass Mädchen wie Sie, dann gehen Sie für die #3.
  • Mehr Mädchen wie Sie, eh? Ich mag, dass die Wahl!
  • Verwandte und möglicherweise doppelte: stackoverflow.com/questions/1810356/how-to-implement-tag-system
  • Ich bin kein sql-Experte. Könnten Sie mir bitte sagen, ob ich hinzufügen sollte einen Primärschlüssel enthalten postId und tagId zu den taggings Tabelle? Dies würde verhindern, dass das hinzufügen der gleiche tag, um einen post mehrere Male.
  • Für diejenigen, die Lesen meinen Kommentar oben. Ich denke, es ist am besten, einfach fügen Sie ein eindeutige Einschränkung
  • hast du irgendwelche Mädchen, die mit Methode #3??? @bobobobo Frage für einen Freund

InformationsquelleAutor bobobobo | 2010-05-21
Schreibe einen Kommentar