Борисович

Доработанный вариант.
Структура таблицы

ID, IP, root_id

где root_id номер работы, к которой относится.
При голосовании идет проверка на такой ИП + номер работы.
Если нету - инсертится в таблицу.

А раз в 2 недели чистится например кроном.
Если без крона - то еще одно поле, дата.