views:

34

answers:

1

How did stackOverFlow, excuse me if it wasn't the first implementation of this system. Decide what its initial tags where?

I want to provide users with the best experience on my site and am implementing a tags system. I don't care about search engines or any of that. I just care about my users.

Does any one have any advice about things that have failed or succeeded when they allowed users to tag things?

Does any one know some good resources about the methodologies of user tagging? Does any one know some good resources about implementing a tags system from a programming perspective, database structures, theories, etc ?

I'll give my check to who ever I feel points me in the best direction on the subject.

+1  A: 

A tag system is a many-to-many relationship (an item can have many tags, and a tag can have many items). One way to implement this is to have one table for tags, one table for the items being tagged (for example, articles), and a cross table for tag/item relationships.

Table "Tag":

id
tagname

Table "Item":

id
itemname
itemcontent

Table "Item_Tag":

item_id
tag_id

Every time you tag an item, just add another row to the Item_Tag table. Join the tables to get the relationships. For example, to find all the items tagged "PHP":

SELECT Item.id,Item.itemname FROM Item
JOIN Item_Tag ON Item_Tag.item_id = Item.id
JOIN Tag ON Tag.id = Item_Tag.tag_id
WHERE Tag.tagname = "PHP";

As for actual usage of tags, the only thing you want to watch out for is too many tags. If all your tags only have a couple items tagged by it, then searching doesn't give good results. You'd probably have to manually police the tag creation process to prevent similar tags from duplicated.

For tags to start with, we can't help you on that unless you tell us what your site is about. I'm sure Stack Overflow started with tags for all the programming languages and some other programming topics like algorithms, OOP, etc.

Lotus Notes