Proper database design for this task
===

Ok, so I am going to have at least 2 tables, possibly three.

The data is going to be as follows:

First, a list of search terms. These search terms are unrelated to anything else in the program (only involved in getting the outputs, no manipulation of this data at all), so I plan to store them separately in their own table.

Then things get trickier. I've got a list of words, and each word can be in multiple categories. So for example, if you have "sad", it could be under "angst" and "tragedy", just as "happy" could be under "joy" and "fulfillment".

Would it be better to set up a table where I've got three columns: a UID, a word, and a category, or would it be better to set up two tables: both with UIDs, one with the word, one with the category, and set them up as a foreign key?

The ultimate role is generating number of words in a given category over a given period of time.

I'll be using MySQL and Python (MySQLdb) if that helps anyone.