Как я могу построить систему голосования, чтобы поддержать несколько типов объектов, чтобы проголосовать?

StackOverflow https://stackoverflow.com/questions/2580082

  •  24-09-2019
  •  | 
  •  

Вопрос

Я действительно ищу что-то очень похожее на то, как это установлено, где можно проголосовать несколько различных видов вещей (вопросы и ответы). Какую схему БД, как правило, могла бы я использовать для поддержки голосования по многим различным видам объектам?

Будет ли у меня единую таблицу голосования, которые будут иметь ссылки на другие объекты в базе данных? Или я должен иметь или должен иметь отдельный стол голоса для каждого из объектов, на которых я хотел бы проголосовать.

Это было полезно?

Решение

Кайл,

Немного трудно понять, что именно вам нужно ... Но вот мои 2 цента:

Я предполагаю, что вы хотите, чтобы каждый голосовал хранить, когда он проголосовал, кем (возможно IP-адрес или имя пользователя), я бы пошел на одно решение для голосования. Я также предполагаю, что когда вы запрашиваете сущность из БД (вопрос, ответ и т. Д.), Вы также хотите присоединиться к этой таблице, и он вряд ли будет иметь запрос исключительно на таблице голосования.

В этом случае вы можете использовать 2 столбца на таблице голосования - один для проголосованного типа объекта, и один для удержания идентификатора этого объекта. Таким образом, вы можете присоединиться к таблице голосования к любому другому запросу, указав тип объекта.

Я думаю, что управление всеми вашими голосами в одной таблице сделает ваш домен проще, затем распространяя его и создавая таблицу голосования для каждого объекта. В этом единственном решением для голосования необходимо только поддерживать список типов объектов (вероятно, используя небольшую таблицу словаря).

Существует также рассмотрение производительности. Если вы ожидаете миллионы голосов, эта единая таблица будет расти намного быстрее, чем набор отдельных таблиц. Это может быть рассмотрение против этого. Также позаботьтесь о том, чтобы не сделать его узким местом, если ему есть много одновременного чтения / пишет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top