在线考试系统(一)-----数据库的设计

首先自己是个菜鸟,项目经验不足。因此,我把自己碰到的问题写成博客,希望能给大家帮助,同时自我总结,废话不多说。

项目不是很复杂,参与人数也不多,但是该项目是商业项目。为了降低开发成本,数据库是:mySQL,开发框架:Spring+dwz+ztree。作为自己的第二个项目,我们首先需要解决的问题:

1.明白自己需要做什么功能;

2.数据库怎么设计。

由于没有这么方面的经验,参照别人的做好的,进行分析,是个大多数人选择方向。我们参考一个php写的开源的在线考试系统-----phpems在线考试系统。该系统被称为最好用的考试系统,具有很好的借鉴价值。这里就不提供phpems系统的配置,大家可以网上寻找方法,也很简单。    

接下来就是数据库的设计,碰到的问题:

1.数据库很难分析?

由于该数据库中的表没有给解释,我们分析起来会很费力,很明显其中有些表我们是用不到的,对此我们先想到的最简单的办法是在系统不断的输入内容,看表的变化,来判断表中字段的作用,这个办法适合表中字段少的,但是phpems系统的大部分表是很多字段的,因此这样的方法是不适合的,因此,需要其他方法,众所都知,开源的东西大多数都有讨论论坛,有很多热爱者会无偿的提供资料,这也是我喜欢开源的东西的理由之一,我们很幸运找到了该系统数据库详细解析资料。(后面会有该资料的链接)

2.数据中有大量的串串,资料里没有解释,那它代表着什么呢?

 

{i:190;i:2;i:191;i:2;i:192;i:0;i:193;i:0;i:194;i:0;i:210;i:0;i:211;i:0;i:212;i:0;i:215;i:0;i:216;i:0;i:220;i:0;i:221;i:0;i:222;i:0;i:223;i:0;i:224;i:0;i:225;i:0;i:226;i:0;i:227;i:0;i:228;i:0;i:357;i:0;i:359;i:0;i:361;i:0;i:378;i:0;i:396;i:0;i:399;i:0;i:401;i:0;i:403;i:0;i:404;i:0;i:405;i:0;i:686;i:0;i:688;i:0;i:689;i:0;i:690;i:0;i:692;i:0;i:696;i:0;i:697;i:0;i:699;i:0;i:700;i:0;i:702;i:0;i:711;i:0;i:712;i:0;i:713;i:0;i:714;i:0;i:715;i:0;i:772;i:0;i:771;s:0:"";}

 

这是一个很麻烦的东西,很明显它是有规律的,但是找到这个规律也是很难的,继续在讨论论坛里找,又是很幸运我们发现这是运用了php序列化,通过查找资料在php中,为了当存储或传递PHP的值,同时不丢失其类型和结构,含有serialize()和unserialize()这两个函数,把复杂的数据类型压缩到一个字符串中。但是java中没有这样的函数,因此需要解决这问题两个办法:

1.把存放那些串串的字段,用多张表代替,好处是便于数据的调用,方便数据的分析,坏处是表会很多,效率会很低;

2.用Java中的json来代替php的序列化,好处是:表减少了,数据容易存储,效率高,坏处是,数据不容易分析。

通过讨论和与实际的情况分析,我们选择了第二个方法,通过json来解决串串问题,那么我们也可以不需要重新设计数据库,直接使用它的数据库,方便很多。

附录:phpeams数据库设计解析资料点击打开链接

 

你可能感兴趣的:(成长路程)