Я решил эту проблему для создаваемого мной сайта.
Как и Reddit, пользователь может войти в систему и увидеть более 20 историй на главной странице.
СОЕДИНЕНИЕ таблицы голосования против таблицы «Пользователь» и «История» не слишком эффективно для определения того, голосовал ли пользователь, вошедший в систему в данный момент, по каждой истории или нет.
Я выбрал гибридный подход:
1) Составление таблицы голосования (id, ID пользователя, Storyid)
2) Добавление столбца «Voted_Cache» в таблицу «История», которая представляла собой разделенный запятыми список (CSV) идентификаторов пользователей, которые проголосовали за историю.
Теперь, когда я загружаю 20 статей на домашней странице, я могу проверить, существует ли текущий столбец идентификатора пользователя в столбце story.Voted_Cache, вместо необходимости присоединяться к таблице голосования.
Таблица «Проголосовать» является официальной, чтобы сообщить мне, за какие статьи проголосовали, и столбец Voted_Cache можно перестроить из этой таблицы, если необходимо.