[Tagdb] Tagging multiple classes of things
ogjunk-tagdb at yahoo.com
ogjunk-tagdb at yahoo.com
Wed Mar 8 21:21:49 GMT 2006
Copy/paste tagdb at lists.tagschema.com into "To". :)
Late reply.
As you can see from replies so far, there are lots of ways you can go about it. I'd add this: is RDBMS really the best tool for what you want to do? :)
Otis
--
Simpy -- http://www.simpy.com/ -- Tag. Search. Share.
----- Original Message ----
From: Colin Viebrock <cviebrock at tucows.com>
To: tagdb at lists.tagschema.com
Sent: Friday, March 3, 2006 5:25:12 PM
Subject: [Tagdb] Tagging multiple classes of things
I'm looking for some technical suggestions on how to accomplish the
following:
Say I was running a magazine for DIY-ers. I have several database
tables (MySQL, but that shouldn't matter), one for each of the
following:
- articles
- sponsors
- products
Each table has an ID column, which is unique to that table, and other
relevant columns (e.g. articles.title, sponsors.name,
products.featurelist, etc.).
I want to be able to tag everything, so I have a tag table:
- tags
- tag_id
- tag
And now I want to build the relationships between tags-articles,
tags-advertisers and tags-products. I could do it with 3 different
tables:
- tag-articles
- tag_id
- article_id
- tag-sponsors
- tag_id
- sponsor_id
- tag-products
- tag_id
- product_id
But that seems problematic when I want to do a search for everything
tagged with "foobar". I'll need to do three queries:
SELECT ... FROM tags LEFT JOIN tag-articles USING (tag_id) LEFT JOIN
articles USING (article_id)
SELECT ... FROM tags LEFT JOIN tag-sponsors USING (tag_id) LEFT JOIN
sponsors USING (sponsors_id)
SELECT ... FROM tags LEFT JOIN tag-products USING (tag_id) LEFT JOIN
products USING (products_id)
So, what if I built a generic relationship table:
- tag-relations
- tag_id
- foreign_table
- foreign_id
This table would have entries like:
1, 'articles', 3
1, 'sponsors', 5
1, 'products', 28
1, 'products', 36
...
i.e. the tag with tag_id=1 applies to article #3, sponsor #5 and
products #28 and #36.
The thing is, you can't do the kind of "meta" select required, not in
MySQL at least AFAIK, so you are back to making multiple queries.
Any ideas on how best to implement this kind of system: where one
database of tags needs to be shared with several other databases?
Maybe the multiple query solution is the only way ... I'd just like to
know that before I start architecting. :)
- Colin
_______________________________________________
Tagdb mailing list
Tagdb at lists.tagschema.com
http://lists.tagschema.com/mailman/listinfo/tagdb
More information about the Tagdb
mailing list