Предлагаю так:
1. Таблица с каждым голосом общая — до тех пор, пока будет позволять нагрузка (в большинстве проектов — навсегда).
2. Рейтинг каждой записи хранить в таблице приложения у каждой записи. Скажем, храним там количество голосов и сумму. Или количество и среднее — кому как нравится, и в зависимости от того что делают чаще — просматривают (тогда количество и среднее — удобнее сортировать и выводить значение) или голосуют (тогда количество и сумму)
Алгоритм соответственно такой:
— проверяем, может ли юзер голосовать (IP, cookie, сессии, дата предыдущего голосования и т.д. )
— даём\не даём ему возможность голосовать
— проверяем снова, если юзер жульничает — можем предупредить
— записываем голос, если все верно
— обновляем количество и сумму\среднее