求一架构 : 保留历史数据
生活随笔
收集整理的這篇文章主要介紹了
求一架构 : 保留历史数据
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近做一個(gè)學(xué)校管理系統(tǒng),當(dāng)中遇到一個(gè)比較麻煩的問(wèn)題“保留歷史數(shù)據(jù)”,很疑惑,說(shuō)出來(lái)大家討論下,相信很多人也遇到同樣的問(wèn)題。
??????校方提出需求如下:
??????1.要保留學(xué)期留歷史數(shù)據(jù)
????????????比如:
????????????● 一年級(jí)一班2008-2009上學(xué)期有30個(gè)人,下學(xué)期有35個(gè)人,在查看上學(xué)期歷史數(shù)據(jù)的時(shí)候只能顯示上學(xué)期的30個(gè)人
????????????● 某學(xué)生在上學(xué)期名叫“張三”,而下學(xué)期改名叫“張四”,在查看上學(xué)期歷史數(shù)據(jù)的時(shí)候應(yīng)顯示“張三”
????????????●????某教師在上學(xué)期可能任職“總務(wù)”,而下學(xué)期可能任職“主任”,在查看上學(xué)期歷史數(shù)據(jù)的時(shí)候應(yīng)顯示教師當(dāng)時(shí)的任職情況,即“總務(wù)”
??????2.能實(shí)現(xiàn)跨學(xué)期數(shù)據(jù)統(tǒng)計(jì)
????????????而在統(tǒng)計(jì)分析中,要能實(shí)現(xiàn)在不同學(xué)期間實(shí)現(xiàn)統(tǒng)計(jì),比如,可以統(tǒng)計(jì)2000年-2009年,某教師的考評(píng)情況,生成圖表;可以統(tǒng)計(jì)學(xué)生從一年級(jí)到六年級(jí)的成績(jī),生成圖表
??????有考慮過(guò)以下幾種方案,但每種方案都有不足之處
??????1. 數(shù)據(jù)庫(kù)分離
????????????不同學(xué)期數(shù)據(jù)庫(kù)獨(dú)立,在學(xué)期交替的時(shí)候?qū)?shù)據(jù)備份到另一個(gè)數(shù)據(jù)庫(kù),作為歷史數(shù)據(jù)保留,對(duì)現(xiàn)有數(shù)據(jù)的修改不會(huì)影響歷史數(shù)據(jù),去年叫“張三”的學(xué)生,今年改名“張四”,查看歷史數(shù)據(jù)的時(shí)候,還是叫“張三”
????????????優(yōu)點(diǎn):容易實(shí)現(xiàn)歷史數(shù)據(jù)的保留,能實(shí)現(xiàn)不同學(xué)期數(shù)據(jù)絕對(duì)獨(dú)立
????????????缺點(diǎn):跨學(xué)期統(tǒng)計(jì),則需要跨數(shù)據(jù)庫(kù)訪問(wèn),不方便
??????2. 數(shù)據(jù)表分離
????????????不同學(xué)期表獨(dú)立,比如表 Students?,在學(xué)期交替時(shí)將數(shù)據(jù)備份至另一個(gè)表 "2008-2009?上 Students ",作為Students 2008-2009上學(xué)期歷史數(shù)據(jù)保留
????????????優(yōu)點(diǎn):跟方案1一樣,容易實(shí)現(xiàn)歷史數(shù)據(jù)的保留,能實(shí)現(xiàn)不同學(xué)期數(shù)據(jù)絕對(duì)獨(dú)立,互不影響
????????????缺點(diǎn):隨著學(xué)期的增加,數(shù)據(jù)庫(kù)容量巨增;跨學(xué)期統(tǒng)計(jì),需在多表之間統(tǒng)計(jì),較方案1中跨數(shù)據(jù)庫(kù)統(tǒng)計(jì)方便些,但也不方便;因?yàn)椴煌瑢W(xué)期表名不同,和ORM的映射關(guān)系不容易處理。
??????3.在需要保留歷史數(shù)據(jù)的每個(gè)表都加學(xué)期字段
????????????一個(gè)表包含所有學(xué)期的數(shù)據(jù),如Students:?
????????????優(yōu)點(diǎn):能實(shí)現(xiàn)不同學(xué)期數(shù)據(jù)獨(dú)立,跨學(xué)期統(tǒng)計(jì)數(shù)據(jù)很方便,在一個(gè)表內(nèi)
????????????缺點(diǎn):每一個(gè)查詢(xún)都要帶上學(xué)期,一個(gè)表包含多條編號(hào)相同的記錄,表之間的關(guān)系如何建立。學(xué)期增加,數(shù)據(jù)庫(kù)容量巨增。
??????校方提出需求如下:
??????1.要保留學(xué)期留歷史數(shù)據(jù)
????????????比如:
????????????● 一年級(jí)一班2008-2009上學(xué)期有30個(gè)人,下學(xué)期有35個(gè)人,在查看上學(xué)期歷史數(shù)據(jù)的時(shí)候只能顯示上學(xué)期的30個(gè)人
????????????● 某學(xué)生在上學(xué)期名叫“張三”,而下學(xué)期改名叫“張四”,在查看上學(xué)期歷史數(shù)據(jù)的時(shí)候應(yīng)顯示“張三”
????????????●????某教師在上學(xué)期可能任職“總務(wù)”,而下學(xué)期可能任職“主任”,在查看上學(xué)期歷史數(shù)據(jù)的時(shí)候應(yīng)顯示教師當(dāng)時(shí)的任職情況,即“總務(wù)”
??????2.能實(shí)現(xiàn)跨學(xué)期數(shù)據(jù)統(tǒng)計(jì)
????????????而在統(tǒng)計(jì)分析中,要能實(shí)現(xiàn)在不同學(xué)期間實(shí)現(xiàn)統(tǒng)計(jì),比如,可以統(tǒng)計(jì)2000年-2009年,某教師的考評(píng)情況,生成圖表;可以統(tǒng)計(jì)學(xué)生從一年級(jí)到六年級(jí)的成績(jī),生成圖表
??????有考慮過(guò)以下幾種方案,但每種方案都有不足之處
??????1. 數(shù)據(jù)庫(kù)分離
????????????不同學(xué)期數(shù)據(jù)庫(kù)獨(dú)立,在學(xué)期交替的時(shí)候?qū)?shù)據(jù)備份到另一個(gè)數(shù)據(jù)庫(kù),作為歷史數(shù)據(jù)保留,對(duì)現(xiàn)有數(shù)據(jù)的修改不會(huì)影響歷史數(shù)據(jù),去年叫“張三”的學(xué)生,今年改名“張四”,查看歷史數(shù)據(jù)的時(shí)候,還是叫“張三”
????????????優(yōu)點(diǎn):容易實(shí)現(xiàn)歷史數(shù)據(jù)的保留,能實(shí)現(xiàn)不同學(xué)期數(shù)據(jù)絕對(duì)獨(dú)立
????????????缺點(diǎn):跨學(xué)期統(tǒng)計(jì),則需要跨數(shù)據(jù)庫(kù)訪問(wèn),不方便
??????2. 數(shù)據(jù)表分離
????????????不同學(xué)期表獨(dú)立,比如表 Students?,在學(xué)期交替時(shí)將數(shù)據(jù)備份至另一個(gè)表 "2008-2009?上 Students ",作為Students 2008-2009上學(xué)期歷史數(shù)據(jù)保留
????????????優(yōu)點(diǎn):跟方案1一樣,容易實(shí)現(xiàn)歷史數(shù)據(jù)的保留,能實(shí)現(xiàn)不同學(xué)期數(shù)據(jù)絕對(duì)獨(dú)立,互不影響
????????????缺點(diǎn):隨著學(xué)期的增加,數(shù)據(jù)庫(kù)容量巨增;跨學(xué)期統(tǒng)計(jì),需在多表之間統(tǒng)計(jì),較方案1中跨數(shù)據(jù)庫(kù)統(tǒng)計(jì)方便些,但也不方便;因?yàn)椴煌瑢W(xué)期表名不同,和ORM的映射關(guān)系不容易處理。
??????3.在需要保留歷史數(shù)據(jù)的每個(gè)表都加學(xué)期字段
????????????一個(gè)表包含所有學(xué)期的數(shù)據(jù),如Students:?
| 學(xué)期 | 編號(hào) | 姓名 | 成績(jī) |
| 2008-2009 上 | 01 | 張三 | 80 |
| 2008-2009 下 | 01 | 張四 | 90 |
| 2008-2009 下 | 02 | 李四 | 85 |
????????????缺點(diǎn):每一個(gè)查詢(xún)都要帶上學(xué)期,一個(gè)表包含多條編號(hào)相同的記錄,表之間的關(guān)系如何建立。學(xué)期增加,數(shù)據(jù)庫(kù)容量巨增。
轉(zhuǎn)載于:https://www.cnblogs.com/kuiyouli/archive/2009/09/14/1566140.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的求一架构 : 保留历史数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。