表結構設計討論
1. 多個業務儲存到同一張表
優點:
資料聚集度較高,程式碼量少
缺點:
1) 結構不清晰
2) 由於工作流只能支援單個業務,無法跟工作流結合
結論:採用第一種方案。
2. 更新修改業務
根據不同的業務型別,分為兩類:
1) 顯式修改,也就是系統需要提供介面修改資訊的,比如單位基本資訊修改、個人基本資訊修改,建議採用統一的通用修改模組實現(該模組目前已實現85%)。可以達到的效果是:把修改資訊作為一筆業務看待,何時修改、何人修改、什麼原因修改、修改了什麼欄位以及原值是什麼,新值是什麼,一清二楚。
2) 隱式修改,即辦理一筆業務,修改了其他相關表資訊的,比如人員增減變動,辦理停保業務,修改了個人基本資訊表中的人員狀態為“停保”。這時候的原始資訊可以透過“歷史資料的保留”討論得出的方案保留。
結論:顯式修改,採用通用修改模組修改;隱式修改,視具體的業務具體處理。
3. 歷史資料的保留
兩種方案:
1) 在業務表上加入“有效標誌”欄位,0-當前 1-歷史 9-無效
優點:
Ø java程式處理方便,只對同一張表操作,無需書寫額外的程式碼
Ø 查詢歷史資訊和無效資訊只需要更改標誌標誌即可,透過持久層的封裝統一處理
缺點:
Ø 後臺查詢不方便,加入有效標誌=x,才能區分有效、歷史還是無效記錄
Ø PL/SQL處理不方便,理由同上
Ø 對於存在業務主鍵(業務唯一性約束)的情況,要保證有效標誌=0(當前)的情況下,保證唯一,目前Oracle有這樣的機制實現,遷移到資料庫,未確定使用資料庫的機制是否可以實現
Ø 效能損失,a)在同一張表保留歷史和無效資料,日積月累會降低查詢當前記錄的效能,尤其是對於頻繁修改的表,很可能會況會出現歷史資料+無效資料>當前資料的情況;b)降低使用索引的效能,對於某些存在業務主鍵的表,由於不能對全表資料建立業務主鍵上的唯一索引,只能建立普通索引,必然會導致效能的下降
Ø 資料量特別大的表情況,出於效能上的考慮,不太合適
2) 建立歷史表,表結構跟原表一樣,但需要加入
優點:
Ø 歷史、無效資料和當前資料隔離,不存在效能降低的問題
Ø 可以在業務主鍵上建立唯一索引,不存在“有效標誌”出現的問題
缺點:
Ø 對每張需要保留歷史記錄的表都需要建立歷史表
Ø java程式上的處理要對多張表操作,存在不夠方便(是否考慮使用通用的一種處理方式?)
結論:採用第二種方案,對每張需要保留歷史記錄的表都建立歷史表,命名方法為原表名+_BAK,加入xgr-修改人,xgsj-修改時間,scr-刪除人,scsj-刪除時間四個欄位;持久層在修改和刪除表資料的時候保留歷史、無效資訊,並且提供查詢歷史、無效資料的介面。
4. 支付賬目的設計
有兩種設計方法:
1) 主從表:從表儲存明細項金額,主表儲存彙總金額和狀態資訊
優點:
Ø 靈活,明細項有增加減少變化時,相應的從表增加減少記錄,對錶結構沒有影響
缺點:
Ø 資料量較大,比如在沖銷的時候,明細資訊也要同時沖銷,可能會存在效能問題
2) 單表:
優點:
Ø 資料量較第一種方法要少
缺點:
Ø 不靈活,明細項增加減少時需要增加減少欄位
結論:採用第一種方案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-247758/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何設計SKU表結構
- 討論設計模式和00思想設計模式
- [討論]“消滅”程式設計師?程式設計師
- oracle表結構設計轉摘Oracle
- 設計模式討論之abstract factory篇設計模式
- [技術討論]多使用者(多公司)的資料庫設計討論資料庫
- GoF設計模式新手討論專用帖Go設計模式
- 設計模式討論之abstract factory篇 (轉)設計模式
- ORACLE索引組織表討論Oracle索引
- HBase的表結構你設計得不對!
- [技術討論]06年12月結對程式設計與交換程式設計的對話程式設計
- 架構設計方法論架構
- 討論下 RESTful 風格 API 的路由設計RESTAPI路由
- [討論] 似是而非的程式設計觀點程式設計
- 關於程式設計風格的討論 (轉)程式設計
- J2EE相關設計模式討論設計模式
- 資料模型設計(表結構)之隨記模型
- <ddd--領域驅動設計學習>討論--------分層架構架構
- 程式設計方法論/架構設計/模式相關轉載連結彙總程式設計架構模式
- 關於網站設計的一點點討論網站
- 討論個有關模組化設計的問題
- [軟體工程]交換程式設計方法的深入討論軟體工程程式設計
- 各位道友,進來討論個介面設計問題!
- [技術討論]遊戲AI設計與機器智慧遊戲AI
- 討論:什麼才算是真正的程式設計能力?程式設計
- [技術討論]架構設計和程式碼之間的關係以及程式設計師任務安排架構程式設計師
- 資料結構,雜湊表hash設計實驗資料結構
- 深入討論通用許可權元件的理論和設計實現。元件
- 設計randompool結構random
- 資料庫系統架構討論資料庫架構
- Gear: 一個 Go web framework 的設計思考和討論GoWebFramework
- [軟體工程]交換程式設計方法的深入討論(續)軟體工程程式設計
- 《Linux/Unix 設計思想》的翻譯細節討論Linux
- [技術討論]交換程式設計實踐與延續程式設計
- 前端架構設計的方法論前端架構
- 表欄位經常要增加的業務怎麼設計表結構
- 樹形結構的選單表設計與查詢
- 專案需求討論 – 定位功能小結