开发者

Database design for user entries (using mysql)

The main pieces of data I'm having my users enter is an object called an "activity" which consists of a few text fields, a few strings, etc. One of the text fields, called a "Description", could possibly be quite long (such as a long blog post)开发者_如何学C. For each user I would like to store all of their activity objects in a mysql database.

Here are some solutions I've thought of:

  • Have a separate mysql table for each user's activities, i.e. activities_userX, X ranging over

  • Use json to encode these objects into strings and store them as a column in the main table

  • Have one separate table for all these activities objects, and just index them; then for each user in the main table have a list of indices corresponding to which activities are theirs.

What are the pros/cons of these methods? More importantly, what else could I be doing?

Thanks.


Have a separate mysql table for each user's activities, i.e. activities_userX, X ranging over

A table for every user? That just means an insane number of tables.

Use json to encode these objects into strings and store them as a column in the main table

JSON is a good transport language. You have a database for storing your data, use its features.

Have one separate table for all these activities objects, and just index them; then for each user in the main table have a list of indices corresponding to which activities are theirs.

Getting closer.

This sort of relationship is usually known as 'has many'. In this case "A user has many activities".

You should have a table of users and a table of activities.

One of the columns of the activities table should be a foreign key that points to the primary key of the user table.

Then you will be able to do:

SELECT fields, i, want from activities WHERE userid=?

Or

SELECT users.foo, users.bar, activities.description from users,activities 
    WHERE user.userid=activities.userid
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