第3章應用實例技巧_第1頁
第3章應用實例技巧_第2頁
第3章應用實例技巧_第3頁
第3章應用實例技巧_第4頁
第3章應用實例技巧_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、-2-第第3 3章章 應用實例技巧應用實例技巧目目 錄錄3.1 3.1 一對多表單設(shè)計一對多表單設(shè)計3.2 3.2 數(shù)據(jù)加鎖方法數(shù)據(jù)加鎖方法3.3 3.3 回滾與提示回滾與提示3.4 3.4 游標模板游標模板3.5 3.5 通知發(fā)布通知發(fā)布3.6 3.6 常用外部函數(shù)常用外部函數(shù)本章小結(jié)本章小結(jié)-3-第第3 3章章 應用實例技巧應用實例技巧3.1 3.1 一對多表單設(shè)計一對多表單設(shè)計3.1.1 3.1.1 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系 現(xiàn)實世界中相互可以區(qū)分的事物稱為現(xiàn)實世界中相互可以區(qū)分的事物稱為實體實體。實體之間存在著直接或?qū)嶓w之間存在著直接或間接的聯(lián)系,這些聯(lián)系在數(shù)據(jù)庫中反映為實體之間的聯(lián)系。兩個實

2、體之間接的聯(lián)系,這些聯(lián)系在數(shù)據(jù)庫中反映為實體之間的聯(lián)系。兩個實體之間的聯(lián)系分為三類。間的聯(lián)系分為三類。一對一聯(lián)系(一對一聯(lián)系(1 11 1) 對于實體集對于實體集A A和實體集和實體集B B,如果,如果A A中的每一個實體,在中的每一個實體,在B B中最多只有一中最多只有一個實體與之聯(lián)系,反之亦然,則稱實體集個實體與之聯(lián)系,反之亦然,則稱實體集A A與實體集與實體集B B之間具有之間具有一對一一對一聯(lián)系聯(lián)系,記作,記作1 11 1。一對多聯(lián)系(一對多聯(lián)系(1 1n n) 對于實體集對于實體集A A和實體集和實體集B B,如果,如果A A中的每一個實體,在中的每一個實體,在B B中有中有n n(

3、n0n0)個實體與之聯(lián)系,反之,個實體與之聯(lián)系,反之,B B中的每一個實體,中的每一個實體,A A中有且只有一個實體與中有且只有一個實體與之聯(lián)系,則稱實體集之聯(lián)系,則稱實體集A A與實體集與實體集B B之間具有之間具有一對多聯(lián)系一對多聯(lián)系, 記作記作1 1n n。-4-第第3 3章章 應用實例技巧應用實例技巧多對多聯(lián)系(多對多聯(lián)系(m mn n) 對于實體集對于實體集A A和實體集和實體集B B,如果,如果A A中的每一個實體,在中的每一個實體,在B B中有中有n n(n0n0)個實體與之聯(lián)系,反之,個實體與之聯(lián)系,反之,B B中的每一個實體,在中的每一個實體,在A A中也有中也有m m(m0

4、m0)個實)個實體與之聯(lián)系,則稱實體集體與之聯(lián)系,則稱實體集A A與實體集與實體集B B之間具有之間具有多對多聯(lián)系多對多聯(lián)系,記作,記作m mn n。3.1.2 3.1.2 數(shù)據(jù)設(shè)計模型數(shù)據(jù)設(shè)計模型關(guān)聯(lián)符號關(guān)聯(lián)符號 在關(guān)系型數(shù)據(jù)庫概念模型中,常用的關(guān)聯(lián)關(guān)系符號如圖在關(guān)系型數(shù)據(jù)庫概念模型中,常用的關(guān)聯(lián)關(guān)系符號如圖3.13.1所示。所示。圖圖(a)(a)表示可選,表示可選,(b)(b)表示強制,表示強制,(c)(c)表示一對多,表示一對多,(d)(d)表示依賴。表示依賴。依賴依賴是一對多關(guān)系的一種,要求被依賴的表的關(guān)鍵字是依賴的表的主鍵屬是一對多關(guān)系的一種,要求被依賴的表的關(guān)鍵字是依賴的表的主鍵屬

5、性。性。 (a a) (b b) (c c) (d)(d)圖圖3.1 3.1 關(guān)聯(lián)關(guān)系符號關(guān)聯(lián)關(guān)系符號-5-第第3 3章章 應用實例技巧應用實例技巧概念數(shù)據(jù)模型概念數(shù)據(jù)模型 概念數(shù)據(jù)模型概念數(shù)據(jù)模型(Conceptual Data ModelConceptual Data Model,CDMCDM)是一組嚴格定義)是一組嚴格定義的模型元素的集合,這些模型元素精確地描述了系統(tǒng)的靜態(tài)特性、動的模型元素的集合,這些模型元素精確地描述了系統(tǒng)的靜態(tài)特性、動態(tài)特性和完整性約束條件,它包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束態(tài)特性和完整性約束條件,它包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分。三部分。物理數(shù)據(jù)模型物

6、理數(shù)據(jù)模型 物理數(shù)據(jù)模型物理數(shù)據(jù)模型(Physical Data ModelPhysical Data Model,PDMPDM)是將)是將CDMCDM轉(zhuǎn)化成特定轉(zhuǎn)化成特定數(shù)據(jù)庫管理系統(tǒng)下的數(shù)據(jù)庫管理系統(tǒng)下的SQLSQL程序的圖形化表示。程序的圖形化表示。(a) (b)RELATION_1部門檔案科室名稱備注員工檔案員工姓名備注DEPARTMENTNAME = DEPARTMENTNAMEDEPARTMENTDEPARTMENTNAMEVARCHAR2(50)DEP_REMARKSVARCHAR2(250)EMPLOYEEDEPARTMENTNAMEVARCHAR2(20)EMPLOYEENA

