It's hard to say without knowing too much more, but it sounds like you want something very generic. Maybe something like this would help:
activity -------- activity_id - the ID of the activity participating_object_id - ID of a participating object activity_type_id - ID of the Type of activity activity_datetime - When this activity occurred data - context data of the activity
This would let you have things like:
activity_id | participating_object_id | activity_type_id | date | data ------------+-------------------------+------------------+-------+----- 1 | 2 | 3 | ... | this is a post 1 | 84 | 3 | ... | [email protected]
This describes an activity instance (ID #1): a user (object #84, context data "[email protected]") created a posting on a forum (activity type 3) whose object ID is 2, and the posting contained the text "this is a post".
You'll probably need to expand on this as your situation requires.
...actually, now that I think about it, the data
column is probably not needed, since you can get any data you want from your base object
table (whatever it looks like) by querying it using the values in participating_object_id
.