I wouldn't store the weighted values in the DB, instead I'd use the DB as a tally system for 3 different types of votes. You can have 1 table with 3 fields in it
Fields: Yes, No, Maybe, all integers. Initially start the field values at 0. Every time a vote comes in, increment the appropriate field value.
After, do the weighted math in your code. As simple as multiplying the number, say in the "yes" field by 2 to get the weighted result, as an example.
This is of course if the vote totals matter, and you don't care about storing each individual voters preference separately.
To ensure uniqueness I'd make the user sign up up first, that way you can flag the user as already voted for that particular poll, so they can't vote again. They can always sign up again, though. Unfortunately it's tough to get around that, as they can simply use another computer, a proxy server, or a lot of people have dynamic IP's which would simply require a modem reboot to vote again, even if you did store IP's to limit such situations.