Scott Haneda wrote:
I have an a table of objects, attached to those objects are keywords.
Users submit the keywords to the objects.

Currently, I chose to keep a hit count on the keywords, so if a duplicate
keyword is supplied, a counter is incremented.

I thought this was a good idea, as it keeps the number of rows in the
keywords table to a minimum.

However, this is a user login based system, and with the above, I lose the
ability to track which users sent in which keywords.

Why do you need this info? Is there a reporting need or something else you need to keep this information for? Ie when are you going to need to know who inserted a particular keyword?

So I can move to the keywords table storing duplicate keywords, and each
keyword will get a user_id attached to it, but, that table will grow.  Fast.

1000 objects, each with 10 keywords only = 10,000, I could hit many millions
very fast.

I could toss in a third table, and relate that to the user_id and keyword.
However, I am inserting in one go, and that could be upwards of 30 or more
inserts, taking too long.

[assuming php]

$keyword_ids = array();
foreach ($keywords_to_insert) {
  $query = "insert into keywords_table(keyword) .....";
  $keyword_ids[] = mysql_insert_id();
}

$query = "insert into table (userid, keywordid) select userid, keywordid where keywordid in (" . implode(',', $keyword_ids) . ")";

[/assuming php]


Just one query to insert the relationship(s) :)


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to