怎么能讓他不顯示重復(fù)的數(shù)據(jù)?
對(duì)于數(shù)據(jù)庫中的重復(fù)數(shù)據(jù),有時(shí)候很令人頭疼,可偏偏很多時(shí)候由于各種原因又不可避免,那么我們?cè)趺刺幚磉@些重復(fù)數(shù)據(jù)呢,我從幾方面來說下
1.從數(shù)據(jù)生成時(shí)開始著手,也就是說當(dāng)數(shù)據(jù)往數(shù)據(jù)庫寫入時(shí),不管是程序?qū)懭耄€是自動(dòng)批量抽取數(shù)據(jù)寫入,我們可以采取一系列措施來避免重復(fù)數(shù)據(jù)的產(chǎn)生。當(dāng)然寫入程序代碼上的控制就不說了,我們主要可以利用數(shù)據(jù)庫的一些特性來避免重復(fù)數(shù)據(jù),比如數(shù)據(jù)庫表設(shè)置唯一性主鍵,這樣相同特性的數(shù)據(jù)就寫入不進(jìn)來了。還有就是數(shù)據(jù)庫盡量有唯一性字段,比如自增長(zhǎng)字段,這樣對(duì)于后期數(shù)據(jù)處理提供方便。
2.對(duì)已產(chǎn)生的數(shù)據(jù)進(jìn)行清理,當(dāng)數(shù)據(jù)已經(jīng)產(chǎn)生后,對(duì)于容易產(chǎn)生重復(fù)數(shù)據(jù)的數(shù)據(jù)庫表,我們可以建立一些觸發(fā)器或者建立一些專門的存儲(chǔ)過程來對(duì)數(shù)據(jù)按一定規(guī)則進(jìn)行清理,將重復(fù)的多余數(shù)據(jù)清除掉。當(dāng)然,清除數(shù)據(jù)一定要嚴(yán)謹(jǐn),特別是也謝生產(chǎn)數(shù)據(jù),所以這個(gè)步驟需要非常專業(yè)又安全的進(jìn)行。
3.既然重復(fù)數(shù)據(jù)都已經(jīng)產(chǎn)生了,而且可能從數(shù)據(jù)庫里面還不是太好去清理怎么的,那我們還有最后一步,那就是我在展示給用戶數(shù)據(jù)的時(shí)候,只展示一條數(shù)據(jù),將重復(fù)的數(shù)據(jù)唯一化。可以用唯一化SQL語句(比如distinct,group by 等),或者先建立視圖進(jìn)行數(shù)據(jù)唯一化。這樣即使后臺(tái)數(shù)據(jù)是重復(fù)的,但對(duì)于用戶使用來說看起來數(shù)據(jù)沒有重復(fù)。
從這幾方面入手,重復(fù)數(shù)據(jù)應(yīng)該無處藏身了,希望對(duì)你有幫助。