7、MEVARCHAR2(20)EMP_REMARKSVARCHAR2(250)圖圖3.2 3.2 一對多關(guān)聯(lián)關(guān)系一對多關(guān)聯(lián)關(guān)系 -6-第第3 3章章 應用實例技巧應用實例技巧面向?qū)ο竽P兔嫦驅(qū)ο竽P?面向?qū)ο竽P兔嫦驅(qū)ο竽P停∣bject Oriented ModelObject Oriented Model,OOMOOM)是運用面向?qū)ο螅┦沁\用面向?qū)ο蟓h(huán)境將模型信息用標準化的圖形元素進行顯示并建立軟件模型的過程。環(huán)境將模型信息用標準化的圖形元素進行顯示并建立軟件模型的過程。3.1.3 3.1.3 一對多表單數(shù)據(jù)庫設(shè)計一對多表單數(shù)據(jù)庫設(shè)計 在數(shù)據(jù)庫設(shè)計過程中,系統(tǒng)開發(fā)人員需要妥善解決的問題:在數(shù)

8、據(jù)庫設(shè)計過程中,系統(tǒng)開發(fā)人員需要妥善解決的問題:從用戶提供的零亂并且錯綜復雜的需求信息中抽象并優(yōu)化,設(shè)計出符從用戶提供的零亂并且錯綜復雜的需求信息中抽象并優(yōu)化,設(shè)計出符合規(guī)范化要求的數(shù)據(jù)庫結(jié)構(gòu)。合規(guī)范化要求的數(shù)據(jù)庫結(jié)構(gòu)。在設(shè)計信息系統(tǒng)的數(shù)據(jù)庫概念模型和物理模型中,要考慮用戶過去手在設(shè)計信息系統(tǒng)的數(shù)據(jù)庫概念模型和物理模型中,要考慮用戶過去手工處理與信息系統(tǒng)新的數(shù)據(jù)存儲結(jié)構(gòu)的差異和系統(tǒng)實現(xiàn)等多方面的因工處理與信息系統(tǒng)新的數(shù)據(jù)存儲結(jié)構(gòu)的差異和系統(tǒng)實現(xiàn)等多方面的因素。素。設(shè)計并實現(xiàn)盡量符合用戶手工操作習慣的信息系統(tǒng)操作功能界面。設(shè)計并實現(xiàn)盡量符合用戶手工操作習慣的信息系統(tǒng)操作功能界面。 下面以醫(yī)院信息

9、管理系統(tǒng)中藥庫出入庫業(yè)務(wù)的設(shè)計與實現(xiàn)為例說明下面以醫(yī)院信息管理系統(tǒng)中藥庫出入庫業(yè)務(wù)的設(shè)計與實現(xiàn)為例說明一對多表單設(shè)計與優(yōu)化的過程。一對多表單設(shè)計與優(yōu)化的過程。-7-第第3 3章章 應用實例技巧應用實例技巧圖圖3.3 3.3 藥庫入庫單藥庫入庫單藥藥 庫庫 入入 庫庫 單單入庫單編號:入庫單編號: 2682 2682 入庫日期:入庫日期:2007.11.30 2007.11.30 入庫人員:入庫人員:李李 平平 供應商名稱:供應商名稱: 神州制藥公司神州制藥公司 地地 址:址:北京北京 郵郵 編:編:100100* * * * 供應商開戶行:供應商開戶行:工商銀行工商銀行 供應商銀行賬號:供應商

