Если вы ищете мое мнение, Я бы выбрал дверь № 1. Вопросы, ответы и сообщения - это отдельные, хотя и связанные, «вещи». И с каждой из этих «вещей» тоже связаны «голоса»… но на самом деле «голос» - это не «вещь».
«Голос за вопрос» - это тесно связан с «вопросом». «Голосуй за ...» все остальное тоже самое. Так что теперь я начинаю думать о запросах, которые я, скорее всего, на самом деле напишу. Я, скорее всего, захочу написать запросы, которые, скажем, подсчитают, сколько голосов имеет тот или иной вопрос ... и я не очень хочу запутать этот запрос и сделать его "трудным для написания" или обязанным просмотрите список записей, которые не являются «голосами за вопросы». Другие типы голосов не будут иметь значения, и я бы не стал их отфильтровывать. (Если мне нужно написать запрос, чтобы подсчитать «сколько голосов за что-либо получил этот пользователь?», Я мог бы очень легко написать это независимо от этого.)
Это мое мнение. (The Менеджер баз данных может сам позаботиться о «эффективности». Спроектируйте свою базу данных так, чтобы запросы, которые нужно написать, были простыми и понятными для записи.)