Я тоже за обобщение рейтинговых объектов.
То есть, допустим у вас есть
Article и
Comment. Введём объект
RatingEntity c результирующим рейтингом и добавим связь с ним 1-к-1 для Article и Comment
ratingEntityId. Таким образом таблицы будут выглядеть так:
rating_entities
------------
id | rating_sum
articles
------------
id | rating_entity_id | ...
comments
------------
id | rating_entity_id | ...
Далее делаем
Rating такого вида:
ratings
------------
id | rating_entity_id | user_id | value
где будет составной ключ (rating_entity_id + user_id), а value иметь значения +/- 1.
Что касается производительности, то проблемы не вижу. Дело в том, что при голосовании очевидно, что нужно показать текущий рейтинг +/- 1, что можно сделать средствами frontend. То есть можно послать запрос на сервер и не ждать ответа.
Обновлять результирующий рейтинг можно через триггер в БД.