The db model is the easy part, the tricky part is the find-as-you-type implementations which auto-completes tags, it is tricky to get it working properly cause of various browser annoyances (finding where the cursor is, is non-trivial).
On the DB side a PostsTags and Tags table should be enough to get you going.
From a performance perspective, you have to cache total counts per tag and don't want to end up in deadlock central.
Then you may also want to look at Tag synonymsTag synonyms so for example if someone tags a topic with c# you could automatically retag to c-sharp.
Finally you may want to consider admin tags. (tags that can only be applied by admins)