Вам определенно понадобится еще одна таблица, и некоторые первичные и внешние ключи также могут помочь:
Post{post_id(int), user_id(varchar), post(clob)}
Votes{vote_id(int), post_id, user_id, up_down(char)}
Ваши значения столбцов voice_up и voice_down удалены и теперь рассчитываются с помощью запросов:
-- vote_up
select count(*) from votes where post_id = n and up_down = '+';
-- vote_down
select count(*) from votes where post_id = n and up_down = '-';
Должен быть уникальный индекс голосов (post_id, user_id), чтобы один и тот же пользователь не мог голосовать за несколько голосов за один и тот же пост.
Первичный ключ voice_id определять не нужно, но каждая таблица должна иметьпервичный ключ, и если вы не хотите использовать суррогатный ключ, то вы можете определить PK, используя те же столбцы, что и выше, и это также будет служить уникальным индексом, поэтому не нужно определять ot.