使用images表模式进行轮询?

avkwfej4  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(351)

我试图创建一个投票应用程序,可能有图像,可能没有图像在所有。如果它确实有图像,那么它可以有很多图像,也可以只有一个。例如,每个选项可能有一个图像,或者所有选项可能只有一个图像。这是一个很好的例子,我想创建:意见阶段。
下面是我想到的表模式:

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

假设只有一个图像,那么第一个选择将有一个图像,但是其余的图像在图像表中没有任何行。如果我们有两个选择,并且有两个图像,那么每个选择都有一个图像。
更深入地了解每个表中的每一行的作用:in 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票支持宝马和25票支持奥迪(因此问题表中总共有50票)
voting_history , choice_id 告诉我们用户选择了哪个选项 user_id 告诉我们是哪个用户。 date 是投票的时间。
Images , question_id 图像属于哪个问题, img 是问题的图像url。为了更好地理解此表,下面是一个示例投票:

标题是罗纳尔多对梅西,没有描述,总票数是50,有2个选择,它有2张图片。这些图像将存储在 Images table。我们会为每一张图片排一行。现在假设我们有一个民意测验:

我们只有一张照片 Images 此问题的表格。这是构建这样的表模式的好方法吗?效率高吗?

nafvub8i

nafvub8i1#

假设只有一个图像,那么第一个选择将有一个图像,但是其余的图像在图像表中没有任何行。如果我们有两个选择,并且有两个图像,那么每个选择都有一个图像。
这是一个不一致的配方。在罗纳尔多/梅西的例子中,您可能希望确保图像与按钮/选项匹配,而不是依赖于代理键(?)的排序。这意味着要有一个从图像到选择的外键,而不是问题。
对于第二个例子,图像与任何特定的选择无关,而是与问题本身有关。这就意味着需要一个单独的表格来处理这些图像。

相关问题