/ / Wie effektiv kann diese Tagging-Lösung sein? - PHP, SQL, Tagging

Wie effektiv kann diese Tagging-Lösung sein? - PHP, SQL, Tagging

Ich arbeite an einer Bild-Sharing-Site und möchte das Tagging für die Bilder implementieren.

Ich habe Fragen gelesen # 20856 und # 2504150

Ich habe wenig Bedenken mit dem Ansatz auf derFragen oben. Zunächst einmal sieht es einfach aus, ein Bild mit einem Tag zu verknüpfen. Allerdings ist es nicht so einfach, Bilder über eine Tag-Beziehung zu erhalten. Nicht einfach, da Sie die Image-to-Tag-Beziehung von einer Tabelle abrufen und dann eine große Abfrage mit einer Menge von OR-Anweisungen (ein OR für jedes Bild) erstellen müssen.

Bevor ich das Thema Tagging recherchiere, habe ich die folgende Methode getestet:

Diese Tabellen als Beispiele:

Table: Image
Columns: ItemID, Title, Tags

Table: Tag
Columns: TagID, Name

Das Stichworte Spalte in der Bild Tabelle nimmt eine Zeichenfolge mit mehreren tagID von dem Etikett Tabelle mit Bindestrichen (-).

Beispielsweise:

-65-25-105-

Verknüpft ein Bild mit dem Tag-ID 65,25 und 105.

Mit dieser Methode finde ich es einfacher, Bilder per Tag zu erhalten, da ich das bekommen kann Tag-ID mit einer Abfrage und erhalten Sie alle Bilder mit einer anderen einfachen Abfrage wie:

SELECT * FROM Image WHERE Tags LIKE %-65-%

Wenn ich diese Methode zum Taggen verwende,

Wie effektiv ist das?

Ist die Abfrage von LIKE% -65-% ein langsamer Prozess?

Mit welchen Problemen kann ich in Zukunft konfrontiert werden?

Antworten:

4 für die Antwort № 1

Sie benötigen dafür 3 Tabellen.

Table: Image
Columns: ImageId, ItemID, Title

Table: Image_Tag
Columns: ImageId, TagId

Table: Tag
Columns: TagID, Name

Um alle Bilder für ein Tag zu erhalten, das du verwenden würdest:

SELECT ImageId, Title
FROM Image_Tag LEFT JOIN Image USING (ImageId)
WHERE TagId = $TagId

Dies ist der typische Weg zur Verarbeitung von Viele-zu-Viele-Beziehungen in einer relationalen Datenbank. Sie würden wahrscheinlich davon profitieren, wenn Sie darüber lesen http://en.wikipedia.org/wiki/Database_normalization

Bearbeiten: Ich sehe, das war bereits Adressen in den anderen Fragen, die Sie referenziert haben, also werde ich weiter erklären. Das größte Problem, das ich sehe, ist, dass Sie Ihre ID-Spalten nicht indizieren können, was Ihre Abfragen weniger effizient macht. Es sieht auch so aus, als wäre es ungeschickt zu aktualisieren. Ich würde sehr empfehlen, es nicht so zu versuchen, zumindest mit der 3-Tisch-Lösung auszuprobieren. Sobald es für dich "klickt" wirst du mir danken.