10、銀行賬號:0 0* * *-8-8* * * * * * * * 供應商電話:供應商電話: 010-8010-8* * * * * * * * 聯(lián)聯(lián) 系系 人:人:李李 東東 聯(lián)系電話:聯(lián)系電話:133133* * * * *09810981序號序號藥品藥品編碼編碼藥品名稱藥品名稱單單位位包包裝裝進價進價數(shù)量數(shù)量金額金額有效日期有效日期1 1050430504310%10%葡萄糖注射液葡萄糖注射液(250ml)(250ml)瓶瓶箱箱6.006.00100010006000.006000.002008.02.302008.02.302 20104101041阿莫西林膠囊阿莫西林膠囊(250mg(

11、250mg2424粒粒) )盒盒盒盒12.0012.001000100012000.0012000.002008.02.302008.02.303 30107601076阿昔洛韋片阿昔洛韋片(0.1g(0.1g30#)30#)盒盒盒盒22.0022.001001002200.002200.002008.04.302008.04.304 40105401054阿奇霉素片阿奇霉素片(250mg(250mg6 6粒粒) )盒盒盒盒30.0030.0050501500.001500.002008.04.302008.04.305 50301403014安宮黃體酮片安宮黃體酮片(2mg(2mg100#)

12、100#)盒盒盒盒15.0015.002002003000.003000.002009.06.302009.06.306 60902009020愛活膽通膠囊愛活膽通膠囊(100(100粒粒) )盒盒盒盒20.0020.002602605200.005200.002009.06.302009.06.307 705044050445%5%葡萄糖注射液葡萄糖注射液(250ml)(250ml)瓶瓶箱箱5.005.00100010005000.005000.002009.08.302009.08.308 80202302023安體舒通片安體舒通片(20mg(20mg100#)100#)盒盒盒盒120.0

13、0120.0050506000.006000.002010.08.302010.08.309 913034130348484消毒液消毒液(500ml)(500ml)瓶瓶箱箱8.008.00100100800.00800.002010.10.302010.10.3010100701007010安定片安定片(2.5mg(2.5mg100#)100#)瓶瓶瓶瓶150.00150.0020203000.003000.002010.10.302010.10.30 總金額:總金額:44700.00 44700.00 審核人:審核人:王王 中中 審核日期:審核日期:2007.12.01 2007.12.01

14、 一級規(guī)范要求一級規(guī)范要求: :p無組合項無組合項p無空白項無空白項p無重復項無重復項-8-第第3 3章章 應用實例技巧應用實例技巧表表3.1 3.1 一級規(guī)范的藥庫入庫單表一級規(guī)范的藥庫入庫單表入庫單入庫單編號編號省略省略1010個字段個字段 聯(lián)系聯(lián)系人人聯(lián)系電話聯(lián)系電話序序號號藥品藥品編碼編碼省略省略6 6個字段個字段金額金額26822682 李東李東133133* * * * *098109811 10504305043 6000.006000.0026822682 李東李東133133* * * * *098109812 20104101041 12000.0012000.002682

15、2682 李東李東133133* * * * *098109813 30107601076 2200.002200.0026822682 李東李東133133* * * * *098109814 40105401054 1500.001500.0026822682 李東李東133133* * * * *098109815 50301403014 3000.003000.0026822682 李東李東133133* * * * *098109816 60902009020 5200.005200.0026822682 李東李東133133* * * * *098109817 7050440504

16、4 5000.005000.0026822682 李東李東133133* * * * *098109818 80202302023 6000.006000.0026822682 李東李東133133* * * * *098109819 91303413034 800.00800.0026822682 李東李東133133* * * * *0981098110100701007010 3000.003000.00-9-第第3 3章章 應用實例技巧應用實例技巧二級規(guī)范要求在一級規(guī)范化后的二級規(guī)范要求在一級規(guī)范化后的表中不能存在部分依賴關(guān)系的屬表中不能存在部分依賴關(guān)系的屬性。性。在圖在圖3.4“3.

17、4“入庫單入庫單”表中,主鍵由表中,主鍵由“入庫單編號入庫單編號”和和“序號序號”兩個兩個屬性組成,而從屬性組成,而從“藥品編號藥品編號”到到“有效日期有效日期”8 8個屬性都只依賴于個屬性都只依賴于“序號序號”屬性。屬性。因此需要將這些屬性從因此需要將這些屬性從“入庫單入庫單”表中拆分出來,形成表中拆分出來,形成 “ “入庫單單入庫單單頭頭”和和“入庫單單目入庫單單目” ” 兩個表。兩個表。入 庫 單入 庫 單 編 號序 號入 庫 日 期入 庫 人 員供 應 商 名 稱聯(lián) 系 人聯(lián) 系 電 話供 應 商 電 話地 址郵 編供 應 商 開 戶 行供 應 商 銀 行 賬 號藥 品 編 碼藥 品

18、名 稱單 位包 裝進 價數(shù) 量金 額有 效 日 期總 金 額審 核 人審 核 日 期圖圖3.4 3.4 一級規(guī)范后的一級規(guī)范后的“入庫單入庫單”結(jié)構(gòu)結(jié)構(gòu)部分依賴部分依賴-10-第第3 3章章 應用實例技巧應用實例技巧1 :n入 庫 單 單 頭入 庫 單 編 號入 庫 日 期入 庫 人 員供 應 商 名 稱聯(lián) 系 人聯(lián) 系 電 話供 應 商 電 話地 址郵 編供 應 商 開 戶 行供 應 商 銀 行 賬 號總 金 額審 核 人審 核 日 期入 庫 單 單 目序 號藥 品 編 碼藥 品 名 稱單 位包 裝進 價數(shù) 量金 額有 效 日 期圖圖3.5 3.5 二級規(guī)范后的二級規(guī)范后的“入庫單入庫單”結(jié)

19、構(gòu)結(jié)構(gòu)入 庫 單入 庫 單 編 號序 號入 庫 日 期入 庫 人 員供 應 商 名 稱聯(lián) 系 人聯(lián) 系 電 話供 應 商 電 話地 址郵 編供 應 商 開 戶 行供 應 商 銀 行 賬 號藥 品 編 碼藥 品 名 稱單 位包 裝進 價數(shù) 量金 額有 效 日 期總 金 額審 核 人審 核 日 期部分依賴部分依賴-11-第第3 3章章 應用實例技巧應用實例技巧表表3.2 3.2 藥庫入庫單單頭表藥庫入庫單單頭表入入庫庫單單編編號號入庫入庫日期日期入入庫庫人人員員審審核核人人審核審核日期日期供應供應商名商名稱稱地地址址郵編郵編開開戶戶行行銀行銀行賬號賬號電話電話聯(lián)聯(lián)系系人人聯(lián)系聯(lián)系電話電話總金額總金

20、額268226822007.2007.11.3011.30李平李平 王中王中2007.2007.12.0112.01神州制神州制藥公司藥公司北京北京 100100* * * *工商工商銀行銀行0 0* * *- -8 8* * * * * * * *010-010-8 8* * * * * * * *李東李東133133* * * *0981098144700.0044700.00-12-第第3 3章章 應用實例技巧應用實例技巧表表3.3 3.3 藥庫入庫單單目表藥庫入庫單單目表序序號號入庫入庫單編單編號號藥品藥品編碼編碼藥品名稱藥品名稱單位單位 包裝包裝有效日期有效日期進價進價數(shù)量數(shù)量金額金

21、額1 126822682 0504305043 10%10%葡萄糖注射液葡萄糖注射液(250ml)(250ml)瓶瓶箱箱2008.02.302008.02.306.006.00 100010006000.006000.002 226822682 0104101041 阿莫西林膠囊阿莫西林膠囊(250mg(250mg2424粒粒) )盒盒盒盒2008.02.302008.02.3012.0012.00 10001000 12000.0012000.003 326822682 0107601076 阿昔洛韋片阿昔洛韋片(0.1g(0.1g30#)30#)盒盒盒盒2008.04.302008.04.

22、3022.0022.001001002200.002200.004 426822682 0105401054 阿奇霉素片阿奇霉素片(250mg(250mg6 6粒粒) )盒盒盒盒2008.04.302008.04.3030.0030.0050501500.001500.005 526822682 0301403014 安宮黃體酮片安宮黃體酮片(2mg(2mg100#)100#)盒盒盒盒2009.06.302009.06.3015.0015.002002003000.003000.006 626822682 0902009020 愛活膽通膠囊愛活膽通膠囊(100(100粒粒) )盒盒盒盒2009

23、.06.302009.06.3020.0020.002602605200.005200.007 726822682 0504405044 5%5%葡萄糖注射液葡萄糖注射液(250ml)(250ml)瓶瓶箱箱2009.08.302009.08.305.005.00 100010005000.005000.008 826822682 0202302023 安體舒通片安體舒通片(20mg(20mg100#)100#)盒盒盒盒2010.08.302010.08.30 120.00120.0050506000.006000.009 926822682 1303413034 8484消毒液消毒液(500m

24、l)(500ml)瓶瓶箱箱2010.10.302010.10.308.008.00100100800.00800.001010 26822682 0701007010 安定片安定片(2.5mg(2.5mg100#)100#)瓶瓶瓶瓶2010.10.302010.10.30 150.00150.0020203000.003000.00-13-第第3 3章章 應用實例技巧應用實例技巧1 :n入 庫 單 單 頭入 庫 單 編 號入 庫 日 期入 庫 人 員供 應 商 名 稱聯(lián) 系 人聯(lián) 系 電 話供 應 商 電 話地 址郵 編供 應 商 開 戶 行供 應 商 銀 行 賬 號總 金 額審 核 人審 核

25、 日 期入 庫 單 單 目序 號藥 品 編 碼藥 品 名 稱單 位包 裝進 價數(shù) 量金 額有 效 日 期圖圖3.5 3.5 二級規(guī)范后的二級規(guī)范后的“入庫單入庫單”結(jié)構(gòu)結(jié)構(gòu)傳遞傳遞傳遞傳遞-14-第第3 3章章 應用實例技巧應用實例技巧1 :nn :11 :n入庫單單頭入庫單編號入庫日期入庫人員總金額審核人審核日期入庫單單目序號進價數(shù)量有效日期藥品資料檔案藥品編號藥品名稱單位包裝供應商檔案供應商名稱聯(lián)系人聯(lián)系電話供應商電話地址郵編供應商開戶行供應商銀行賬號圖圖3.6 3.6 三級規(guī)范化后的三級規(guī)范化后的 “ “入庫單入庫單”結(jié)構(gòu)結(jié)構(gòu)-15-第第3 3章章 應用實例技巧應用實例技巧特殊關(guān)系特殊關(guān)

26、系v 當表自身和自己存在一對多關(guān)當表自身和自己存在一對多關(guān)系時,其一致性維護不能靠觸系時,其一致性維護不能靠觸發(fā)器機制實現(xiàn)。發(fā)器機制實現(xiàn)。v 對于存在一對一關(guān)系的兩個表對于存在一對一關(guān)系的兩個表可以合成一個表,但是當其中可以合成一個表,但是當其中的一個表出現(xiàn)大量的空數(shù)據(jù)時,的一個表出現(xiàn)大量的空數(shù)據(jù)時,使用兩個表能節(jié)約存儲空間。使用兩個表能節(jié)約存儲空間。v 對于存在多對多關(guān)系的兩個表,對于存在多對多關(guān)系的兩個表,可以通過引進一個中間表將其可以通過引進一個中間表將其分解成兩個一對多關(guān)系表。分解成兩個一對多關(guān)系表。 關(guān)系例子見圖。關(guān)系例子見圖。Relation_0課程課程名稱VA40學時N3學生學號

27、VA20姓名VA10班級VA10圖圖3.10A 3.10A 多對多關(guān)系模型多對多關(guān)系模型-16-第第3 3章章 應用實例技巧應用實例技巧STUDENT_No = STUDENT_NoCOURSE_Name = COURSE_NameCOURSECOURSE_NameVARCHAR2(40)COURSE_HoursNUMBER(3)STUDENTSTUDENT_NoVARCHAR2(20)STUDENT_NameVARCHAR2(10)STUDENT_ClassVARCHAR2(10)STCOURSESTUDENT_NoVARCHAR2(20)COURSE_NameVARCHAR2(40)Rel

28、ation_2Relation_1課 程課 程 名 稱VA40學 時N3學 生學 號VA20姓 名VA10班 級VA10學 生 選 課圖圖3.10B 3.10B 多對多關(guān)系模型多對多關(guān)系模型物理模型物理模型-17-第第3 3章章 應用實例技巧應用實例技巧系統(tǒng)界面系統(tǒng)界面 入入庫庫單單的的單單頭頭 入入庫庫單單的的單單目目 供供應應商商檔檔案案 藥藥品品資資料料檔檔案案 圖圖3.12 3.12 藥品入庫單錄入編輯藥品入庫單錄入編輯 -18-第第3 3章章 應用實例技巧應用實例技巧3.2 3.2 數(shù)據(jù)加鎖方法數(shù)據(jù)加鎖方法3.2.1 3.2.1 相關(guān)概念相關(guān)概念事務(wù)事務(wù) 是用戶定義的一組數(shù)據(jù)庫操作序

29、列,它是數(shù)據(jù)庫的邏輯工作單位。是用戶定義的一組數(shù)據(jù)庫操作序列,它是數(shù)據(jù)庫的邏輯工作單位。事務(wù)必須具有原子性、一致性、隔離性和持久性四個特性。事務(wù)必須具有原子性、一致性、隔離性和持久性四個特性。可串行化調(diào)度策略可串行化調(diào)度策略 讓沖突操作串行執(zhí)行,非沖突操作并行執(zhí)行。讓沖突操作串行執(zhí)行,非沖突操作并行執(zhí)行。鎖方式的基本思想鎖方式的基本思想 事務(wù)對任何數(shù)據(jù)的操作必須先申請該數(shù)據(jù)項的鎖,事務(wù)對任何數(shù)據(jù)的操作必須先申請該數(shù)據(jù)項的鎖,只有申請到鎖后,即加鎖成功后,才可以對數(shù)據(jù)項進行操作。操作結(jié)只有申請到鎖后,即加鎖成功后,才可以對數(shù)據(jù)項進行操作。操作結(jié)束后,要釋放已申請的鎖。束后,要釋放已申請的鎖。兩段

30、鎖協(xié)議(兩段鎖協(xié)議(2PL2PL協(xié)議)協(xié)議) 其基本思想是,任何事務(wù)對數(shù)據(jù)項的操作之其基本思想是,任何事務(wù)對數(shù)據(jù)項的操作之前先加鎖,加鎖的原則是事務(wù)中的全部加鎖操作在第一個解鎖操作之前先加鎖,加鎖的原則是事務(wù)中的全部加鎖操作在第一個解鎖操作之前完成,即加鎖和解鎖操作分布在事務(wù)中的兩個階段。兩段鎖協(xié)議保前完成,即加鎖和解鎖操作分布在事務(wù)中的兩個階段。兩段鎖協(xié)議保證了并發(fā)調(diào)度的可串行化。證了并發(fā)調(diào)度的可串行化。-19-第第3 3章章 應用實例技巧應用實例技巧3.2.2 3.2.2 問題提出問題提出 信息系統(tǒng)的并發(fā)事務(wù)導致數(shù)據(jù)庫死鎖的主要原因是兩個或多個進程信息系統(tǒng)的并發(fā)事務(wù)導致數(shù)據(jù)庫死鎖的主要原因

31、是兩個或多個進程長時間段內(nèi)搶占同一數(shù)據(jù)資源,或者是兩個進程在搶占對方已經(jīng)占用長時間段內(nèi)搶占同一數(shù)據(jù)資源,或者是兩個進程在搶占對方已經(jīng)占用的數(shù)據(jù)資源,而這一現(xiàn)象并非因為進程需要處理的事務(wù)非常復雜、耗的數(shù)據(jù)資源,而這一現(xiàn)象并非因為進程需要處理的事務(wù)非常復雜、耗時過長所致,相反常常是因為信息系統(tǒng)前端應用程序的加鎖機制不當時過長所致,相反常常是因為信息系統(tǒng)前端應用程序的加鎖機制不當所引起的。所引起的。 3.2.3 3.2.3 三種加鎖方法三種加鎖方法連續(xù)申請資源法連續(xù)申請資源法 連續(xù)申請資源法連續(xù)申請資源法是當申請不到數(shù)據(jù)鎖時持續(xù)等待申請數(shù)據(jù)鎖的數(shù)據(jù)是當申請不到數(shù)據(jù)鎖時持續(xù)等待申請數(shù)據(jù)鎖的數(shù)據(jù)加鎖方法

32、。加鎖方法。該方法的基本思想是在出現(xiàn)鎖等待時并不夭折本事務(wù),而該方法的基本思想是在出現(xiàn)鎖等待時并不夭折本事務(wù),而是繼續(xù)不間斷地申請表數(shù)據(jù)資源的鎖,直到申請成功為止。是繼續(xù)不間斷地申請表數(shù)據(jù)資源的鎖,直到申請成功為止。 按標識符排序法按標識符排序法 按標識符排序加鎖法按標識符排序加鎖法是對所操作的所有數(shù)據(jù)先按照數(shù)據(jù)標識符進行是對所操作的所有數(shù)據(jù)先按照數(shù)據(jù)標識符進行排序,然后再依次申請鎖的方法。排序,然后再依次申請鎖的方法。隨機等待法隨機等待法 隨機等待加鎖法隨機等待加鎖法是對申請鎖失敗后夭折本次加鎖過程,然后等待一是對申請鎖失敗后夭折本次加鎖過程,然后等待一個隨機時間后重新啟動加鎖過程的方法。個

33、隨機時間后重新啟動加鎖過程的方法。 -20-第第3 3章章 應用實例技巧應用實例技巧3.2.4 3.2.4 混合加鎖法混合加鎖法混合加鎖法混合加鎖法將按標識符排序加鎖法和隨機等待加鎖法結(jié)合應用的一將按標識符排序加鎖法和隨機等待加鎖法結(jié)合應用的一種加鎖方法。種加鎖方法。/*boolean f_TablesLock(string tables)成功返回成功返回FALSE, 否則返回否則返回TRUE*/integer li_retf_SortTables(tables) /按標識符(數(shù)據(jù)庫表)排序按標識符(數(shù)據(jù)庫表)排序AGAIN:/進行一定次數(shù)加鎖后檢測進行一定次數(shù)加鎖后檢測IF f_tables

34、lock_nowait(tables) THEN /加鎖失敗加鎖失敗 IF MessageBox(提示信息提示信息,繼續(xù)加鎖嗎繼續(xù)加鎖嗎?,YesNo!,1) = 1 THEN GOTO AGAIN /開始新的一輪加鎖過程開始新的一輪加鎖過程 ELSE RETURN TRUE END IFEND IFRETURN FALSE /加鎖成功加鎖成功-21-第第3 3章章 應用實例技巧應用實例技巧3.3 3.3 回滾與提示回滾與提示3.3.1 3.3.1 事務(wù)劃分事務(wù)劃分事務(wù)是一個對數(shù)據(jù)庫的存取操作序列,是數(shù)據(jù)庫應用程序的基本邏輯事務(wù)是一個對數(shù)據(jù)庫的存取操作序列,是數(shù)據(jù)庫應用程序的基本邏輯單元。單元

35、。任何一個應用可以通過若干個事務(wù)來完成,而最終劃分為多少個事務(wù)任何一個應用可以通過若干個事務(wù)來完成,而最終劃分為多少個事務(wù)應根據(jù)業(yè)務(wù)的具體情況而定。應根據(jù)業(yè)務(wù)的具體情況而定。編程人員可以顯式地定義事務(wù)的開始和結(jié)束。一個事務(wù)主體可以是一編程人員可以顯式地定義事務(wù)的開始和結(jié)束。一個事務(wù)主體可以是一條條SQLSQL語句、一組語句、一組SQLSQL語句或者整個應用程序。語句或者整個應用程序。在編程人員沒有顯式的定義事務(wù)的情況下,則由數(shù)據(jù)庫管理系統(tǒng)按照在編程人員沒有顯式的定義事務(wù)的情況下,則由數(shù)據(jù)庫管理系統(tǒng)按照缺省規(guī)定自動劃分事務(wù)。缺省規(guī)定自動劃分事務(wù)。3.3.2 3.3.2 事務(wù)恢復事務(wù)恢復數(shù)據(jù)庫的恢

36、復是通過建立冗余數(shù)據(jù),然后利用這些冗余數(shù)據(jù)將數(shù)據(jù)庫數(shù)據(jù)庫的恢復是通過建立冗余數(shù)據(jù),然后利用這些冗余數(shù)據(jù)將數(shù)據(jù)庫中被破壞或不正確的數(shù)據(jù)恢復到障前的某個一致性狀態(tài)。中被破壞或不正確的數(shù)據(jù)恢復到障前的某個一致性狀態(tài)。建立冗余數(shù)據(jù)最常用的技術(shù)是數(shù)據(jù)轉(zhuǎn)儲或日志文件。建立冗余數(shù)據(jù)最常用的技術(shù)是數(shù)據(jù)轉(zhuǎn)儲或日志文件。數(shù)據(jù)轉(zhuǎn)儲數(shù)據(jù)轉(zhuǎn)儲是定期將數(shù)據(jù)庫復制到另一存儲介質(zhì)上保存起來的過程。是定期將數(shù)據(jù)庫復制到另一存儲介質(zhì)上保存起來的過程。日志文件日志文件是用來記錄事務(wù)對數(shù)據(jù)庫更新的操作。是用來記錄事務(wù)對數(shù)據(jù)庫更新的操作。-22-第第3 3章章 應用實例技巧應用實例技巧3.3.3 3.3.3 事務(wù)與交互式操作事務(wù)與交互

37、式操作IF SQLCA.SQLCode = 0 THEN COMMIT; MessageBox( 提示信息提示信息,操作成功!操作成功!);ELSE ROLLBACK; MessageBox( 錯誤信息錯誤信息,操作失敗!操作失敗!);END IF 容易死鎖容易死鎖IF SQLCA.SQLCode = 0 THEN MessageBox( 提示信息提示信息,操作成功!操作成功!); COMMIT;ELSE MessageBox( 錯誤信息錯誤信息,操作失?。〔僮魇。?; ROLLBACK; END IF 改改 進進-23-第第3 3章章 應用實例技巧應用實例技巧3.4 3.4 游標模板游標模

38、板游標由查詢結(jié)果集和結(jié)果集中指向特定記錄的指針組成。游標由查詢結(jié)果集和結(jié)果集中指向特定記錄的指針組成。游標可以從含有多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄。游標可以從含有多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄。游標還提供對其指向的數(shù)據(jù)進行刪除或更新功能。游標還提供對其指向的數(shù)據(jù)進行刪除或更新功能。游標的使用游標的使用v 在使用游標時,先要對其聲明,并定義游標中的查詢結(jié)構(gòu)。在使用游標時,先要對其聲明,并定義游標中的查詢結(jié)構(gòu)。v 再打開游標,這時游標聲明中的再打開游標,這時游標聲明中的SQLSQL查詢語句被執(zhí)行,游標指針指查詢語句被執(zhí)行,游標指針指向該查詢結(jié)果集的第一條記錄。向該查詢結(jié)果集的第一條

39、記錄。v 然后通過然后通過FETCHFETCH語句提取結(jié)果集中的一條記錄。每一次執(zhí)行語句提取結(jié)果集中的一條記錄。每一次執(zhí)行FETCHFETCH語句后,游標的指針將自動指向結(jié)果集的下一條記錄,并將當前語句后,游標的指針將自動指向結(jié)果集的下一條記錄,并將當前的數(shù)據(jù)讀入到變量中。的數(shù)據(jù)讀入到變量中。FETCHFETCH語句中變量的數(shù)量和數(shù)據(jù)類型必須與語句中變量的數(shù)量和數(shù)據(jù)類型必須與查詢語句列的數(shù)量和數(shù)據(jù)類型一致。查詢語句列的數(shù)量和數(shù)據(jù)類型一致。v 最后,當數(shù)據(jù)結(jié)果集中的所有數(shù)據(jù)處理完后,應該關(guān)閉游標。最后,當數(shù)據(jù)結(jié)果集中的所有數(shù)據(jù)處理完后,應該關(guān)閉游標。關(guān)閉游標后,所有與其相關(guān)的資源將被釋放。對于關(guān)

40、閉的游標可以再關(guān)閉游標后,所有與其相關(guān)的資源將被釋放。對于關(guān)閉的游標可以再次通過次通過OPENOPEN語句打開。語句打開。打開的游標在未關(guān)閉之前,事務(wù)不能執(zhí)行打開的游標在未關(guān)閉之前,事務(wù)不能執(zhí)行COMMITCOMMIT或或ROLLBACKROLLBACK語句,因語句,因為該語句可使打開游標為該語句可使打開游標OPENOPEN語句失效。語句失效。 -24-第第3 3章章 應用實例技巧應用實例技巧DECLARE C_Example CURSOR FOR ; /聲明游標聲明游標OPEN C_Example; /打開游標打開游標/打開游標錯誤判別,如果出錯返回打開游標錯誤判別,如果出錯返回-1IF f

41、_Report_DBError() THEN RETURN -1DO WHILE TRUE /將結(jié)果集中的數(shù)據(jù)放入變量列表中,并推進游標指針下移將結(jié)果集中的數(shù)據(jù)放入變量列表中,并推進游標指針下移 FETCH C_Example INTO ; /利用利用SQLCode中的狀態(tài)信息決定何時退出循環(huán)中的狀態(tài)信息決定何時退出循環(huán) /當當SQLCode=-1時,操作錯誤;當時,操作錯誤;當SQLCode=100時,已取到結(jié)果集的末尾時,已取到結(jié)果集的末尾 IF SQLCA.SQLCode 0 THEN EXIT IF SQLCA.SQLCode 0 THEN EXITLOOPIF f_Report_DB

42、Error() THEN /如果出錯,關(guān)閉游標并回滾事務(wù)如果出錯,關(guān)閉游標并回滾事務(wù) CLOSE C_Example; ROLLBACK; RETURN -1END IFCLOSE C_Example; /正常情況,關(guān)閉游標并提交事務(wù)正常情況,關(guān)閉游標并提交事務(wù)COMMIT; -25-第第3 3章章 應用實例技巧應用實例技巧3.5 3.5 通知發(fā)布通知發(fā)布 通知發(fā)布通知發(fā)布是通是通過信息系統(tǒng)向用戶過信息系統(tǒng)向用戶傳達必要的信息和傳達必要的信息和執(zhí)行相應功能的過執(zhí)行相應功能的過程。程。通知發(fā)布的功通知發(fā)布的功能主要實現(xiàn)兩個應能主要實現(xiàn)兩個應用目的:監(jiān)控系統(tǒng)用目的:監(jiān)控系統(tǒng)當前的所有在線用當前的所

43、有在線用戶和向用戶發(fā)布信戶和向用戶發(fā)布信息息 。數(shù)據(jù)庫表設(shè)計數(shù)據(jù)庫表設(shè)計在線用戶進程號N10用戶標識VA20用戶名稱VA20機器號VA100計算機名VA100組名VA100IP地址VA16最后刷新時間DT版本VA20狀態(tài)VA10已收通知編號VA250記錄日期DT備注VA250標記N1通知檔案編號N10類型VA10標題VA40內(nèi)容VA2000起始時間DT終止時間DT發(fā)布次數(shù)N2停機延遲時間N2狀態(tài)VA10位置碼N9發(fā)布人VA20發(fā)布時間DT備注VA250標記N1-26-第第3 3章章 應用實例技巧應用實例技巧記錄用戶登錄信息記錄用戶登錄信息 每個信息系統(tǒng)用戶登錄信息系統(tǒng)時,信息系統(tǒng)都要記錄包括用

44、戶的每個信息系統(tǒng)用戶登錄信息系統(tǒng)時,信息系統(tǒng)都要記錄包括用戶的標識、用戶名稱、用戶進程號、登錄時間、用戶狀態(tài)等信息。標識、用戶名稱、用戶進程號、登錄時間、用戶狀態(tài)等信息。刪除用戶信息刪除用戶信息 每個信息系統(tǒng)用戶退出信息系統(tǒng)時,信息系統(tǒng)都要刪除該用戶相應每個信息系統(tǒng)用戶退出信息系統(tǒng)時,信息系統(tǒng)都要刪除該用戶相應的登錄記錄。的登錄記錄。通知發(fā)布模塊通知發(fā)布模塊 v 對于對于“一般通知一般通知”類型的通知,當用戶進入系統(tǒng)時,對于設(shè)定好類型的通知,當用戶進入系統(tǒng)時,對于設(shè)定好的通知,即狀態(tài)為的通知,即狀態(tài)為“已發(fā)布已發(fā)布”的通知,通知將逐個顯示后方可進的通知,通知將逐個顯示后方可進入系統(tǒng)。如果用戶進

45、入后再設(shè)定好的通知,用戶將在一定的時間入系統(tǒng)。如果用戶進入后再設(shè)定好的通知,用戶將在一定的時間間隔內(nèi)(目前設(shè)置時長為間隔內(nèi)(目前設(shè)置時長為1 1分鐘)才能看到通知的內(nèi)容。分鐘)才能看到通知的內(nèi)容。v 對于對于“暫停通知暫停通知”類型的通知,除發(fā)布該通知的用戶外,其他用類型的通知,除發(fā)布該通知的用戶外,其他用戶將無法進入系統(tǒng),在發(fā)布該通知前進入的用戶也將必須退出。戶將無法進入系統(tǒng),在發(fā)布該通知前進入的用戶也將必須退出。無論哪種情況進入系統(tǒng)的用戶,將接收到如圖無論哪種情況進入系統(tǒng)的用戶,將接收到如圖3.143.14所示(見書所示(見書P89 P89 )的界面,要么等待通知撤銷后自動進入系統(tǒng),要么直接退)的界面,要么等待

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論