淺析資料完整性問題

來源:互聯網
上載者:User
資料|問題


---- 在開發C/S結構的大型資料庫應用軟體時,一般情況下,軟體開發人員和資料庫設計人員並不是同一個人,這就需要協商好一些即可由程式設計人員解決又可由資料庫設計人員來解決的問題,保證資料完整性就是一個這樣的問題。

---- 筆者舉一個最簡單的例子:貨物出庫、退貨的例子

---- 這裡有庫存表(kcb)、出庫單表(ckb) 和退貨單表(thb)

---- 庫存表包含如下列:WPBH,KCSL〔物品編號,庫存數量〕

---- 出庫單表含如下列:WPBH,CKSL〔物品編號,出庫數量〕

---- 退貨單表含如下列:WPBH,THSL〔物品編號,退貨數量〕

---- 假如我們進行了如下交易:

---- 1.物品A有十件出庫

---- 2.物品A有五件退貨(可再出庫)

---- 我們都知道,這兩筆交易都需要修改庫存表,但修改庫存表的工作由誰來做。可以肯定的說,程式設計人員和資料庫設計人員都可以完成。

---- 首先我們舉例由程式設計人員如何完成:

---- 1.出庫時,產生新出庫記錄插入到出庫單表中,同時將庫存表中的KCSL用KCSL減掉出庫數量的值取代。

---- 2.退貨時,產生新退貨記錄插入到退貨表中,同時將庫存表中的KCSL用KCSL加上退貨數量的值取代。

---- 由於不同的開發平台,完成這項工作的代碼不盡相同,故不寫出具體代碼。

---- 接下來看看由資料庫設計人員是如何完成這項工作:

---- 資料庫設計人員完成這項工作靠的是觸發器。

---- 資料庫設計人員建立如下SQL語句為出庫單表(ckb)建立插入觸發器

CREATE TRIGGER FORINSERT
ON ckb
FOR INSERT
AS
UPDATE kcb
SET kcb.kcsl=kcb.kcsl - inserted.cksl
FROM inserted
WHERE kcb.wpbh=inserted.wpbh

---- 同樣,也要為退貨單表建立類似的SQL語句

CREATE TRIGGER FORINSERT
ON thb
FOR INSERT
AS
UPDATE kcb
SET kcb.kcsl=kcb.kcsl + inserted.thsl
FROM inserted
WHERE kcb.wpbh=inserted.wpbh

---- 可以很明顯地看出,如果兩個人都做了工作,程式在運行過程中一定會出錯。

---- 但這項工作具體應該由誰來完成?我私下認為,應該由資料庫設計人員來完成,原因如下:

---- 1、一個可移植性好的軟體應該與資料的結構無關;

---- 2、程式的研製和調試更加簡單,再拿上例來說,程式設計人員只需完成往出庫單表和退貨單表中插入相應的記錄工作即可,具體修改工作由觸發器來完成。

---- 3、觸發器的運行是在伺服器端,減輕了用戶端的開銷。

---- 4、觸發器不管你在什麼時候進行操作,它都會啟動,保證資料不會出錯。

---- 其實,上文所寫的觸發器只是一個最簡單的例子,在實際工作中要遠遠比這複雜得多,設計一個好的資料庫會花費資料庫設計人員很大的心血,如果只是建立了表格,工作還沒有完成一半呢,下一多半工作就是將你的資料完整性問題解決掉。

---- 成功地設計一個資料庫能起到事半功倍的效果。資料的完整性已經解決了,程式設計起來還有什麼問題呢?

---- 說來容易,做到卻很難,比者在實際工作中也經常遇到很多問題,希望能和眾多的同行共同進步,把你的經驗和好的方法告訴大家。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。