/ / Ako efektívne môže byť toto riešenie Tagging? - php, sql, tagging

Ako efektívne môže byť toto riešenie Tagging? - php, sql, tagging

Pracujem na webovej stránke na zdieľanie obrázkov a chcem implementovať označovanie obrázkov.

Prečítal som si otázky # 20856 a # 2504150

Mám niekoľko obáv v súvislosti s prístupom kvyššie uvedené otázky. Najprv je jednoduché prepojiť obrázok s tagom. Avšak získanie obrázkov podľa tagových vzťahov nie je tak jednoduché. Nie je to ľahké, pretože budete musieť získať vzťah image-to-tag z jednej tabuľky a potom urobiť veľký dopyt s partiou príkazov OR (jeden OR pre každý obrázok).

Než som dokonca preskúmal tému označovania, začal som testovať nasledujúcu metódu:

Toto uvádza príklady:

Table: Image
Columns: ItemID, Title, Tags

Table: Tag
Columns: TagID, Name

Na Tagy stĺpec obraz Tabuľka trvá reťazec s viac tagID od štítok Tabuľka ohraničená dashes(-).

Napríklad:

-65-25-105-

Odkazy obraz s TagID 65,25 a 105.

S touto metódou som ľahšie získať obrázky podľa značky, ako môžete získať TagID jeden dotaz a získať všetky obrázky s ďalším jednoduchý dotaz ako:

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

Takže ak môžem použiť túto metódu pre značkovanie,

Ako efektívne to je?

Je pri zisťovaní poskytujú ako 65% pomalý proces?

Aké problémy som tvár v budúcnosti?

odpovede:

4 pre odpoveď č. 1

Potrebujete 3 tabuľky pre toto.

Table: Image
Columns: ImageId, ItemID, Title

Table: Image_Tag
Columns: ImageId, TagId

Table: Tag
Columns: TagID, Name

Potom dostať všetky obrázky pre značku by použiť:

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

Toto je typický spôsob, ako zvládnuť many-to-many vzťahy v relačnej databáze.Pravdepodobne by mali prospech čítaním o http://en.wikipedia.org/wiki/Database_normalization

Edit: vidím, že to bolo už adresy v iných otázkach odkazujete, tak som "ll vysvetliť ďalšie.Najväčší problém vidím, ako to robí vaša cesta je, môžete "t Využite indexovania stĺpcov id čo robí vaše dotazy menej efektívna.To tiež vyzerá, ako by bolo neohrabané aktualizovať.By som veľmi naznačujú, snaží urobiť to, že cesta, aspoň vyskúšať pomocou riešenie 3 tabuľky.Raz to "kliknutí" pre vás vás "ll mi poďakoval.