Frage

Was ist der beste Weg, Tags für einen Datensatz zu speichern? Verwenden Sie einfach ein varchar Feld? Was ist, wenn Zeilen auswählen, die Tag-x enthält? Verwenden Sie den Operator wie?

Danke!

War es hilfreich?

Lösung

hängt von zwei Dingen:
1) Die Menge der Tags / markierte Datensätze
2) Unabhängig davon, ob Sie haben eine religiöse Meinung zu Normalisierung :-)

Es sei denn, mit sehr großen Datenmengen zu tun, würde ich vorschlagen ‚Tags‘ Tabellenzuordnung varchar Werte mit Kennungen auf ganzzahlige dann zweite Tabellenzuordnung Aufzeichnungen ihren Tag-IDs markiert. Ich würde vorschlagen, dass dieses erste Implementierung, dann überprüfen Sie, ob es Ihre Leistungsanforderungen nicht erfüllt. In diesem Fall hält eine einzelne Tabelle mit einer ID für die markierte Zeile und der eigentlichen Text des Tags, aber in dieser würde ich vorschlagen, dass Sie eine char-Spalte verwenden, wie es Ihre Abfrage zu töten, wenn der Optimierer einen vollständigen Tabellenscan hat gegen ein großer Tisch mit einer Varchar-Spalte.

Andere Tipps

Nein, es ist generell eine schlechte Idee mehr Stücke von Daten in einem einzigen Feld zu setzen. Verwenden Sie stattdessen eine separate Stichworte Tabelle (vielleicht mit nur einem TagID und TagName) und dann für jeden Datensatz, den TagID damit verbundenen anzuzeigen. Wenn ein Datensatz mit mehreren Tags zugeordnet ist, müssen Sie doppelte Datensätze mit dem einzigen Unterschied, TagID.

Der Vorteil hierbei ist, dass man leicht nach Tag, durch Aufzeichnung abfragen kann, und hält separat die Tags-Tabelle (das heißt was, wenn ein Tag-Name ändert?).

Eine-Tags-Tabelle mit dem kleinsten zulässigen Primärschlüssel verwenden. Wenn es weniger als 255 Tags verwenden, um ein Byte (tinyint) oder auch ein Wort (Smallint). Je kleiner der Schlüssel desto kleiner und schneller ist der Index für den Fremdschlüssel in der Haupttabelle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top