Possible Duplicate:
How is the tagging system implemented here at S[O|F|U]?

I am currently building a website in which users can tag a submission, similar to that of SO, Flickr etc.

I'm just wondering how SO manages all the tags on here - what does the taxonomy look like?

More generally - I am struggling to decide to normalize the data or not. What is the best practice here?

Thank you,

Edit: I have seen this entry on tagging, but still am unsure which approach is best overall.

marked as duplicate by Jeff Atwood Dec 3 '09 at 17:13

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

migrated from stackoverflow.com Sep 2 '09 at 17:47

This question came from our site for professional and enthusiast programmers.


Take a look at how tags are stored in the data dump.


I will assume you are not expecting an answer from Jeff Atwood, so let's speculate:

You will need three tables:

i) a TAG table

ii) a Questions table

iii) a table to implement the TAG-QUESTION relationship that will have (at least) the keys of both tables.

I would never, no matter what performance considerations, think about a non normalized solution for this!.

  • 2
    Well, since SO has a hard limit of five tags per question they can probably get rid of the question/tag relation table and store the tags directly in the question table. But in general I agree: Worry about performance if it becomes a problem, not at a point where you having nothing to test and profile yet. – Joey Jun 8 '09 at 22:53
  • 1
    Yes, I don't want to imagine that code checking for the tags on the fields tag1, tag2, tag3... – tekBlues Jun 8 '09 at 23:04
  • No - I wasn't expecting an answer from Jeff necessarily. But one would be nice :). Speculating sounds good to me - I appreciate any insight on the topic. – barfoon Jun 8 '09 at 23:06
  • 1
    +1 - You should definitely worry about normalizing first, and performance second. If performance becomes a problem, having normalized tags is probably not going to hurt when you're trying to optimize... – Tomas Aschan Jun 8 '09 at 23:11
  • Over that, I suppose the SO database to be very manageable, only 180.000 questions (until today) and not so many simultaneous viewers. – tekBlues Jun 8 '09 at 23:35

Not the answer you're looking for? Browse other questions tagged .