I have my tags desinged like this in my database:
Table: Item
Columns: ItemID, Title, Content
Table: Tag
Columns: TagID, Title
Table: ItemTag
Columns: Ite
Add another column in the table Tag that work as counter. When you add or remove a tag from an item you update the counter (in other words, when add a row on Itemtag increment the counter on Tag table, when remove decrement the counter)
add tag to item:
INSERT INTO Itemtag (itemid,tagid) VALUES ('$itemid','$tagid');
UPDATE Tag SET counter=counter+1 WHERE tagid='$tagid';
remove tag from item
DELETE FROM Itemtag WHERE itemid='$itemid' AND tagid='$tagid';
UPDATE Tag SET counter=counter-1 WHERE tagid='$tagid';
retrieve item tags with counter
SELECT t.title, t.counter FROM Itemtag AS it JOIN Tag AS t ON t.idtag=it.tagid
WHERE it.itemid='$itemid'