版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
IXX大學(xué)畢業(yè)論文(設(shè)計(jì))基于SQL語言的事務(wù)管理BusinessmanagementbasedontheSQLlanguage當(dāng)前各種各樣的數(shù)據(jù)庫進(jìn)行高效有序的管理。本論文將著重介紹利用SQL語言對數(shù)據(jù)庫進(jìn)行事務(wù)管理,具體包含了以下四部分:第一部分是關(guān)于SQL的簡介,包括SQL的歷史以及它的主要特點(diǎn)和組成;第二部分簡單介紹了數(shù)據(jù)庫,包括了創(chuàng)建相關(guān)的數(shù)據(jù)庫及數(shù)據(jù)庫表;第三部分是關(guān)于事務(wù)管理的介紹,包括了Transact-SQL編程基礎(chǔ)、事務(wù)管理、存儲過程及觸發(fā)器。第四部分是一個(gè)綜合應(yīng)用舉例,即圖書館信息化管理?!娟P(guān)鍵詞】SQL;數(shù)據(jù)庫;事務(wù)管理
[Abstract]TheSQLlanguageiscurrentlyapopulardatabasequerylanguage,avarietyofdatabasescanbemanagementedbybusinessmanagementefficientlyandorderly.ThispaperwillfocusonthebusinessmanagementusingSQLlanguage,specificallyincludesthefollowingfourparts:ThefirstpartisanintroductionofSQL,includingSQL'shistoryanditsmaincharacteristicsandcomposition;
Thesecondpartdescribesthedatabase,includingcreatingarelationaldatabaseanddatabasetables;
Thethirdpartisaboutthemanagementpresentation,includingthebasicprogrammingofTransact-SQL,businessmanagement,storedproceduresandtriggers;Thefourthpartisanexampleofcomprehensiveapplication,namelythelibraryinformationmanagement.[Keywords]SQL;database;businessmanagement
目錄導(dǎo)言 11.SQL的簡介 21.1SQL的歷史 21.2SQL的主要特點(diǎn)和組成 22.數(shù)據(jù)庫 42.1創(chuàng)建數(shù)據(jù)庫 42.2創(chuàng)建數(shù)據(jù)庫表 52.2.1創(chuàng)建“讀者信息”表 52.2.2創(chuàng)建“圖書信息”表 63.事務(wù)管理 73.1事務(wù)管理簡介 73.1.1函數(shù) 73.1.2流程控制語句 73.1.3GoTo語句 83.1.4Return語句 83.1.5打印輸出語句 83.1.6注釋語句 83.1.7事務(wù)管理 93.2存儲過程 93.2.1創(chuàng)建存儲過程 103.2.2查看存儲過程 103.2.3修改存儲過程 113.2.4運(yùn)行存儲過程 113.2.5刪除存儲過程 113.3觸發(fā)器 123.3.1創(chuàng)建觸發(fā)器 123.3.2查看觸發(fā)器 133.3.3修改觸發(fā)器 133.3.4運(yùn)行觸發(fā)器 133.3.5刪除觸發(fā)器 144.圖書館信息化管理系統(tǒng) 154.1圖書館信息化管理 154.2圖書館管理系統(tǒng)需求分析 154.3圖書館管理系統(tǒng)數(shù)據(jù)庫分析 164.4系統(tǒng)流程 174.5數(shù)據(jù)庫設(shè)計(jì) 184.6程序開發(fā) 184.7系統(tǒng)發(fā)布 224.8系統(tǒng)擴(kuò)展 22致謝 24參考文獻(xiàn) 25導(dǎo)言在人類邁向21世紀(jì)知識經(jīng)濟(jì)時(shí)代的時(shí)候,信息變?yōu)榻?jīng)濟(jì)發(fā)展的戰(zhàn)略資源,信息技術(shù)已經(jīng)成為社會生產(chǎn)力中重要的組成部分。人們充分認(rèn)識到,數(shù)據(jù)庫是信息化社會中信息資源管理與開發(fā)的基礎(chǔ)。近年來,數(shù)據(jù)庫的研究與推廣使用已經(jīng)深入到的社會生活中的各個(gè)領(lǐng)域,而SQL語言作為數(shù)據(jù)庫的一種標(biāo)準(zhǔn)化語言也正在發(fā)揮著更加重要的作用。利用SQL語言進(jìn)行事務(wù)管理,前人的研究已經(jīng)很多,大多對SQL語言進(jìn)行復(fù)雜地編程處理,隨著計(jì)算機(jī)學(xué)科飛速地向前發(fā)展,新的研究成果、新的實(shí)用軟件不斷涌現(xiàn)與更新,相關(guān)的研究也應(yīng)與時(shí)俱進(jìn)。鑒于此,在本文的內(nèi)容編排上,除了介紹數(shù)據(jù)庫的基本理論外,還摒棄了一些過時(shí)的內(nèi)容和產(chǎn)品,力求反映數(shù)據(jù)庫技術(shù)方面的一些較新的成果,利用SQLServer結(jié)合一個(gè)經(jīng)典的案例“圖書館管理系統(tǒng)”進(jìn)行較為系統(tǒng)的事務(wù)管理。
1.SQL的簡介1.1SQL的歷史結(jié)構(gòu)化查詢語言簡稱為SQL(StructuredQueryLanguage),是由IBM實(shí)驗(yàn)室的Boyce和Chamberlin開發(fā)的。1974年,IBM的RayBoyce和DonChamberlin將Codd關(guān)系數(shù)據(jù)庫的12條準(zhǔn)則的數(shù)據(jù)定義以簡單的關(guān)鍵字語法表現(xiàn)出來,里程碑式地提出了SQL語言。SQL語言的功能包括查詢、操縱、定義和控制,是一個(gè)綜合的、通用的關(guān)系數(shù)據(jù)庫語言;同時(shí)又是一種高度非過程化的語言,只要求用戶指出做什么而不需要指出怎樣做。在SQL語言產(chǎn)生之前,所有的查詢語言都是由不同的數(shù)據(jù)庫管理系統(tǒng)自己實(shí)現(xiàn)的。SQL集成實(shí)現(xiàn)了數(shù)據(jù)庫生命周期中的全部操作,自產(chǎn)生之日起,SQL語言便成了檢驗(yàn)關(guān)系數(shù)據(jù)庫的試金石,而SQL語言標(biāo)準(zhǔn)的每一次變更都引導(dǎo)者關(guān)系數(shù)據(jù)庫產(chǎn)品的發(fā)展方向。在SQL語言取得進(jìn)展的同時(shí),IBM研究中心于1973年開始著手SystemR項(xiàng)目。其目標(biāo)是論證一個(gè)全功能關(guān)系DBMS的可行性。該項(xiàng)目結(jié)束于1979年,完成了第一個(gè)實(shí)現(xiàn)SQL的DBMS。1986年10月,美國國家標(biāo)準(zhǔn)局ANSI(AmericanNationalStandardInstitute)的數(shù)據(jù)委員會X3H2把SQL批準(zhǔn)為關(guān)系型數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn),并公布了標(biāo)準(zhǔn)文本——ANSISQL-86,同年公布了標(biāo)準(zhǔn)SQL文本。1987年,國際標(biāo)準(zhǔn)化組織ISO(InternationalStandardOrganization)也通過了該標(biāo)準(zhǔn)[1]。目前SQL標(biāo)準(zhǔn)有3個(gè)版本?;維QL定義是ANSIX3135-89,“DatabaseLanguage-SQLwithIntegrityEnhancement”[ANSI89],一般叫做SQL-89。SQL-89定義了模式定義、數(shù)據(jù)操作和事務(wù)處理。SQL-89和隨后的ANSIX3168-1989,“DatabaseLanguage-EmbeddedSQL”構(gòu)成了第一代SQL標(biāo)準(zhǔn)。ANSIX3135-1992[ANSI92]描述了一種增強(qiáng)功能的SQL,叫做SQL-92標(biāo)準(zhǔn)。SQL-92包括模式操作,動態(tài)創(chuàng)建和SQL語句動態(tài)執(zhí)行、網(wǎng)絡(luò)環(huán)境支持等增強(qiáng)特性。在完成SQL-92標(biāo)準(zhǔn)后,ANSI和ISO即開始合作SQL3標(biāo)準(zhǔn)。SQL3的主要特點(diǎn)在于抽象數(shù)據(jù)類型的支持,為新一代對象關(guān)心數(shù)據(jù)庫提供了標(biāo)準(zhǔn)。SQL語言簡潔,功能豐富,很快被許多數(shù)據(jù)庫廠商采用,經(jīng)過不斷修改完善,SQL最將成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL成為國際標(biāo)準(zhǔn)后,它在數(shù)據(jù)庫以外的領(lǐng)域也受到了重視,在許多領(lǐng)域,不僅把SQL作為數(shù)據(jù)檢索的語言規(guī)范,還把它作為圖形、聲音等信息類型檢索的語言規(guī)范。SQL已經(jīng)成為并將在今后相當(dāng)長時(shí)間里,繼續(xù)成為數(shù)據(jù)庫領(lǐng)域以致信息領(lǐng)域的主流語言。1.2SQL的主要特點(diǎn)和組成SQL是一種非過程化、面向集合的數(shù)據(jù)庫語言。所謂非過程化,就是只要向系統(tǒng)說明需要做什么,希望得到的結(jié)果是什么即可,而不需要列出實(shí)現(xiàn)目標(biāo)的詳細(xì)過程。例如,在教學(xué)管理系統(tǒng)中,如果希望檢索出課程為公共課或?qū)W時(shí)不小于48學(xué)時(shí)的課程,使用SQL表述為:Select課程名,學(xué)時(shí),類別From課程一覽 Where類別=“公共課”or學(xué)時(shí)>=48即只要表示為:從“課程一覽”表中找出課程類別是公共課或課程學(xué)時(shí)不小于48的課程的課程名、學(xué)時(shí)、類別,不需要寫明如何查找到就能得到結(jié)果。如果使用傳統(tǒng)的高級語言,實(shí)現(xiàn)這樣一個(gè)功能,需要編寫一段程序,采用某種檢索算法,詳細(xì)描述出查找的過程。這就是SQL不同于那些面向過程的高級語言的地方,因此它是非過程化的語言。面向集合的特點(diǎn)是指SQL的運(yùn)算參數(shù)和結(jié)果都是集合形式——表。例如,上例中查詢操作的參數(shù)是“課程一覽”表;結(jié)果是由課程名、學(xué)時(shí)、類別三列數(shù)據(jù)組成的,包括多行數(shù)據(jù)的表。SQL語句的主要內(nèi)容正如它的名字——結(jié)構(gòu)化查詢語言,最核心的語句是實(shí)現(xiàn)查詢功能的select語句。但SQL的功能不僅限于完成查詢操作,還包括數(shù)據(jù)定義、數(shù)據(jù)操作及數(shù)據(jù)控制方面的功能。每一個(gè)語句有一個(gè)主要?jiǎng)釉~,SQL語句的核心動詞有9個(gè),詳見下表[2]:SQL語句的9個(gè)核心動詞功能分類動詞含義數(shù)據(jù)定義Create創(chuàng)建對象Alter修改對象Drop刪除對象數(shù)據(jù)查詢Select檢索數(shù)據(jù)數(shù)據(jù)操縱Insert添加數(shù)據(jù)Update更新數(shù)據(jù)Delete刪除數(shù)據(jù)數(shù)據(jù)控制Grant授予用戶權(quán)限Remoke刪除用戶數(shù)據(jù)SQL雖然具有國際標(biāo)準(zhǔn),但各數(shù)據(jù)庫廠商在自己的數(shù)據(jù)庫產(chǎn)品上,都有各自的實(shí)現(xiàn)版本,每種SQL版本都有自己的擴(kuò)充。例如,大型數(shù)據(jù)庫管理系統(tǒng)Oracle使用的是PL/SQL,適用于Oracle的所有版本。它是由標(biāo)準(zhǔn)SQL和一組能夠根據(jù)不同條件控制SQL語句執(zhí)行的命令組成。再如Transact-SQL是Sybase和MicrosoftSQLServer的大多數(shù)功能,而且對語言做了一些擴(kuò)充,加入了流程控制語句,局部變量等功能,可以執(zhí)行更為復(fù)雜的語句。
2.數(shù)據(jù)庫2.1創(chuàng)建數(shù)據(jù)庫一個(gè)數(shù)據(jù)庫中的文件個(gè)數(shù)很多,從安全考慮,通常將文件創(chuàng)建在不同的磁盤驅(qū)動器上,如有條件,應(yīng)將數(shù)據(jù)文件和日志文件放在不同的計(jì)算機(jī)中。為了便于管理和組織數(shù)據(jù),可以將文件保存在不同的文件組中。每一個(gè)數(shù)據(jù)庫中至少包含一個(gè)主文件組,用戶還可以自己定義文件組。在T-SQL中使用createdatabase命令建立數(shù)據(jù)庫。其語法形式如下。Createdatabase數(shù)據(jù)庫名[onprimary(name=…,filename=…,size=…,maxsize=…,filegrowth=…)…Logon(name=…,filename=…,size=…,maxsize=…,filegrowth=…)…Filegroup文件組名]相關(guān)參數(shù)如下:On表示將定義數(shù)據(jù)文件;Primary用來指定主文件。如果沒有指定primary關(guān)鍵字,則命令中出現(xiàn)的第一個(gè)文件將成為主文件。Name定義文件邏輯名,是創(chuàng)建數(shù)據(jù)庫后在T-SQL語句中引用文件時(shí)使用的文件名。Filename定義文件物理名,是在物理存儲時(shí)使用的文件名,其參數(shù)需要注明文件的存儲路徑,并用單引號括起。Size指定文件的初始大小,默認(rèn)以兆(MB)為單位,使用兆字節(jié)作單位時(shí),參數(shù)的單位可以省略。Maxsize指定文件可以增長的最終大小,仍然以兆字節(jié)為默認(rèn)單位,使用兆作單位時(shí),參數(shù)的單位同樣可以省略。Filegrowth指定文件由初始大小到最終大小每次增加的增長幅度??梢允褂冒俜直葏?shù),也可以直接指定增長的絕對值。使用絕對值方式時(shí),數(shù)值單位的用法同size的用法。Filegroup指定該文件所屬的文件組。Logon表示將定義日志文件。下面是使用createdatabase命令建立數(shù)據(jù)庫的示例。(注:以下所有的示例都是在SQL-Server2000的查詢分析器中實(shí)現(xiàn)的。)創(chuàng)建圖書館管理系統(tǒng)數(shù)據(jù)庫LibDb。分析:根據(jù)數(shù)據(jù)庫設(shè)計(jì)中物理設(shè)計(jì)階段的結(jié)果,數(shù)據(jù)庫文件保存在c:\sql目錄下,從安全考慮,日志文件應(yīng)與數(shù)據(jù)文件保存在不同的磁盤下,這里選擇存儲在d:\sql目錄下。創(chuàng)建數(shù)據(jù)庫LibDb的命令及運(yùn)行結(jié)果如圖2-1所示。圖2-1創(chuàng)建數(shù)據(jù)庫2.2創(chuàng)建數(shù)據(jù)庫表創(chuàng)建數(shù)據(jù)庫表,就是將數(shù)據(jù)庫設(shè)計(jì)中邏輯設(shè)計(jì)階段得到的關(guān)系模式用DBMS所支持的形式表達(dá)出來。每一個(gè)關(guān)系模式就是一張數(shù)據(jù)庫表,或稱為數(shù)據(jù)表。創(chuàng)建數(shù)據(jù)庫表,可以理解為定義這張表的“表頭”——如何命名每一列及每一列的屬性特點(diǎn)是什么。T-SQL中創(chuàng)建數(shù)據(jù)庫表的指令格式為:Createtable表名(列名1數(shù)據(jù)類型{identity|notnull|null},列名2數(shù)據(jù)類型{identity|notnull|null},…)其中大括號內(nèi)的三個(gè)參數(shù)的含義分別為:Null表示該列的值可以為空值,空值意味著沒有存儲任何數(shù)據(jù)。這是默認(rèn)參數(shù),當(dāng)所定義的列允許為空值時(shí),參數(shù)null可以省略。Notnull表示該列的值不能為空值。Identity稱為計(jì)數(shù)器,表示該列的值是一組遞增的整數(shù)數(shù)據(jù)。初始值默認(rèn)為1,增長步長默認(rèn)為1。用戶也可以自己指定初始值和增長步長。2.2.1創(chuàng)建“讀者信息”表“讀者信息”表是用來保存讀者的各種信息的數(shù)據(jù)庫表,它應(yīng)具備的基本信息包括讀者的姓名、性別、出生日期、有效證件、聯(lián)系方式以及相關(guān)的登記日期、有限期至、圖書期刊借閱情況等等。創(chuàng)建“讀者信息”數(shù)據(jù)庫表的命令及運(yùn)行結(jié)果如圖2-2所示。2.2.2創(chuàng)建“圖書信息”表“圖書信息”表是用來保存圖書信息的數(shù)據(jù)庫表,它應(yīng)具備的基本信息包括書名、作者、譯者、ISBN、出版社、價(jià)格以及庫存總量、入庫時(shí)間、書架名稱、借出情況等等。創(chuàng)建“圖書信息”數(shù)據(jù)庫表的命令及運(yùn)行結(jié)果如圖2-3所示。圖2-2創(chuàng)建讀者信息表圖2-3創(chuàng)建圖書信息表
3.事務(wù)管理3.1事務(wù)管理簡介SQLServer把單個(gè)工作單元稱為事務(wù)。任何單個(gè)SQL語句都可以看成一個(gè)單個(gè)工作單元,不管其影響一個(gè)表的單行還是多行。利用存儲過程、觸發(fā)器可以進(jìn)行事務(wù)管理。本章介紹如何利用Transact-SQL來編程,存儲過程、觸發(fā)器的概念、實(shí)現(xiàn)和管理,以及如何利用存儲過程、觸發(fā)器進(jìn)行事務(wù)管理。3.1.1函數(shù)SQLServer中最常用的函數(shù)包括字符串函數(shù)、日期和時(shí)間函數(shù)、數(shù)學(xué)函數(shù)、轉(zhuǎn)換函數(shù)、系統(tǒng)函數(shù)和用戶自定義函數(shù)。字符串函數(shù)可以對二進(jìn)制數(shù)據(jù)、字符串和表達(dá)式執(zhí)行不同的運(yùn)算,大多數(shù)字符串函數(shù)只能用于char和varbinary數(shù)據(jù)類型。此外,某些字符串函數(shù)還能夠處理text、ntext、image數(shù)據(jù)類型的數(shù)據(jù)。日期和時(shí)間函數(shù)用于對日期和時(shí)間數(shù)據(jù)進(jìn)行各種不同的處理和運(yùn)算,并返回一個(gè)字符串、數(shù)字值或日期和時(shí)間值。數(shù)學(xué)函數(shù)用于對數(shù)字表達(dá)式進(jìn)行數(shù)學(xué)運(yùn)算并返回運(yùn)算結(jié)果。數(shù)學(xué)函數(shù)可以對SQLServer提供的數(shù)字?jǐn)?shù)據(jù)(decimal、integer、float、real、money、smallmoney、smallint和tinyint)進(jìn)行處理。轉(zhuǎn)換函數(shù)包括convert和cast。一般情況下,SQLServer會自動處理某些數(shù)據(jù)類型的轉(zhuǎn)換。例如,如果比較char和datetime表達(dá)式、smallint和int表達(dá)式、或不同長度的char表達(dá)式,SQLServer可以將它們自動轉(zhuǎn)換,這種轉(zhuǎn)換稱為隱性轉(zhuǎn)換。但是,無法由SQLServer自動轉(zhuǎn)換的或者是SQLServer自動轉(zhuǎn)換的結(jié)果不符合預(yù)期結(jié)果的,就需要使用轉(zhuǎn)換函數(shù)進(jìn)行顯式轉(zhuǎn)換[3]。系統(tǒng)函數(shù)用于返回有關(guān)SQLServer系統(tǒng)、用戶、數(shù)據(jù)庫和數(shù)據(jù)庫對象的信息。系統(tǒng)函數(shù)可以讓用戶在得到信息后,使用條件語句,根據(jù)返回的信息進(jìn)行不同的操作。與其他函數(shù)一樣,可以在select語句的select和where子句以及表達(dá)式中使用系統(tǒng)函數(shù)。聚合函數(shù)可以返回所有列、幾個(gè)列或者一個(gè)列的匯總數(shù)據(jù),它常用來計(jì)算select語句查詢的統(tǒng)計(jì)值。聚合函數(shù)經(jīng)常與select語句的groupby子句一同使用。SQLServer中允許用戶自己定義函數(shù),稱為用戶自定義函數(shù)。3.1.2流程控制語句流程控制語句是指那些用來控制程序執(zhí)行和流程分支的命令,在SQLServer2000中,流程控制語句主要用來控制SQL語句、語句塊或者存儲過程的執(zhí)行流程。If…else語句if…else語句是條件判斷語句,其中,else子句是可選的最簡單的if語句沒有else子句部分。If…else語句用來判斷當(dāng)某一條件成立時(shí)執(zhí)行某段程序,條件不成就時(shí)執(zhí)行另一段程序。SQLServer允許嵌套使用if…else語句,而且嵌套層數(shù)沒有限制。If…else語句的語法形式為:if<條件表達(dá)式><語句1>|<語句塊1>[else<語句2>|<語句塊2>]Begin…end語句Begin…end語句能夠?qū)⒍鄠€(gè)Transact-SQL語句組合成一個(gè)語句塊,并將它們視為一個(gè)單元處理。在條件語句和循環(huán)等控制流程語句中,當(dāng)符合特定條件便要執(zhí)行兩個(gè)或者多個(gè)語句時(shí),就需要使用begin…end語句,其語法形式為:Begin <語句>|<語句塊>[…n]EndWhile…continue…break語句While…continue…break語句用于設(shè)置重復(fù)執(zhí)行SQL語句或語句塊的條件。只要指定的條件為真,就重復(fù)執(zhí)行語句。其中,continue語句可以使程序跳過continue語句后面的語句,回到while循環(huán)的第一行命令。Break語句則使程序完全跳出循環(huán),結(jié)束while語句的執(zhí)行。While語句的語法形式為:While<條件表達(dá)式> <語句或語句塊>[break或continue]3.1.3GoTo語句Goto語句可以使程序直接跳到標(biāo)有標(biāo)識符的指定位置處繼續(xù)執(zhí)行,而位于goto語句和標(biāo)識符之間的程序?qū)⒉粫粓?zhí)行。Goto語句和標(biāo)識符可以在語句塊、批處理和存儲過程中,標(biāo)識符可以是數(shù)字與字符的組合,但必須以“:”結(jié)尾。Goto語句的語法形式為gotolabel。程序中必須有一行語句以“l(fā)abel:”開頭。3.1.4Return語句Return語句用于無條件地終止一個(gè)查詢、存儲過程或者批處理,此時(shí)位于return語句之后的程序?qū)⒉粫粓?zhí)行。Return語句的語法形式為:return[<整數(shù)>]。其中,整數(shù)為返回的整型值。存儲過程可以給調(diào)用過程或應(yīng)用程序返回整型值。3.1.5打印輸出語句可以使用print語句顯示變量的值。Print語句的語法如下:Print’<字符串>’|@<局部變量>|@@<全局變量>3.1.6注釋語句注釋是程序代碼中不可執(zhí)行的內(nèi)容,但它也是程序設(shè)計(jì)中不可缺少的一部分,它的作用是對程序代碼的功能進(jìn)行說明。以提高程序的可讀性,使程序代碼更容易維護(hù)。注釋語句的格式有以下兩種:整塊注釋整塊注釋的形式為:/*<注釋塊>*/,從開始注釋對(/*)到結(jié)束注釋對(*/)之間的全部均視為注釋部分,將不會作為語句執(zhí)行。從行的后部分注釋從行的后部分注釋的形式為:<語句>——<注釋>,將位于破折號和本行結(jié)尾之間的所有文本作為注釋。3.1.7事務(wù)管理在SQLServer中,事務(wù)管理可以通過一段SQL程序來完成,事務(wù)管理語句包含在以下兩行語句中:Begintransaction<SQL語句組>Committransaction其中,begintransaction表示事務(wù)的開始;committransaction表示提交事務(wù)。用戶定義的事務(wù)也成顯式事務(wù),它使得用戶可以控制事務(wù)管理。應(yīng)注意的是,所有顯式事務(wù)都應(yīng)包括在begintransaction和committransaction之間。事務(wù)只使用與數(shù)據(jù)修改語句。用戶可以在committransaction之前用rollbacktransaction取消事務(wù)并撤銷對數(shù)據(jù)所作的任何改變,命令如下:Rollbacktransaction[savepoint_name]其中可以通過savepoint_name標(biāo)記事務(wù)回滾的保存點(diǎn)。保存點(diǎn)是用戶放在事務(wù)中的一個(gè)標(biāo)記,它指明能回滾的點(diǎn)。若沒有保存點(diǎn),rollbacktransaction子句將回滾到begintransaction處。用rollbacktransaction子句可以隨時(shí)取消或回滾事務(wù),但在提交之后就不能取消它[4]。如果某一事務(wù)成功,則在該事務(wù)中進(jìn)行的所有數(shù)據(jù)更改均會提交,成為數(shù)據(jù)庫中的永久組成部分。如果事務(wù)遇到錯(cuò)誤且必須取消或回滾,則數(shù)據(jù)庫中所有數(shù)據(jù)的更改均被清除。事務(wù)管理通過確保要么完成整個(gè)事務(wù),并使所有的改變都在數(shù)據(jù)庫中得到反映,要么事務(wù)被回滾,從而保證了數(shù)據(jù)庫的一致性和可恢復(fù)性。3.2存儲過程SQLServer提供了一種方法,它可以將一些固定的操作集中起來由SQLServer數(shù)據(jù)庫服務(wù)器來完成,以實(shí)現(xiàn)某個(gè)任務(wù),這種方法就是存儲過程。存儲過程是一套已經(jīng)編譯好的SQL語句,允許用戶聲明變量、輸出參數(shù)、返回單個(gè)或者多個(gè)結(jié)果集以及返回值。存儲過程存在于數(shù)據(jù)庫內(nèi),可由應(yīng)用程序調(diào)用執(zhí)行。存儲過程與視圖不同。視圖是封裝好的select語句,而存儲過程是封裝好的復(fù)雜的SQL語句,可以包括update、insert等操作。在SQLServer中存儲過程分為兩類:系統(tǒng)提供的存儲過程和用戶自定義的存儲過程。系統(tǒng)存儲過程系統(tǒng)存儲過程是SQLServer系統(tǒng)創(chuàng)建的存儲過程,它的目的在于能夠方便地從系統(tǒng)表中查詢信息,或者完成與更新數(shù)據(jù)庫相關(guān)的管理任務(wù)或其他的系統(tǒng)管理任務(wù)。系統(tǒng)存儲過程可以在任意一個(gè)數(shù)據(jù)庫中執(zhí)行。系統(tǒng)存儲過程創(chuàng)建并存放于系統(tǒng)數(shù)據(jù)庫master中,并且名稱以sp_或者xp_開頭,例如,sp_helpdb、sp_help、sp_who、sp_helptext等。用戶自定義的存儲過程用戶自定義的存儲過程是用戶創(chuàng)建的、由特殊查詢和代碼組成的程序。3.2.1創(chuàng)建存儲過程在創(chuàng)建存儲過程前,應(yīng)考慮以下問題:不能將createprocedure語句與其他SQL語句組合到單個(gè)批處理中;創(chuàng)建存儲過程的權(quán)限默認(rèn)屬于數(shù)據(jù)庫所有者,該所有者可將此權(quán)限授予其他用戶;存儲過程是數(shù)據(jù)庫對象,其名稱必須遵守標(biāo)識符規(guī)則;只能在當(dāng)前數(shù)據(jù)庫中創(chuàng)建存儲過程;一個(gè)存儲過程的最大容量為128M。創(chuàng)建存儲過程時(shí),需要確定存儲過程的三個(gè)組成部分:所有的輸入?yún)?shù)以及傳給調(diào)用者的輸出參數(shù);被執(zhí)行的針對數(shù)據(jù)庫的操作語句,包括調(diào)用其他存儲過程的語句;返回給調(diào)用者的狀態(tài)值,以指明調(diào)用是成功還是失敗。T-SQL中創(chuàng)建存儲過程的語法為:Createproc[edure]<過程名>[;<版本號>][@<參數(shù)名><參數(shù)類型>[=<默認(rèn)值>][output]…][withrecompile|encryption|recompile,encryption][forreplication]As<sql語句組>過程名用于指定要?jiǎng)?chuàng)建的存儲過程的名稱。版本號參數(shù)是可選的整數(shù),它用來對同名的存儲過程分組,以便用一條dropprocedure語句即可將同組的過程一起除去。在執(zhí)行時(shí)可選擇版本,但創(chuàng)建時(shí)一次只能創(chuàng)建一個(gè)版本。在createprocedure語句中可以聲明一個(gè)或者多個(gè)參數(shù),參數(shù)前加“@”說明參數(shù)為局部參數(shù),如果參數(shù)前加“@@”說明參數(shù)為全局參數(shù)。參數(shù)類型用于指定參數(shù)的數(shù)據(jù)類型。默認(rèn)值用于指定參數(shù)的默認(rèn)值。Output選項(xiàng)表明該參數(shù)是一個(gè)返回參數(shù)。Recompile為重編譯選項(xiàng),表明SQLServer不會保存該存儲過程的執(zhí)行計(jì)劃。它要求每次執(zhí)行都要對過程重編譯和優(yōu)化,并創(chuàng)建新的查詢計(jì)劃。Encryption為加密選項(xiàng),表示SQLServer加密了syscomments表,該表的text字段是包含createprocedure語句的存儲過程文本。Forreplication選項(xiàng)用于指定不能在訂閱服務(wù)器上執(zhí)行為復(fù)制創(chuàng)建的存儲過程。SQL語句組是存儲過程中要包含的任意數(shù)目和類型的Transact-SQL語句。3.2.2查看存儲過程存儲過程被創(chuàng)建之后,它的名字就存儲在系統(tǒng)表sysobjects中,它的源代碼存放在系統(tǒng)表syscomments中??梢允褂靡韵孪到y(tǒng)存儲過程來查看用戶創(chuàng)建的存儲過程;sp_helpsp_help用于顯示存儲過程的參數(shù)及其數(shù)據(jù)類型,語法形式如下:sp_help[[@objname=]name]參數(shù)name為要查看的存儲過程的名稱。sp_helptextsp_helptext用于顯示存儲過程的源代碼,語法形式如下:sp_helptext[[@objname=]name]參數(shù)name為要查看的存儲過程的名稱。sp_dependssp_depends用于顯示與存儲過程相關(guān)的數(shù)據(jù)庫對象,語法形式如下:sp_depends[@objname=]’object’參數(shù)object為要查看依賴關(guān)系的存儲過程的名稱。sp_stored_proceduressp_stored_procedures用于返回當(dāng)前數(shù)據(jù)庫中的存儲過程列表。3.2.3修改存儲過程存儲過程可以根據(jù)用戶的要求或者基表定義的改變而改變。使用alterprocedure語句可以更改先前通過執(zhí)行createprocedure語句創(chuàng)建的過程,但不會更改權(quán)限,也不影響相關(guān)的存儲過程或觸發(fā)器[5]。其語法形式如下:Alterproc[edure]<過程名>[;<版本號>][@<參數(shù)名><過程名>[=<默認(rèn)值>][output]…][withrecompile|encryption|recompile,encryption][forreplication]as<sql語句組>各參數(shù)的定義如前所述。3.2.4運(yùn)行存儲過程存儲過程可以使用execute命令來執(zhí)行,其語法形式如下:Exec[ute]<過程名>[[@參數(shù)名=]<參數(shù)>[<默認(rèn)值>][output]…][withrecompile]各參數(shù)的定義如前所述。3.2.5刪除存儲過程刪除存儲過程可以使用drop命令,drop命令可以將一個(gè)存儲過程、多個(gè)存儲過程或者存儲過程組從當(dāng)前數(shù)據(jù)庫中刪除,其語法形式如下:Dropproc[edure]<過程名組>3.3觸發(fā)器觸發(fā)器是定義在表上的一個(gè)對象,是一種特殊類型的存儲過程,它不同于前面介紹過的存儲過程。觸發(fā)器不需要專門語句調(diào)用,它主要是通過事件進(jìn)行觸發(fā)而被執(zhí)行的,即當(dāng)執(zhí)行insert、delete和update語句時(shí)自動被觸發(fā)執(zhí)行,而存儲過程可以通過存儲過程名稱而被直接調(diào)用。觸發(fā)器是一個(gè)功能強(qiáng)大的工具,它使每個(gè)站點(diǎn)可以在有數(shù)據(jù)修改時(shí)自動強(qiáng)制執(zhí)行其業(yè)務(wù)規(guī)則,執(zhí)行的內(nèi)容是報(bào)警、維護(hù)數(shù)據(jù)的完整性或特殊的數(shù)據(jù)處理。觸發(fā)器可以用于SQLServer約束、默認(rèn)值和規(guī)則的完整性檢查。觸發(fā)器可以強(qiáng)制實(shí)現(xiàn)限制,這些限制比用check約束所定義的更復(fù)雜。3.3.1創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器時(shí),應(yīng)考慮以下問題:(1)創(chuàng)建觸發(fā)器的權(quán)限默認(rèn)分配給表的所有者,且不能將該權(quán)限轉(zhuǎn)給其他用戶;(2)雖然觸發(fā)器可以引用當(dāng)前數(shù)據(jù)庫以外的對象,但只能在當(dāng)前數(shù)據(jù)庫中創(chuàng)建觸發(fā)器;(3)雖然不能在臨時(shí)表或系統(tǒng)表上創(chuàng)建觸發(fā)器,但是觸發(fā)器可以引用臨時(shí)表。創(chuàng)建一個(gè)觸發(fā)器時(shí)必須給出觸發(fā)器的名稱、在其上定義觸發(fā)器的表、觸發(fā)器將何時(shí)激發(fā)以及激活觸發(fā)器的數(shù)據(jù)修改語句。T-SQL中創(chuàng)建觸發(fā)器的語法為:Createtrigger<觸發(fā)器名>On<表名>[withencryption]For{[delete][,][insert][,][update]}[withappend][notforreplication]As<SQL語句組>觸發(fā)器名觸發(fā)器名是創(chuàng)建觸發(fā)器的名稱。觸發(fā)器名稱必須符合標(biāo)識符命名規(guī)則,并且在數(shù)據(jù)庫中必須唯一。表名是在其上執(zhí)行觸發(fā)器的表或視圖。Withencryption為加密選項(xiàng)。Delete選項(xiàng)為創(chuàng)建delete觸發(fā)器。利用delete觸發(fā)器,能在相應(yīng)的表中當(dāng)遇到刪除動作時(shí)發(fā)出報(bào)警。當(dāng)對指定表執(zhí)行delete操作時(shí),觸發(fā)器被激活,并從指定表中刪除元組,同時(shí)將刪除的元組放入一個(gè)特殊的邏輯表(deleted)中。Insert選項(xiàng)為創(chuàng)建insert觸發(fā)器。利用insert觸發(fā)器,能使用戶向指定的表中插入數(shù)據(jù)時(shí)發(fā)出報(bào)警。當(dāng)對指定表執(zhí)行insert操作時(shí)觸發(fā)器被激活,激活后將插入表中的數(shù)據(jù)拷貝并送到一個(gè)特殊的邏輯表(inserted)中。Update選項(xiàng)為創(chuàng)建update觸發(fā)器。當(dāng)對指定表執(zhí)行update操作時(shí),觸發(fā)器被激活。Update觸發(fā)器被激活后把將要更新的原數(shù)據(jù)移入deleted表中,更新數(shù)據(jù)插入到inserted表中,update觸發(fā)器對deleted表和inserted表進(jìn)行檢查,并決定如何處理。應(yīng)注意,inserted表和deleted表是事務(wù)日志的視圖,它與創(chuàng)建了觸發(fā)器的表具有相同的結(jié)構(gòu),即它們都是當(dāng)前觸發(fā)器的局部表。Withappend選項(xiàng)可以指定應(yīng)該添加現(xiàn)有類型的其他觸發(fā)器。Notforreplication選項(xiàng)說明當(dāng)一個(gè)復(fù)制過程在修改一個(gè)觸發(fā)器表時(shí),與該表相關(guān)聯(lián)的觸發(fā)器不能被執(zhí)行。SQL語句組是觸發(fā)器的條件和操作。觸發(fā)器條件用來確定delete、insert或update語句是否導(dǎo)致執(zhí)行觸發(fā)器操作。一個(gè)觸發(fā)器只適用于一個(gè)表,每個(gè)表最多只能有三個(gè)觸發(fā)器。即insert、update和delete。3.3.2查看觸發(fā)器可以使用以下系統(tǒng)存儲過程來查看用戶創(chuàng)建的觸發(fā)器。sp_helpsp_help用于查看觸發(fā)器的一般信息,如觸發(fā)器的名稱、屬性、類型和創(chuàng)建時(shí)間。語法形式如下:sp_help‘觸發(fā)器名稱’sp_helptextsp_helptext用于查看觸發(fā)器的正文信息。語法形式如下:sp_helptext‘觸發(fā)器名稱’sp_dependssp_depends用于查看指定觸發(fā)器所引用的表或者指定的表涉及到的所有觸發(fā)器。語法形式如下:sp_depends‘觸發(fā)器名稱’sp_depends‘表名’3.3.3修改觸發(fā)器用戶可以使用altertrigger命令修改已經(jīng)創(chuàng)建的觸發(fā)器。Altertrigger命令的語法形式如下:Altertrigger<觸發(fā)器名>On<表名>[withencryption]For[delete][,][insert][,][update][notforreplication]As<SQL語句組>各參數(shù)的含義如前所述。3.3.4運(yùn)行觸發(fā)器當(dāng)嘗試執(zhí)行delete、inserte或update操作時(shí),Transact-SQL語句中指定的觸發(fā)器操作將生效。3.3.5刪除觸發(fā)器刪除觸發(fā)器可以使用drop命令,drop命令可以將一個(gè)或者多個(gè)觸發(fā)器從當(dāng)前數(shù)據(jù)庫中刪除,其語法形式如下:Droptrigger(觸發(fā)器組)刪除觸發(fā)器所在的表時(shí),SQLServer將會自動刪除與該表相關(guān)的觸發(fā)器。
4.圖書館信息化管理系統(tǒng)本論文的綜合應(yīng)用舉例,將以全面剖析圖書管理的內(nèi)容,由此得出圖書管理系統(tǒng)的需求分析和數(shù)據(jù)建模,并最終完成建立圖書館管理系統(tǒng)并進(jìn)行事務(wù)管理的制作。完成圖書館管理系統(tǒng)一般分為八步:圖書館信息化管理、圖書館管理系統(tǒng)需求分析、圖書館管理系統(tǒng)數(shù)據(jù)庫分析、實(shí)例制作介紹、數(shù)據(jù)庫設(shè)計(jì)、程序開發(fā)、系統(tǒng)發(fā)布、系統(tǒng)擴(kuò)展等。4.1圖書館信息化管理圖書館的信息化管理從最初的對圖書館業(yè)務(wù)管理實(shí)行信息化管理發(fā)展到對圖書館各個(gè)業(yè)務(wù)流程進(jìn)行系統(tǒng)和網(wǎng)絡(luò)化管理,并建立大規(guī)模的以個(gè)體文獻(xiàn)目錄聯(lián)機(jī)查詢?yōu)橹鞯馁Y源共享系統(tǒng)。進(jìn)入21世紀(jì)后,圖書館信息化管理充分利用計(jì)算機(jī)網(wǎng)絡(luò)和信息技術(shù),逐步實(shí)現(xiàn)不同載體的實(shí)體文獻(xiàn)的信息化管理和多方位的聯(lián)機(jī)查詢。圖書館的計(jì)算機(jī)信息化管理,就是將傳統(tǒng)圖書館業(yè)務(wù)的手工操作轉(zhuǎn)變成由計(jì)算機(jī)管理,即圖書館的圖書期刊、音像資料等各種載體文獻(xiàn)的采編、典藏、流通、檢索及常規(guī)業(yè)務(wù)管理等工作,利用計(jì)算機(jī)技術(shù),進(jìn)行高效、準(zhǔn)確的信息化管理。其根本目的是實(shí)現(xiàn)區(qū)域內(nèi)及地區(qū)、國家、國際間的資源共享。要達(dá)到資源共享的目的,必須制訂一定的標(biāo)準(zhǔn),只有各個(gè)系統(tǒng)都遵循這些標(biāo)準(zhǔn),不同的系統(tǒng)間才可以實(shí)現(xiàn)聯(lián)機(jī)查詢,資源共享的效果[6]。常見的標(biāo)準(zhǔn)如中國圖書館分類法,馬克著錄,Z39.50標(biāo)準(zhǔn);此外還可以按讀者管理及文獻(xiàn)流通管理進(jìn)行分類。4.2圖書館管理系統(tǒng)需求分析一般通用的圖書館管理系統(tǒng)包括系統(tǒng)管理、讀者管理、編目、圖書流通、統(tǒng)計(jì)、查詢等功能。比較先進(jìn)的能夠在一個(gè)界面下實(shí)現(xiàn)圖書、音像、期刊的管理,設(shè)置假期、設(shè)置暫離鎖(提高安全性),暫停某些讀者的借閱權(quán)、導(dǎo)入導(dǎo)出讀者、交換MARC數(shù)據(jù)、升級輔助編目庫等。此外隨著Internet應(yīng)用的發(fā)展,一個(gè)完善的系統(tǒng)還應(yīng)提供無縫接入Internet的功能,通過IE瀏覽器讓讀者使用借閱資料查詢、更換密碼、預(yù)約、資料檢索等功能。有些系統(tǒng)還能提供讀者自助服務(wù),可以開放一些客戶機(jī)讀者自行管理密碼、查詢自己的借閱史、預(yù)約資料,檢索資料等。本論文將介紹通用圖書管理系統(tǒng)所必備的功能,如下圖所示,其中每個(gè)功能模塊都由若干相關(guān)聯(lián)的子功能模塊組成。圖書館管理系統(tǒng)圖書館管理系統(tǒng)系統(tǒng)管理統(tǒng)計(jì)分析管理期刊流通管理圖書流通管理期刊管理圖書管理讀者管理基礎(chǔ)信息維護(hù)系統(tǒng)管理統(tǒng)計(jì)分析管理期刊流通管理圖書流通管理期刊管理圖書管理讀者管理基礎(chǔ)信息維護(hù)圖4.1圖書管理系統(tǒng)的組成“基礎(chǔ)信息維護(hù)”功能模塊用于對圖書館信息、書籍信息、系統(tǒng)參數(shù)設(shè)置、管理員設(shè)置及圖書期刊詞庫設(shè)置等項(xiàng)目進(jìn)行初始化設(shè)置,這些設(shè)置一般不輕易改動?!白x者管理”功能模塊用于管理讀者相關(guān)信息,包含的子功能模塊一般為讀者類型設(shè)置、讀者檔案管理、借書證掛失與恢復(fù)、過期續(xù)借管理及讀者檔案詞庫設(shè)置等。“圖書管理”功能模塊用于管理圖書相關(guān)信息,包含的子功能模塊一般為圖書類型設(shè)置、出版社管理、圖書檔案管理、圖書注銷、圖書征訂、圖書驗(yàn)收及圖書盤點(diǎn)等?!捌诳芾怼惫δ苣K用于管理期刊相關(guān)信息,包含的子功能模塊一般為期刊類型設(shè)置、期刊檔案管理、期刊注銷、期刊征訂、期刊驗(yàn)收、期刊盤點(diǎn)等?!皥D書流通管理”功能模塊用于管理圖書流通環(huán)節(jié)相關(guān)操作,包含的子功能模塊一般為圖書借閱、圖書歸還、圖書續(xù)借、圖書預(yù)約、圖書丟失及圖書罰款等?!捌诳魍ü芾怼惫δ苣K實(shí)現(xiàn)的功能和“圖書流通管理”功能模塊是一致的,只是管理的對象是期刊?!敖y(tǒng)計(jì)分析管理”功能模塊為圖書管理人員的分析決策提供依據(jù),包含的子功能模塊一般為圖書借閱查詢、圖書歸還查詢、圖書超期查詢、圖書注銷查詢、圖書訂購查詢、圖書檔案排序、讀者檔案排序及其他查詢等。4.3圖書館管理系統(tǒng)數(shù)據(jù)庫分析根據(jù)以上需求分析,一個(gè)基本的圖書館管理系統(tǒng)數(shù)據(jù)庫中大致包括40多張表,分別存放相應(yīng)子功能的數(shù)據(jù)信息,其中“讀者信息”和“圖書信息”表是關(guān)鍵的表,用于存放圖書館讀者的信息和文獻(xiàn)的信息,圖書館管理系統(tǒng)實(shí)際上就是對讀者和文獻(xiàn)的管理。其他涉及讀者信息和文獻(xiàn)信息的表,都只記錄相應(yīng)的編號,并根據(jù)作為外鍵的“編號”字段相對應(yīng)。因此“讀者信息”、“圖書信息”和其他表間的關(guān)系是1:N的關(guān)系。圖書館管理系統(tǒng)的E-R圖如下。圖書歸還Pk歸還編號圖書歸還Pk歸還編號FK1圖書編號讀者編號退還押金操作員圖書借閱PK借閱編號FK圖書編號讀者編號借閱時(shí)間應(yīng)還時(shí)間續(xù)借次數(shù)操作員圖書信息Pk編號條形碼書名類型作者譯者ISBN出版社價(jià)格頁碼書架名稱操作員是否注銷圖書征訂圖書征訂PK征訂編號FK1圖書編號訂購者訂購數(shù)量訂購單價(jià)是否驗(yàn)收驗(yàn)收日期操作員圖書注銷PK注銷編號FK2圖書編號圖書注銷PK注銷編號FK2圖書編號注銷數(shù)量操作員讀者信息讀者信息PK編號條形碼姓名性別類型有效證件證件號碼登記日期操作員備注是否掛失圖書罰款圖書罰款PK罰款編號FK1圖書編號讀者編號罰款日期應(yīng)罰金額圖4.2圖書館管理系統(tǒng)的E-R圖4.4系統(tǒng)流程基于以上需求分析和數(shù)據(jù)庫分析,我們對一個(gè)標(biāo)準(zhǔn)的圖書館管理系統(tǒng)有了一個(gè)全面的認(rèn)識,下面我們將實(shí)例說明如何完成圖書館管理系統(tǒng)的開發(fā)。系統(tǒng)流程圖如下圖書借閱圖書借閱讀者信息讀者管理讀者信息讀者管理圖書歸還圖書歸還圖書征訂圖書征訂管理員流通管理管理員流通管理預(yù)約續(xù)借預(yù)約續(xù)借圖書管理圖書管理圖書管理圖書管理罰款管理罰款管理圖4.3圖書館管理系統(tǒng)的系統(tǒng)流程圖4.5數(shù)據(jù)庫設(shè)計(jì)根據(jù)實(shí)例介紹,“讀者信息”和“圖書信息”是關(guān)鍵的表,其他各表均通過“編號”字段與之相對應(yīng)進(jìn)行多對一的關(guān)聯(lián)。系統(tǒng)共需要8張表,用途分別如下表所示[7]。表名稱表用途讀者類型保存讀者類型及相關(guān)信息讀者信息保存讀者的各種信息圖書類型保存圖書類型及相關(guān)信息圖書信息保存圖書信息書架保存圖書館內(nèi)數(shù)據(jù)的基礎(chǔ)信息出版社保存圖書對應(yīng)出版社的基礎(chǔ)信息圖書罰款保存圖書罰款記錄圖書歸還保存圖書歸還記錄圖書借閱保存圖書借閱記錄圖書征訂保存圖書征訂入庫記錄此外還需要?jiǎng)?chuàng)建數(shù)據(jù)庫以及相關(guān)的數(shù)據(jù)庫表,如創(chuàng)建“讀者信息表”、“圖書信息表”、“圖書借閱表”、其他關(guān)鍵表、創(chuàng)建主鍵及外鍵等表約束、創(chuàng)建存儲過程等。4.6程序開發(fā)實(shí)例的程序開發(fā)結(jié)構(gòu)仍然為MDI模式,這種開發(fā)模式結(jié)構(gòu)清楚簡單,容易理解,每個(gè)功能對應(yīng)一個(gè)子窗體。程序開發(fā)主要分為如下幾步:其中第5到11步附上了相關(guān)的源程序代碼。1.創(chuàng)建工程2.ADO.NET數(shù)據(jù)組件的設(shè)置3.創(chuàng)建系統(tǒng)主窗體4.系統(tǒng)登錄功能的實(shí)現(xiàn)5.完成讀者類別設(shè)置功能源程序代碼如下:ALTERTABLE[dbo].[讀者信息]ADD CONSTRAINT[FK_讀者信息_讀者類型]FOREIGNKEY ( [類型] )REFERENCES[dbo].[讀者類型]( [類型] )GOSETQUOTED_IDENTIFIERONGOSETANSI_NULLSONGO6.完成讀者檔案管理功能源程序代碼如下:CREATETABLE[dbo].[讀者檔案管理]( [條形碼][varchar](40)NULL, [編號][varchar](20)NOTNULL, [姓名][varchar](20)NULL, [性別][varchar](8)NULL, [類型][varchar](20)NOTNULL, [出生日期][smalldatetime]NULL, [有效證件][varchar](60)NULL, [證件號碼][varchar](60)NULL, [聯(lián)系方式][varchar](100)NULL, [登記日期][smalldatetime]NULL, [有限期至][smalldatetime]NULL, [操作員][varchar](20)NULL, [備注][varchar](100)NULL, [圖書借閱次數(shù)][int]NULL, [期刊借閱次數(shù)][int]NULL, [是否掛失][bit]NULL)ON[PRIMARY]GO7.完成圖書類型設(shè)置功能源程序代碼如下:ALTERTABLE[dbo].[圖書類型]WITHNOCHECKADD CONSTRAINT[PK_圖書類型]PRIMARYKEYCLUSTERED ( [類型編號] )ON[PRIMARY]GO8.完成圖書檔案管理能源程序代碼如下:CREATETABLE[dbo].[圖書檔案管理]( [條形碼][varchar](40)NULL, [編號][varchar](50)NOTNULL, [書名][varchar](200)NULL, [類型][varchar](100)NULL, [作者][varchar](100)NULL, [譯者][varchar](100)NULL, [ISBN][varchar](40)NULL, [出版社][varchar](100)NULL, [價(jià)格][money]NULL, [頁碼][int]NULL, [書架名稱][varchar](200)NULL, [現(xiàn)存量][int]NULL, [庫存總量][int]NULL, [入庫時(shí)間][smalldatetime]NULL, [操作員][varchar](20)NULL, [簡介][varchar](100)NULL, [借出次數(shù)][int]NULL, [是否注銷][bit]NOTNULL)ON[PRIMARY]GO9、完成圖書征訂功能源程序代碼如下:createprocsf_圖書征訂asbegintran --驗(yàn)收入庫,增加圖書庫存量 update圖書信息set庫存總量=isnull(庫存總量,0)+b.訂購數(shù)量, 現(xiàn)存量=isnull(現(xiàn)存量,0)+b.訂購數(shù)量,入庫時(shí)間=b.驗(yàn)收日期 from圖書信息asa,圖書征訂asb wherea.編號=b.圖書編號andb.是否驗(yàn)收=0 --設(shè)置圖書征訂記錄的標(biāo)志,標(biāo)志為已驗(yàn)收 update圖書征訂set驗(yàn)收日期=getdate(),是否驗(yàn)收=1 where是否驗(yàn)收=0commitGOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSON10.完成圖書借閱功能源程序代碼如下:createprocsf_圖書借閱asbegintran --借書出庫,減少圖書庫存量 update圖書信息set現(xiàn)存量=isnull(現(xiàn)存量,0)-1 from圖書信息asa,圖書借閱asb wherea.編號=b.圖書編號andb.狀態(tài)='新借' --設(shè)置借閱狀態(tài) update圖書借閱set續(xù)借次數(shù)=0,狀態(tài)='未還' where狀態(tài)='新借'commitGOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46955-2026設(shè)施花卉生產(chǎn)環(huán)境控制規(guī)范
- GB 7300.206-2025飼料添加劑第2部分:維生素及類維生素氯化膽堿
- 學(xué)校美術(shù)教室管理制度
- 村運(yùn)會面試題目及答案
- 養(yǎng)老院消防通道及疏散預(yù)案制度
- 養(yǎng)老院老人生活?yuàn)蕵坊顒咏M織人員福利待遇制度
- 地產(chǎn)板塊投資問答題目及答案
- 農(nóng)家書屋管理制度和借閱制度
- 辦公室辦公用品采購與領(lǐng)用制度
- 金木集團(tuán)的獎(jiǎng)金制度
- 2026中國單細(xì)胞測序技術(shù)突破與商業(yè)化應(yīng)用前景報(bào)告
- 景區(qū)服務(wù)培訓(xùn)課件
- 2025年深圳低空經(jīng)濟(jì)中心基礎(chǔ)設(shè)施建設(shè)研究報(bào)告
- 中科曙光入職在線測評題庫
- 叉車初級資格證考試試題與答案
- 2025至2030中國新癸酸縮水甘油酯行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報(bào)告
- 剪映完整課件
- 新疆機(jī)井管理辦法
- 導(dǎo)熱油事故現(xiàn)場處置方案夏君96課件
- DB32∕T 310026-2024 雷電防護(hù)裝置檢測部位及檢測點(diǎn)確認(rèn)技術(shù)規(guī)范
- GB/T 45680-2025起重機(jī)風(fēng)載荷計(jì)算
評論
0/150
提交評論