Опросы с изображениями таблицы схем?

0

Я пытаюсь создать приложение опроса, которое может иметь изображения и вообще не может иметь никаких изображений. Если у него есть изображения, тогда у него может быть много или только один. Например, каждый выбор может иметь изображение или может быть только 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 я have to go with the BMW. total_votes - общее количество голосов, которое имеет вопрос, например, если может иметь 50 голосов, а date - когда вопрос был отправлен.

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

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

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

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

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

  • 0
    Ваш параграф о том, как используются таблицы, неясен. Например, «если у нас есть только 1 изображение ... остальные изображения» не имеет смысла; других изображений нет, если их только 1. Вместо этого объясните для каждой таблицы, что в ней говорится о приложении. Приведите пример данных. PS Пришло время прочитать учебник по информационному моделированию и проектированию баз данных.
  • 0
    Каков тип данных img ? Это просто URL, указывающий на изображение? Или MEDIUMBLOB ?
Показать ещё 4 комментария
Теги:
database
database-design
relational-database

1 ответ

0

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

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

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

  • 0
    Почему мы должны также объявлять question_id в качестве ключа, когда мы можем видеть, из какого вопроса выбрано изображение из выбора?
  • 0
    Извините, я немного опередил себя. Возможно, имеет смысл иметь составной ключ в вариантах выбора, состоящий из question_id и номера выбора (вариант 1, вариант 2 ...), и ссылаться на этот ключ из голосования_history, так что вы можете легко заставить каждого пользователя ответить на каждый вопрос в большинство раз FK из Images также может ссылаться на это (а также использовать соответствующие столбцы в качестве своего собственного ключа, предполагая не более одного изображения на выбор). Смотрите также этот вопрос . Но вы не спрашиваете напрямую о ключах и ограничениях, поэтому я отредактирую это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню