1. 程式人生 > >線上考試系統(一)-----資料庫的設計

線上考試系統(一)-----資料庫的設計

    首先自己是個菜鳥,專案經驗不足,並且我會把自己碰到的問題寫成部落格,希望能給大家幫助,相互學習,覺得還是很有作用於的,廢話不多說。                                                                    雖然專案不是很複雜,團隊人數不多,但是參與的專案都是商業專案,為了降低開發成本,使用的框架都是開源的,資料庫是: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資料庫設計解析資料點選開啟連結