• <sup id="azsug"></sup>

    <menu id="azsug"></menu><dfn id="azsug"><li id="azsug"></li></dfn>
      <td id="azsug"></td>
      <sup id="azsug"></sup>
    1. 丰满无码人妻热妇无码区,亚洲国产欧美一区二区好看电影,大地资源中文第二页日本,亚洲色大成网站WWW永久麻豆,中文字幕乱码一区二区免费,欧美人妻在线一区二区,草裙社区精品视频播放,精品日韩人妻中文字幕
      24周年

      財稅實務 高薪就業 學歷教育
      APP下載
      APP下載新用戶掃碼下載
      立享專屬優惠

      安卓版本:8.8.30 蘋果版本:8.8.30

      開發者:北京正保會計科技有限公司

      應用涉及權限:查看權限>

      APP隱私政策:查看政策>

      HD版本上線:點擊下載>

      面向財務冗余數據的處理及有效控制方法研究

      來源: 李弘 李長青 編輯: 2009/11/04 21:55:54  字體:

      選課中心

      實務會員買一送一

      選課中心

      資料專區

      需要的都在這里

      資料專區

      課程試聽

      搶先體驗

      課程試聽

      高薪就業

      從零基礎到經理

      高薪就業

        【摘 要】本文剖析了在編制和應用財務軟件過程中數據表里出現冗余數據的原因及其引發的后果;在SQL Server 2000環境下,通過使用帶參數的存儲過程實現了對任意表中的冗余數據的刪除操作;提出了構建隱含關鍵字避免數據冗余的方法,保證了實體完整性。

        【關鍵詞】冗余數據;SQL Server 2000;存儲過程;關鍵字

        1 引 言

        企業中對財務軟件的應用是企業信息化水平的重要標志,但在編制或應用財務軟件的過程中,如對系統升級、數據表合并或跨年度數據整理時,都經常會產生重復數據的問題。而這部分冗余數據,從數據庫設計角度看,不符合實體完整性規則;從財務管理的應用角度看,會導致錯誤的出現。

        針對這種情況,在SQL Server 2000環境下,可以通過使用帶參數的存儲過程非常容易地實現對任意表中冗余記錄的處理,并且在數據表設計中采用構建隱含關鍵字的方法避免冗余數據的產生。

        2 冗余數據出現的原因及操作中的問題

        2. 1冗余數據出現的原因分析

        目前,財務軟件中廣泛使用的數據庫是關系型數據庫,其數據模型為關系模型。關系模型源于數學,它把所有的信息(數據)都存放在二維表中;每一個表又包含若干行與列,表被稱為關系。關系的嚴格定義如下:

        域是一組具有相同數據類型的值的集合;給定一組域Dl,D2,…,Dn,則Dl,D2,…,Dn的笛卡兒積為:Dl ×D2 ×…×Dn={(d1,d2,…,dn)|di∈Dj , j=1,2, …,n} (其中每一個元素(d1,d2,…,dn)被稱為一個元組,元素中的每一個值di被稱為一個分量);那么,Dl × D2 ×…× Dn的子集被稱為在域Dl,D2,…,Dn上的關系,用R(Dl,D2,…,Dn)來表示。這里R表示關系的名字。

        關系應具有的一個重要性質是關系中不允許重復的元組(即重復的記錄),在關系中,保證數據的正確性和一致性是通過關系模型的完整性規則來約束關系的。完整性規則包括3類:實體完整性、參照完整性和用戶定義的完整性。而實體完整性約束了在一個基本關系中各實體(即記錄)是可區分的,具有唯一的標識。這是本文討論的重點。

        實體完整性要求每個基本關系中有且僅有一個不能為空值的主碼(即關鍵字),每一個實體的主碼值必須唯一。

        從關系數據庫的設計角度看,如果遵循實體完整性規則設計相應的關系,那么在數據表中是不會出現冗余數據的。數據表中出現冗余數據無外乎兩種情況:

        情況一:在數據表設計時并沒有按照實體完整性規則建立數據表

        在這種情況下,建立數據表時并沒有為該表指定相應的關鍵字,如果多次為該數據表添加相同的記錄后,就會出現冗余數據。

        例:Create table jbbxx (kmbh char(10)qcje decimal(18,2),bqje decimal(18,2),rq datetime,czybh char(2))&建立數據表jbbxx

        Insert into jbbxx values('10120101',30 000.56,

        1 000.3,'07-03-02','01')&多次執行記錄添加語句

        情況二:在處理數據中,原表中的關鍵字約束的特性缺失

        例:Create table jbbxx (kmbh char(12) not null primary key,qcje decimal(18,2),bqje decimal(18,2),rq datetime,czybh char(2))&建立帶有關鍵字的原表jbbxx

        Select * into jbbxx_bak from jbbxx where left(kmbh,4)='1012'&由原表生成新表jbbxx_bak

        查看原表(見圖1)和新表(見圖2)的數據表結構,發現在由原表生成新表的過程中,原表所定義的kmbh關鍵字約束在形成新表后缺失了。

        2. 2操作冗余數據出現的問題

        經過上面的討論,可知數據表中是會出現冗余數據的,并且一旦出現冗余數據,是無法通過交互方式進行修改、刪除等操作的(見圖3)。

        究其原因,是因為交互狀態下針對的是一條記錄,而由于相同記錄的存在,使數據庫管理系統無法對當前記錄進行定位。

        3 處理冗余數據的實現方法

        3. 1實現思路

        對數據表中的冗余數據的處理,可以采用游標的方法遍歷數據表中記錄進行解決,但這種方法有些煩瑣,本文介紹一種簡單高效的方法使該問題得到很好的解決。該方法的關鍵是運用了SQL語言中Select查詢語句的Distinct關鍵字,該關鍵字的使用能夠在查詢結果集中除去重復的行(即冗余數據),根據此思路可以形成一個沒有冗余數據的結果表,步驟如下:

        第一步:將有冗余數據存在的表中利用Distinct篩出不重復的記錄放置到新表中;

        第二步:將原表中記錄刪除;

        第三步:將新表中的記錄插入原表。

        3. 2實現過程

        本文用存儲過程實現處理過程,存儲過程是一組事先編譯好的Transact-SQL代碼,是一個獨立的數據庫對象,可以作為一個單元被用戶的應用程序調用。

        采用存儲過程具有的優點是:(1)執行速度快。由于存儲過程是已經編譯好的代碼,所以執行的時候不必再次進行編譯,從而提高了程序的運行效率。(2)模塊化編程。作為一個可重復使用的模塊化單元,存儲過程使得開發人員可以將復雜的功能封裝起來,提供給用戶簡單的調用接口,不僅減少開發人員的工作量,也降低了應用的復雜度。

        本文中,通過設計帶參數的存儲過程可以增強通用性,將數據表名設計為參數,可實現對任意表的冗余數據處理;另外,在刪除記錄時,因truncate語句比delete語句使用的系統和事務日志資源少,因此采用該語句提高效率。

        Create procedure Clear_redundancy (@dbname nvarchar(25))

        As

        Declare @str nvarchar(255)

        if Exists(select * from sysobjects where name=N'aa' And Xtype='U')

        drop table aa

        Set @str='select distinct * into aa from'+@dbname

        EXEC sp_executesql @str &將無重復數據放入新表aa

        Set @str=' truncate table '+@dbname

        EXEC sp_executesql @str &采用truncate快速刪除記錄

        Set @str='insert into'+@dbname+'select * fromaa'

        EXEC sp_executesql @str&將aa中的記錄插回到原表

        Return

        4 避免冗余數據產生的方法

        雖然采用本文提供的方法可以清除冗余數據,但更有效的做法是避免冗余數據的出現,從而從根本上解決因數據冗余造成的在操作記錄時的出錯現象。

        通過前面的分析,可以得知,數據冗余的產生或是由于設計數據表時未能通過關鍵字實現實體完整性的約束,或是指定了關鍵字,但在表的合并或相關操作中缺失了這一特性,因此,本文提出一種在設計表時定義隱含關鍵字方法,使這一問題很好地得到解決。

        在SQL Server 2000中提供了在設計表時,通過標識列屬性identity可以為該列提供一個唯一的、遞增的值。該機制需要同時指定種子和增量,若不指定默認值(1,1),則此值在進行數據插入和修改時都無須用戶指定該值,而由數據庫系統管理和維護。因此,該列具有關鍵字的特性,即值唯一;而且在數據表的操作中又可保持列的identity屬性。

        Create table jbbxx (key_code int identity(1,1),kmbh char(10),qcje decimal(18,2),bqje decimal(18,2),rq datetime,czybh char(2))

        其中,表jbbxx中的key_code列被定義為標識列,在添加記錄時,其值單調增加,保持唯一性,從而保證了實體的完整性,因此,不會在操作(如修改、刪除)中出現錯誤。

        5 結 論

        在實際工作中,數據冗余的存在會引起操作錯誤的出現,所以是每個數據庫管理員需要解決的問題。本文從問題的產生原因進行分析,給出了一種簡單高效的解決方法,并通過定義隱含關鍵字方法避免了該問題的出現,可以作為在實際數據庫維護工作中的有效方法。

        主要參考文獻:

        [1] 薩師煊,王珊. 數據庫系統概論[M]. 第3版. 北京:高等教育出版社,2000:45-55.

        [2] 許菱,秦曉海,孔令新. 巧用存儲過程進行數據處理[J]. 中國管理信息化,2006,(7):62-64.

        [3] 尹萍. SQL Server數據庫性能優化[J]. 計算機應用與軟件,2005,(3):51-53.

        [4] 王振輝,吳廣茂. SQL查詢語句優化研究[J]. 計算機應用, 2005,(12):207-208.

        [5] 金天榮. SQL Server的查詢優化方法的設計和實現[J]. 微計算機信息,2006,(18):239-241.

      責任編輯:小奇
      學員討論(0

      實務學習指南

      回到頂部
      折疊
      網站地圖

      Copyright © 2000 - www.sgjweuf.cn All Rights Reserved. 北京正保會計科技有限公司 版權所有

      京B2-20200959 京ICP備20012371號-7 出版物經營許可證 京公網安備 11010802044457號

      恭喜你!獲得專屬大額券!

      套餐D大額券

      去使用
      主站蜘蛛池模板: 日韩一区二区三区一级片| 国产麻豆9l精品三级站| 亚洲春色在线视频| 久久av无码精品人妻出轨| 亚洲精品国偷自产在线| 安西县| 九九热在线免费视频播放| 最近中文字幕国产精选| 尤物国产精品福利在线网| 精品无码国产日韩制服丝袜| 极品尤物被啪到呻吟喷水| 久久久久国产一区二区| 亚洲男女羞羞无遮挡久久丫 | 亚日韩精品一区二区三区| 亚洲精品美女一区二区| 盐源县| 小污女小欲女导航| 99久久婷婷国产综合精品青草漫画| 国产不卡精品视频男人的天堂| 国产熟睡乱子伦午夜视频| 精品国产亚洲第一区二区三区| 亚洲午夜伦费影视在线观看| 越南女子杂交内射bbwxz| 国产av一区二区久久蜜臀| 无码日韩精品一区二区三区免费| 乱人伦人妻中文字幕无码久久网| 少妇人妻偷人精品视蜜桃| 亚洲午夜爱爱香蕉片| 97国产揄拍国产精品人妻| 99re在线视频观看| 亚洲av无码国产在丝袜线观看| 少妇熟女久久综合网色欲| 久久99九九精品久久久久蜜桃| xbox免费观看高清视频的软件| 国产精品久久久国产盗摄| 国产精品久久久国产盗摄| 亚洲精品第一区二区在线| 精品久久久久无码| 国产情侣激情在线对白| 免费的特黄特色大片| 国产欧美亚洲精品a|