感觉和订单类似。
order表,order_detail表。

解决方案 »

  1.   

    table question_answer
     (
     id bigint, 
     question nvarchar(4000), 
     choice nvarchar(4000), 
     answer nvarchar(4000), 
     id_question_answer_parent
     );1, '老万对炒股的知识一窍不通...', null, null, null
    2, '发行股票的这家公司告知老万...', 'A.信誉差异较大\n...', 'D', 1
    3, ...
      

  2.   

    我当时的思路是
    question
    {
    questiontext;
    nextquestion
    prequestion
    }
    把最上面的一段,存为一条记录,后面的形成链表;但是发现读取出来非常麻烦。
      

  3.   

    如果有顺序, 可以增加一个order_字段. 下划线因为order是关键字table question_answer
     (
     id bigint,  
     order_ bigint,
     question nvarchar(4000),  
     choice nvarchar(4000),  
     answer nvarchar(4000),  
     id_question_answer_parent bigint refer question_answer(id)
     );1, '老万对炒股的知识一窍不通...', null, null, null, null
    2, '发行股票的这家公司告知老万...', 10, 'A.信誉差异较大\n...', 'D', 1
    3, '发行股票这种融资行为属于直接融资', 20, ...注意顺序标号不连续, 方便以后插入记录试题不应该是链表, 树状结构较好, 而且应该能够随机选取题目生成考卷, 所以考卷题目的顺序号应该有客户端生成, 而不是固定不变
      

  4.   

    引言表
    id content
    题表
    id  引言表id  题号  题
    查引言和第一题时
    select *,引言表.content  
    from 题表
    inner join 引言表 on 引言表.id=题表.引言表id
    where 题号=1
      

  5.   

    补充下,给你举个简单的例子:按我上面的设计,假设原始题库中有如下数据:tb_yinyan编号   名称   单选题个数    多选题个数   组合题个数    内容1     引言a      1              2             1         老王.......
    2     引言b      2              1             3         老赵.......
    3     引言c      1              0             2         老李.......
    tb_wenti
    编号    引言编号     类型    正确答案序号     内容            
    1           1        单选          4          发行股票的这家...
    2           1        多选          1,2,4      发行股票这种融资行为.....
    3           1        ......
    4           2        单选          2          老赵的XXXX.......
    5           2        多选          1          老赵应不应该XXXX.........tb_daan
    编号     问题编号   序号   是否为正确答案         内容
    1            1        1       否               信誉差异较大...
    2            1        2       否               部分间接性....
    3            1        3       否               分散性.
    4            1        4       是               部分具有不可逆性...
    5            2        1       是               答案XXXX
    6            2        2       是               答案XXX
    7            2        3       否               答案xx 
    以上是个简单的原始题库,可以看出这三张表完全可以表示你的试题结构。要从这三张表中取出一个完整的试题直接进行表间连接就可以。根据以上原始试题库生成最终考卷的过程,其实也就是从原始库中按照一定规则查询数据放到考卷库的过程。例如你想生成一张全部试题都只有一个单选问题的试卷,那么从引言表中就可能只查出编号为1、3的就够了:
    tb_yinyan编号   名称   单选题个数    多选题个数   组合题个数    内容1     引言a      1              2             1         老王.......
    2     引言b      2              1             3         老赵.......
    3     引言c      1              0             2         老李.......
    tb_wenti
    编号    引言编号     类型    正确答案序号     内容            
    1           1        单选          4          发行股票的这家...
    2           1        多选          1,2,4      发行股票这种融资行为.....
    3           1        ......
    4           2        单选          2          老赵的XXXX.......
    5           2        多选          1          老赵应不应该XXXX.........
    6           3        不定项        ...........
    tb_daan
    编号     问题编号   序号   是否为正确答案         内容
    1            1        1       否               信誉差异较大...
    2            1        2       否               部分间接性....
    3            1        3       否               分散性.
    4            1        4       是               部分具有不可逆性...
    5            2        1       是               答案XXXX
    6            2        2       是               答案XXX
    7            2        3       否               答案xx tb_shijuan_shiti
    题卷编号     题卷名称            试卷引言       阅卷老师
    1           XXX学校第N次烤试      32/33/....     王XX
    tb_shijuan_yinyan
    编号     试卷编号     卷内编号                        原始引言编号    
    32          1            1(这里就是第N大题的数据来源)        3 
    33          1            2                                 1
    tb_shijuan_wenti
    编号        试卷引言编号                         卷内问题编号                               原始问题编号
    16                32(这里是试卷引言表里的编号)         1(这里就是问题前面的第N小题的来源)         1(按照选择有问题编号为1,2,3的被选中,这里按需要的规则排列)
    17   .........
    tb_shijuan_daan
    编号     试郑问题编号      题内编号          原始答案编号 
    1            16               A                  4  (这样一来,根据原始库中的正确答案序号可以找到本次试题的实际正确答案为A)        
    总之弄清数据来源、查询规则、最终存储规则就行了。