Database 带问答的数据库结构

Database 带问答的数据库结构,database,database-design,Database,Database Design,我正在设计一个包含问题、答案和类别的数据库 一个问题可以属于多个类别,一个类别可以有多个问题。 所以这种关系是多对多的 一个问题表 一个类别表 一个表,包含上面两个表的主键 所以现在我的问题是,是否有必要或“更好”将答案(a、b、c、d、e)存储在自己的名为answers的表中?然后答案表中的主键有一个外键 或者我应该在问题表中有5列包含正确答案的答案吗 在我读过之后,一对一的关系是不正常的 提前谢谢 制作一个单独的答案表格。有两个好处: 它符合关系范式——一个问题与许多答案相关联 如果答案选项

我正在设计一个包含问题、答案和类别的数据库

一个问题可以属于多个类别,一个类别可以有多个问题。 所以这种关系是多对多的

一个问题表
一个类别表
一个表,包含上面两个表的主键

所以现在我的问题是,是否有必要或“更好”将答案(a、b、c、d、e)存储在自己的名为answers的表中?然后答案表中的主键有一个外键

或者我应该在问题表中有5列包含正确答案的答案吗

在我读过之后,一对一的关系是不正常的


提前谢谢

制作一个单独的
答案
表格。有两个好处:

  • 它符合关系范式——一个问题与许多答案相关联
  • 如果答案选项超过5个,您将具有灵活性

  • 答案表应如下所示:

    ANSWERS
      answer_id (PK)
      answer_text
      is_correct
      serial_number
      question_id (FK)
    
    现在,您将一个答案存储在一行中。。。对于序列号(a、b、c..或1、2、3..或i、ii、iii…等等),使用
    序列号
    字段<代码>是否正确
    指向正确答案

    您可以按选择答案列表

      select * from `answers` where question_id = 123 order by serial_number asc
    

    制作一个单独的
    答案
    表格。有两个好处:

  • 它符合关系范式——一个问题与许多答案相关联
  • 如果答案选项超过5个,您将具有灵活性

  • 答案表应如下所示:

    ANSWERS
      answer_id (PK)
      answer_text
      is_correct
      serial_number
      question_id (FK)
    
    现在,您将一个答案存储在一行中。。。对于序列号(a、b、c..或1、2、3..或i、ii、iii…等等),使用
    序列号
    字段<代码>是否正确
    指向正确答案

    您可以按选择答案列表

      select * from `answers` where question_id = 123 order by serial_number asc
    

    如果您确定总是有确切的答案(不多也不少),那么在问题表中设置这些列是合理的。一般来说,它将简化您的查找过程并提高效率。但是,如果您有时会有不同数量的答案,或者将来可能会有不同数量的答案,那么您的答案应该有自己的表格。

    如果您确定始终会有确切的答案(既不多也不少),那么在问题表中列出来是合理的。一般来说,它将简化您的查找过程并提高效率。但是,如果您有时有不同数量的答案,或者将来可能会有不同数量的答案,那么您的答案应该有自己的表格。

    谢谢,经过再三思考,我现在明白了为什么这种方法更好、更灵活。谢谢,经过再三思考,我现在明白了为什么这种方法更好、更灵活了。谢谢你做了一些重新思考,我明白了为什么这种方法更好、更灵活了。@Andreas Johannessen补充了更多细节。非常感谢,谢谢!现在我的数据库准备好了:)谢谢你做了一些重新思考,我知道为什么这更好、更灵活了。@Andreas Johannessen补充了更多细节,我看到了。非常感谢,谢谢!现在,我的数据库已准备就绪:)