Я делал таким образом.
У меня есть 5 звездочек, то есть пять оценок от 1 до 5 балов. Генерируются JS в базе значения хранить нет смысла. Просто в нужном месте выводится и все.
При голосовании в базу пишется оценка. Указывается кто голосовал (у меня это критично), ID статьи или поста или еще чего то, когда и тип голоса. Соответственно примерно пост тип 1, новость тип 2 и пр. Это позволяет хранить все голоса 1 таблице.
При сохранении в базу текущий рейтинг по формуле пересчитывается с учетом нового голоса и обновляет в статье ее текущую оценку и в пишет в базу сам голос.
Самое сложное тут было правильно высчитывать рейтинг.