基礎系統開發經驗共享

1 項目介紹


基礎系統主要負責教務系統的基礎數據的維護,目的是爲了避免各個系統單獨開發而出現的業務重複和數據不同步的問題,實現數據的共享。
本系統主要就是業務比較複雜,可能用不到比較先進的技術,但是設計理念和對一些業務的處理還有很有借鑑意義的。

2 設計理念


系統分佈設計:

參考博客  http://blog.csdn.net/jesse621/article/details/8655631

數據表設計原則:

本系統是基礎系統,主要業務是維護基礎數據,在此之上會有其他的子系統,如選課系統,評教系統,考試系統等等。由於子系統會不斷的變化,需要考慮基礎系統的可擴展性和靈活性。
表結構設計儘量粒度比較小,基本表沒主外鍵,基本表之間的關係完全靠第三張表來維護。這樣在基本表之間的關係發生變化的時候只需要修改或者添加第三張表即可,不需要對基本表做任何操作,保證了基本數據的安全。同時在有新的子系統出現,關係邏輯和以往的不同的時候,只需要建立自己的關係表,不會對已經存在的系統有影響,可以依獨立的邏輯運行。增加了系統的可擴展性。
子系統只能依附於基礎系統的數據,所有的數據只能從基礎中讀取,如果基礎系統的數據有變更,子系統需要更新讀取新數據,保持數據一致。爲了避免基礎系統依賴子系統,子系統不可以建立和基礎系統維護表的主外鍵關係,數據一致需要用代碼控制。主外鍵在子系統中不要和基本表有關係。

3 業務處理


1 歷史記錄問題

參考博客 http://blog.csdn.net/jesse621/article/details/8604098

2 用戶權限管理

參考博客 http://blog.csdn.net/jesse621/article/details/8623892

3 查詢效率優化

有時候一個界面需要的數據是很多表聯合查詢出來的結果,建視圖也會join好幾個,很大程度上影響效率。此時最好採用冗餘表處理。
如果一張表關係複雜和多個表有關聯,並且頻繁的被訪問,就把關聯的信息都冗餘放到一張表中,避免查詢多張表。

4 關係數據的處理

舉個例子:學院下有專業,專業下有班級,班級下有學生,那麼如果一個學院被刪除了,是否底下的專業,班級,還有學生都全部被刪除?
一開做系統的時候,我們就是按照這個邏輯來的,只要大頭被刪除掉,同時其底下的數據也都同樣被處理,當時全部都是用觸發器實現的。這樣會有一個問題,很可能就是不經意間把一個大頭給刪除了,而程序內部執行的一系列操作(刪除專業,班級,學生)用戶都看不到,就沒有想到會有這麼大的變動,此時再想把數據恢復回來也是一個很繁瑣的過程。
解決方案:
刪除從小開始。從最小方面一步步的進行,這樣用戶能參與整個的過程。當刪除一個大頭的數據的時候,必須保證其下的數據位空。Sql server就是這樣設計的,只有一個字段下面沒有任何記錄的時候才能進行更改。

4 細節共享


1 數據庫方面

1) 主鍵生成器的使用。
主鍵的選擇:用自己系統設定的主鍵,不用任何有意義的屬性作爲主鍵,這樣可以應對變化。我們採用的GUID。
2) 觸發器中游標的使用。
參考博客 http://blog.csdn.net/jesse621/article/details/8285228

我們系統中使用了大量的觸發器, update觸發器只會被update觸發一次,無論更新的記錄數是多少,同理Delete觸發器也是一樣,對於處理集合性的數據,sql往往是同時處理的,沒有按照先後順序,這樣相應的觸發器就不會一一觸發。需要用遊標處理。

2 代碼方面

1) 界面採用模板
使用現成的框架,好處:界面美觀,用戶體驗好。壞處:對於我們學習知識來說意義不大,都是在套用,沒有練習到學到的知識。
2)B層使用事物,這樣就可以把邏輯放在B層,而不會因爲把邏輯都寫在存儲過程裏面而架空B層
3)UpdatePanel的使用,使用UpdatePanel可以很輕鬆的將一個非AJAX頁面變成AJAX頁面,但是使用UpdatePanel會帶來一系列的問題。比如:自己寫的JQuery腳本會失效
4)用正則表達式和頁面提示最大限度的限制用戶輸入
5)導入和導出EXCEL,設置EXCEL的格式,單元格的數據類型,單元格的格式
將導入EXCEL中的錯誤的和無效數據挑出來導出,並給出提示:錯誤原因
6)枚舉返回類型,可以解決多個返回值問題,以及更多應用
7)Json的使用:
爲了界面友好,基礎系統的授課部分我用JS實現,傳遞的數據是JSON。

參考博客  http://blog.csdn.net/mazhaojuan/article/details/8599167

                  http://blog.csdn.net/mazhaojuan/article/details/8592015

3 開發流程

1) 模板驅動:
我們這次基本上是遇到一類問題,一個人解決,其他人蔘考該方法。效率較高,但是也有問題。其他人只是在用,沒有思考和探索的過程。一旦出了問題,需要改動的地方比較大。
2) 任務分工:
項目一共三層,按層開發,每一個人的分工都是一條線來的,這樣的好處:對自己的那一塊從頭負責到尾,自己改也容易,開發速度比較快;不足:不便於瞭解其他人得業務邏輯和實現。
發佈了79 篇原創文章 · 獲贊 16 · 訪問量 59萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章