您的位置:首页 > 数据库

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

2014-11-13 18:59 225 查看
首先自己是个菜鸟,项目经验不足,并且我会把自己碰到的问题写成博客,希望能给大家帮助,相互学习,觉得还是很有作用于的,废话不多说。
虽然项目不是很复杂,团队人数不多,但是参与的项目都是商业项目,为了降低开发成本,使用的框架都是开源的,数据库是: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数据库设计解析资料点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: