Computer Science Canada Best way to store stuff in mysql |
Author: | nonamedude [ Thu Apr 14, 2011 6:52 pm ] | ||
Post subject: | Best way to store stuff in mysql | ||
Hello guys, I am currently working on a website, and it has a similar structure to reddit/forums/ and news site. The problem that I have is that, for every user that registers, I am making 6 tables. Apparently this is overkill, but I cant seem to think of a better method. So right now I have
I am just wondering, what the most efficient method of storing this type of info would be |
Author: | Tony [ Thu Apr 14, 2011 7:24 pm ] |
Post subject: | RE:Best way to store stuff in mysql |
You are making new tables per users? That required a triple-take, but that appears to be indeed what you are doing. Why? E.g. why would you want to have a table for a particular user's comments, instead of having a single table for all of the comments? If all of the ratings are in different tables, how do you go about finding the summative/average rating for any one particular post? |
Author: | nonamedude [ Thu Apr 14, 2011 7:31 pm ] |
Post subject: | Re: Best way to store stuff in mysql |
Ok, why you ask, First of all, there is a table with all the comments and stories and this is where the summative rating is calculated from. Secondly, I have a separate table for votes of the user because if this is not here, how would I know which articles the user voted up/down so that they cannot change it again. If I were to have only one table containing all the votes, I dont know how I would know which user upvoted what and where. |
Author: | Tony [ Thu Apr 14, 2011 7:39 pm ] |
Post subject: | RE:Best way to store stuff in mysql |
wait, but you don't have a separate table for each username_articleid_rating, just username_rating, right? So if username_rating has more than one entry with ratings, how do you know which articles are upvoted? |
Author: | nonamedude [ Thu Apr 14, 2011 7:41 pm ] |
Post subject: | Re: Best way to store stuff in mysql |
Yes I only have username_rating and "So if username_rating has more than one entry with ratings, how do you know which articles are upvoted?" Yea, this is what I am trying to achieve without so many tables |
Author: | Tony [ Thu Apr 14, 2011 7:53 pm ] | ||||||
Post subject: | RE:Best way to store stuff in mysql | ||||||
so if you had to rate a bunch of articles and record that information on a piece of paper, how would you do it? Probably some sort of an article_id => rating type of records
So we can look up what rating we gave to article that has ID of 1 (we rated it 5). What if you were keeping track of ratings made by multiple of your friends? Sure, you could have a separate piece of paper for each friend (new tables), or you could write who rated what on the same row.
Here we both rated article 1, and can easily look this up:
Of course instead of a username, that column typically would record a user id, so that it could be linked to information elsewhere (such as user_info contents). |
Author: | nonamedude [ Thu Apr 14, 2011 8:02 pm ] |
Post subject: | Re: Best way to store stuff in mysql |
Oh i see, yea, that works perfectly but would the length of the table matter in its efficiency?, I could see how we can get rid of these tables userName_story// by just adding the person who posted it to the article table userName_rating But what about tables such as the ones below userName_comments // stores wherever the user has commented userName_friends// stores the users friends userName_following // stores who the user is following as in, maybe an editor he likes so he follows his posts userName_info// all the information pertaining to the user |
Author: | Tony [ Thu Apr 14, 2011 8:09 pm ] |
Post subject: | RE:Best way to store stuff in mysql |
You can essentially collapse all of the userName_whatever tables into a single "whatever" table by adding a user_id column to it. The length of the table begins to matter when it starts having millions of rows. Once you have properly indexed, it can still reasonably go for a while more. Looking up something in a single table with 10,000 rows is incredibly faster than looking for same information in 1000 different tables, with 10 rows each. |
Author: | nonamedude [ Thu Apr 14, 2011 8:10 pm ] |
Post subject: | Re: Best way to store stuff in mysql |
Oh i see, THANKS a lot for your help, helps me a ton. |