Nyxynyx
Nyxynyx

Reputation: 63687

Preventing second votes in Comment Voting

Hi I have a question regarding a method to prevent second voting in a website where people can vote up or vote down a comment. Like Stackoverflow!! :)

The question is how I can keep track of whether a comment has already been voted by a logged in user. Lets assume this is for a online ecommerce store with reviews on products. Here's what I think:

When a person clicks on the up vote button, the system will check if the current user's user_id matches anyone in up_voters. An explode function will turn 1101.1102.1103 into an array and in_array() will be used to check if the user has already voted.

Is there a better way to go about doing this?

Upvotes: 0

Views: 119

Answers (1)

Praveen Lobo
Praveen Lobo

Reputation: 7187

That table will give you nightmares down the line. Just think of a hit product with 1K up_voters, your field will be 10K*4 characters long! Not just that, it will hinder your ability to make reports and study the data etc.

I don't know much about your needs but from what I can see in your table, I'd suggest the below.

review
user_id, product_id, type_of_vote, title, description, time_created

Use above table and use user_id, product_id as the key

OR

review
review_id, product_id, title, description, time_created

vote
review_id, user_id, type_of_vote

There are n number of ways to design tables for this. If it is an Operational Data Store(ODS) then you might want to normalize your design. If it's a warehouse then you may consider first table I mentioned above.

Upvotes: 5

Related Questions