Опросы с изображениями таблицы схем? - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь создать приложение для опроса, которое может иметь изображения, а может и вовсе не иметь изображений. Если у него есть изображения, то их может быть много или только одно. Например, каждый вариант может иметь изображение или может быть только 1 изображение для всех вариантов. Вот хороший пример того, что я хочу создать: Этап мнения .

Вот схема таблицы, о которой я думаю:

Questions //Table of all questions with total votes to avoid querying all user votes
  -id
  -user_id (foreign key to users)
  -title
  -description
  -total_votes
  -date

Choices  //Table of all question choices, each will have vote_count to avoid querying all voting_history each time.
  -id
  -question_id (foreign key to questions)
  -choice
  -vote_count

voting_history //Table that shows which user voted for what.
  -id
  -choice_id (foreign key to choices)
  -user_id (foreign key to users)
  -date

Images  //Table that gives the images for the choices
  -id
  -question_id (foreign key to Questions)
  -img

Допустим, у нас есть только 1 изображение, тогда у первого выбора будет изображение, но у остальных изображений не будет строк в таблице изображений. Если у нас есть 2 варианта и 2 изображения, то у каждого варианта будет изображение.

Подробнее о том, что делает каждая строка в каждой таблице: В Questions, user_id - это поле, представляющее, кто задал вопрос, title - это заголовок вопроса, description - описание вопроса. Например, у нас может быть заголовок, который говорит это: Which car is better? и описание, которое говорит это: I like both, but I have to go with the BMW. * total_votes - это общее количество голосов, которое имеет вопрос, например, если может иметь 50 голосов, и date когда вопрос был опубликован.

В таблице Choices, question_id говорит нам, какому вопросу принадлежит этот выбор, choice дает выбор вопроса, используя наш предыдущий пример вопроса об автомобиле, у нас может быть выбор, который говорит BMW и другой выбор, который говорит Audi. vote_count - количество голосов, которое имеет каждый вопрос. Например, у нас может быть 25 голосов за BMW и 25 голосов за Audi (отсюда 50 итоговых голосов в таблице вопросов.)

В voting_history, choice_id сообщает нам, какой выбор выбрал пользователь, а user_id сообщает нам, какой это был пользователь. date время голосования.

В Images, question_id - это вопрос, к которому принадлежит изображение, img - это URL-адрес изображения вопроса. Чтобы лучше понять эту таблицу, вот пример опроса: enter image description here

Название - Роналду против Месси, без описания, total_votes - 50, с 2 вариантами выбора и 2 изображениями. Эти изображения будут сохранены в таблице Images. У нас будет строка для каждого изображения. Теперь допустим, у нас есть этот опрос: enter image description here

У нас будет только 1 изображение в таблице Images для этого вопроса. Это хороший способ построить схему таблицы, как это? Это эффективно?

1 Ответ

0 голосов
/ 25 июня 2018

Допустим, у нас есть только 1 изображение, тогда у первого выбора будет изображение, но у остальных изображений не будет строк в таблице изображений. Если у нас есть 2 варианта и 2 изображения, то у каждого варианта будет изображение.

Это рецепт несоответствия. В примере с Роналду / Месси вы, вероятно, хотите убедиться, что изображения соответствуют кнопкам / выборам, и не полагаться на порядок суррогатных ключей (?), Чтобы это произошло. Это предполагает наличие внешнего ключа от изображений к выбору, а не вопросов.

Для второго примера изображение связано не с каким-то конкретным выбором, а с самим Вопросом. Это предлагает отдельную таблицу для таких изображений.

...