版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章
應(yīng)用數(shù)據(jù)庫第8章應(yīng)用數(shù)據(jù)庫討論軟件構(gòu)造中數(shù)據(jù)庫的使用。介紹關(guān)系數(shù)據(jù)庫的相關(guān)知識(shí)及結(jié)構(gòu)化查詢語言SQL,學(xué)習(xí)如何創(chuàng)建數(shù)據(jù)庫、連接數(shù)據(jù)庫、查詢數(shù)據(jù)庫;學(xué)習(xí)數(shù)據(jù)庫及應(yīng)用軟件的開發(fā),熟練掌握數(shù)據(jù)庫的增、刪、改、查等操作方法,以及如何在應(yīng)用程序中操作數(shù)據(jù)庫。還介紹數(shù)據(jù)庫的深入應(yīng)用。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院2第8章應(yīng)用數(shù)據(jù)庫故事9引入數(shù)據(jù)庫系統(tǒng)管理題目和答案。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院3第8章應(yīng)用數(shù)據(jù)庫8.1數(shù)據(jù)庫概述8.2結(jié)構(gòu)化查詢語言SQL8.3數(shù)據(jù)庫的開發(fā)過程8.4編程操作數(shù)據(jù)庫8.5案例分析與實(shí)踐8.6討論與提高8.7思考與練習(xí)題2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院48.1數(shù)據(jù)庫概述數(shù)據(jù)庫是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織、可共享的大量數(shù)據(jù)的集合。它的目的是提供一種可以方便、高效地管理數(shù)據(jù)庫信息的途徑。DBMS是位于用戶(含應(yīng)用程序)和操作系統(tǒng)之間的一種數(shù)據(jù)管理軟件,負(fù)責(zé)數(shù)據(jù)的組織、存儲(chǔ)和管理。數(shù)據(jù)庫、DBMS、應(yīng)用程序及數(shù)據(jù)庫管理員構(gòu)成的系統(tǒng)稱為數(shù)據(jù)庫系統(tǒng)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院58.1數(shù)據(jù)庫概述8.1.1關(guān)系數(shù)據(jù)庫8.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院68.1.1關(guān)系數(shù)據(jù)庫數(shù)據(jù)庫領(lǐng)域中最常見的數(shù)據(jù)模型有:層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P汀?duì)象關(guān)系模型。其中,關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。按照數(shù)據(jù)模型的三個(gè)要素,關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院78.1.1關(guān)系數(shù)據(jù)庫1.關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)就是一張二維表。關(guān)系數(shù)據(jù)庫由表的集合構(gòu)成,每個(gè)表都有唯一的名字。元組(行)、屬性(列)、域、碼、候選碼、主碼、主屬性、組合碼、全碼、外碼、關(guān)系模式……2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院88.1.1關(guān)系數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院98.1.1關(guān)系數(shù)據(jù)庫2.關(guān)系操作集合2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院108.1.1關(guān)系數(shù)據(jù)庫3.關(guān)系完整性約束關(guān)系模型中有三類完整性約束:實(shí)體完整性、參照完整性和用戶自定義完整性。實(shí)體完整性和參照完整性是關(guān)系模型必須要滿足的完整性約束條件,有DBMS支持,進(jìn)行自動(dòng)檢查。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院118.1.1關(guān)系數(shù)據(jù)庫實(shí)體完整性(EntityIntegrity):若屬性(一個(gè)或一組屬性)A是基本關(guān)系R的主屬性,則A不能取空值。參照完整性(ReferentialIntegrity):若屬性或?qū)傩越MF是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對(duì)應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對(duì)于R中每個(gè)元組在F上的值必須為空值或者等于S中某個(gè)元組的主碼值。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院128.1.1關(guān)系數(shù)據(jù)庫用戶自定義完整性(User-definedIntegrity)關(guān)系數(shù)據(jù)庫系統(tǒng)應(yīng)該根據(jù)應(yīng)用環(huán)境的不同,滿足用戶對(duì)數(shù)據(jù)關(guān)系之間的特定的約束條件。例如,Question關(guān)系中,我們要求計(jì)算0~100之間的加減法,就需要引入約束條件check(Factor1>=0ANDFactor1<=100)。如果我們要求只計(jì)算加減乘除的四則運(yùn)算,那就應(yīng)該引入自定的約束條件check(OperatorIN(‘+’,‘?’,‘*’,‘/’))。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院138.1.1關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫由若干基本表組成?;颈碛扇舾稍M組成。表是組成這個(gè)關(guān)系的若干實(shí)體。表與表之間同時(shí)還存在參照關(guān)系,通過外碼表達(dá)兩個(gè)關(guān)系之間的關(guān)系。關(guān)系圖。每個(gè)關(guān)系用一個(gè)矩形表示,關(guān)系的名字顯示在矩形的上方,矩形內(nèi)列出各個(gè)屬性,主屬性用下畫線標(biāo)出。外碼之間的關(guān)系用從參照關(guān)系的外碼屬性到被參照關(guān)系的主屬性之間的箭頭來表示。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院148.1.1關(guān)系數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院158.1.1關(guān)系數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院168.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型關(guān)系數(shù)據(jù)庫管理系統(tǒng)支持?jǐn)?shù)據(jù)庫的三級(jí)模式結(jié)構(gòu),如圖8.2所示。內(nèi)模式對(duì)應(yīng)存儲(chǔ)文件,模式包含數(shù)據(jù)庫中最重要的基本表,外模式對(duì)應(yīng)于部分基本表和由基本表導(dǎo)出的視圖。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院178.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型內(nèi)模式,也稱為存儲(chǔ)模式,一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式。它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。在關(guān)系數(shù)據(jù)庫管理系統(tǒng)中,存儲(chǔ)文件的邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式。存儲(chǔ)文件的物理結(jié)構(gòu)對(duì)用戶是透明的,可以由用戶來定義。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院188.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型模式,也稱為邏輯模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。在關(guān)系數(shù)據(jù)庫中,模式是所有基本表的集合。每個(gè)基本表表達(dá)了一個(gè)關(guān)系。一個(gè)或多個(gè)基本表存儲(chǔ)在一個(gè)存儲(chǔ)文件中。所有基本表都保存在數(shù)據(jù)庫模式中。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院198.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型外模式也稱為用戶模式,它是數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖。在關(guān)系數(shù)據(jù)庫中,外模式包含部分的基本表和由一些基本表導(dǎo)出的視圖。需注意,一個(gè)數(shù)據(jù)庫中可以同時(shí)有多個(gè)外模式。同一個(gè)外模式可以被用戶的多個(gè)應(yīng)用使用,但一個(gè)應(yīng)用只能用一個(gè)外模式。外模式是保證數(shù)據(jù)庫安全性的一個(gè)重要手段。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院208.2結(jié)構(gòu)化查詢語言SQL8.2.1SQL概述8.2.2創(chuàng)建基本表的CREATE語句8.2.3插入元組的INSERT語句8.2.4刪除元組的DELETE語句8.2.5更新元組的UPDATE語句8.2.6選擇元組的SELECT語句2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院218.2.1SQL概述SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)分為以下幾個(gè)部分。數(shù)據(jù)定義語言(DataDefinitionLanguage):針對(duì)數(shù)據(jù)庫和基本表的結(jié)構(gòu)所做的定義。數(shù)據(jù)操縱語言(DataManipulationLanguage):對(duì)已定義的數(shù)據(jù)增、刪、改、查。數(shù)據(jù)控制語言(DataControlLanguage):完整性約束(Integrity):2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院228.2.1SQL概述SQL主要解決的三個(gè)問題就是關(guān)系數(shù)據(jù)模型的三個(gè)要素。視圖定義:從基本表導(dǎo)出的虛表,DDL提供視圖定義的命令語句。事務(wù)控制:SQL包括定義事務(wù)開始和結(jié)束的命令。訪問權(quán)限:SQLDDL定義了對(duì)關(guān)系和視圖訪問權(quán)限的命令。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院238.2.1SQL概述SQL實(shí)現(xiàn)了關(guān)系模型的一些主要特點(diǎn)。SQL是集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML和數(shù)據(jù)控制語言DCL功能于一體的查詢語言。SQL是高度非過程化的查詢語言。用戶只需指明“怎么做”、“想要什么”,而無須說明查詢的步驟。SQL采用的是集合的運(yùn)算方式。操作對(duì)象是元組的集合,插入、刪除、修改的對(duì)象及查詢得到的結(jié)果都可以是元組的集合。SQL使用動(dòng)詞來表達(dá)功能。核心動(dòng)詞9個(gè)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院248.2.1SQL概述用SQL語言有兩種方式:一種是在終端交互方式下使用,稱為交互式SQL;另一種是把SQL嵌入在高級(jí)程序設(shè)計(jì)語言中使用,稱為嵌入式SQL。這些高級(jí)語言可以是C、Java、C#、Python等,稱為宿主語言。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院258.2.2創(chuàng)建基本表的CREATE語句CREATETABLE語句定義基本表。CREATETABLE<表名>
(<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件][,<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件]]…[,<表級(jí)完整性約束條件>]);2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院268.2.2創(chuàng)建基本表的CREATE語句2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院278.2.3插入元組的INSERT語句INSERT插入語句的一般格式為:INSERTINTO<表名>[(<屬性列1>,<屬性列2>,……)]VALUES(<常量1>,<常量2>,……);插入如下題目:編號(hào)1001的題目為19+20=39,題目屬于基礎(chǔ)的四則運(yùn)算。INSERTINTOQuestionVALUES('1004',20,'-',19,1,1);2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院288.2.4刪除元組的DELETE語句DELETE語句的一般形式為:DELETEFROM<表名>
[WHERE<條件>];刪除編號(hào)為1001的題目:DELETEFROMQuestionWHEREQuestionID=’1001’;刪除所有的題目:DELETEFROMQuestion;2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院298.2.5更新元組的UPDATE語句UIPDATE語句的一般形式為:UPDATE<表名>SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件>];如,修改Question關(guān)系中編號(hào)1002的題目運(yùn)算結(jié)果為30:UPDATEQuestionSETResult=30WHERQuestionID='1002'2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院308.2.6選擇元組的SELECT語句SELECT語句的功能是查詢數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)。SQL查詢的基本結(jié)構(gòu)由三個(gè)子句組成:select、from和where。查詢的基本結(jié)構(gòu)為:SELECT[ALL|DISTINCT]
<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…FROM<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表達(dá)式>][ORDERBY<列名>DESC|ASC][GROUPBY<列名>HAVING<條件表達(dá)式>];2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院318.3數(shù)據(jù)庫的開發(fā)過程數(shù)據(jù)庫系統(tǒng)開發(fā)分為6階段。需求分析階段;概念結(jié)構(gòu)設(shè)計(jì)階段;邏輯結(jié)構(gòu)設(shè)計(jì)階段;物理結(jié)構(gòu)設(shè)計(jì)階段;數(shù)據(jù)庫實(shí)施階段;數(shù)據(jù)庫運(yùn)行和維護(hù)階段。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院328.3數(shù)據(jù)庫的開發(fā)過程①需求分析階段首要任務(wù)是通過詳盡調(diào)查明確用戶的組成,包括用戶的身份、權(quán)限、職責(zé)及分配的工作等;其次,詳細(xì)調(diào)查各用戶組對(duì)數(shù)據(jù)庫的操作,包括各用戶組將對(duì)數(shù)據(jù)庫輸入的信息、如何使用這些信息、輸出什么信息及其格式等;將輸入的信息分類存儲(chǔ),以便在邏輯分析階段生成數(shù)據(jù)庫模式,即基本表;最后,需要確定系統(tǒng)的邊界。對(duì)前面調(diào)查的結(jié)果進(jìn)行初步分析,確定哪些功能由計(jì)算機(jī)完成或?qū)碜層?jì)算機(jī)完成,哪些活動(dòng)由人工完成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院338.3數(shù)據(jù)庫的開發(fā)過程(1)用戶的組成2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院348.3數(shù)據(jù)庫的開發(fā)過程(2)用戶需要的信息學(xué)生身份信息:記錄學(xué)生的編號(hào)、姓名等。家長(zhǎng)身份信息:記錄家長(zhǎng)的編號(hào)、姓名等,以及家長(zhǎng)和學(xué)生之間的關(guān)系。教師身份信息:記錄教師的編號(hào)、姓名等,以及教師和學(xué)生之間的關(guān)系。管理員身份信息:記錄管理員的編號(hào)、姓名、權(quán)限等。算術(shù)題目:記錄所有題目及其計(jì)算結(jié)果。學(xué)生成績(jī):記錄學(xué)生完成某套題目的成績(jī)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院358.3數(shù)據(jù)庫的開發(fā)過程(3)系統(tǒng)邊界系統(tǒng)可以自動(dòng)生成算術(shù)題目并得到運(yùn)算結(jié)果,可以完成答題結(jié)果的檢查、統(tǒng)計(jì)成績(jī)分布;可以根據(jù)人工設(shè)定的難度級(jí)別來生成相應(yīng)難度的算術(shù)題目;無法分析錯(cuò)誤題目的出錯(cuò)原因。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院368.3數(shù)據(jù)庫的開發(fā)過程②概念結(jié)構(gòu)設(shè)計(jì)階段將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)(概念模型)的過程就是概念結(jié)構(gòu)設(shè)計(jì),是整個(gè)數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵。設(shè)計(jì)的概念結(jié)構(gòu)一定要真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,滿足用戶對(duì)數(shù)據(jù)的需求。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院378.3數(shù)據(jù)庫的開發(fā)過程E-R模型是描述概念模型的有力工具?!癊”表示實(shí)體型,E-R圖中用矩形表示,矩形框內(nèi)寫明實(shí)體名;用橢圓表示實(shí)體的屬性,并用無向邊將其與相應(yīng)的實(shí)體連接起來;“R”表示聯(lián)系,在E-R圖中用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)的實(shí)體型連接起來,同時(shí)在無向邊旁標(biāo)記聯(lián)系的類型。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院388.3數(shù)據(jù)庫的開發(fā)過程兩個(gè)以上的實(shí)體型之間聯(lián)系類型可以分為三種(參考圖8.10)。(1)一對(duì)一聯(lián)系(1:1)。(2)一對(duì)多聯(lián)系(1:n)。(3)多對(duì)多聯(lián)系(m:n)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院398.3數(shù)據(jù)庫的開發(fā)過程2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院408.3數(shù)據(jù)庫的開發(fā)過程③邏輯結(jié)構(gòu)設(shè)計(jì)階段邏輯結(jié)構(gòu)設(shè)計(jì)階段的主要任務(wù)是將概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R模型轉(zhuǎn)換為數(shù)據(jù)庫管理系統(tǒng)所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院418.3數(shù)據(jù)庫的開發(fā)過程E-R圖轉(zhuǎn)換為關(guān)系模型規(guī)則(步驟)如下。①一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系。實(shí)體名稱(屬性、主碼)即關(guān)系名稱(屬性、主碼)。②一個(gè)聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系。聯(lián)系名稱(屬性)即關(guān)系名稱(屬性),和聯(lián)系相連的實(shí)體主碼也是關(guān)系的屬性。1:1:任取一個(gè)實(shí)體的主碼為關(guān)系的主碼。1:n:取n對(duì)應(yīng)的實(shí)體主碼為關(guān)系的主碼。m:n:兩個(gè)實(shí)體的主碼為關(guān)系的組合碼。③合并相同主碼的關(guān)系。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院428.3數(shù)據(jù)庫的開發(fā)過程④物理結(jié)構(gòu)設(shè)計(jì)階段數(shù)據(jù)庫在物理設(shè)備上的存儲(chǔ)結(jié)構(gòu)和存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu)。物理結(jié)構(gòu)設(shè)計(jì)主要包括確定數(shù)據(jù)的存放位置;確定關(guān)系、索引、聚簇、日志、備份等的存儲(chǔ)安排;確定系統(tǒng)配置等。設(shè)計(jì)存儲(chǔ)結(jié)構(gòu)時(shí),一般考慮存取時(shí)間、存儲(chǔ)空間利用率和維護(hù)代價(jià)等三方面因素。存取方法一般采用索引存取方法或聚簇存取方法。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院438.3數(shù)據(jù)庫的開發(fā)過程⑤數(shù)據(jù)庫實(shí)施階段數(shù)據(jù)庫實(shí)施階段的主要任務(wù)是數(shù)據(jù)的載入和應(yīng)用程序的編碼與調(diào)試。首先要強(qiáng)調(diào)基礎(chǔ)數(shù)據(jù)的正確,數(shù)據(jù)形式、組織方式、數(shù)據(jù)結(jié)構(gòu)的合理、清晰。為提高數(shù)據(jù)載入效率和準(zhǔn)確度,應(yīng)盡量采用人工和計(jì)算機(jī)輔助相結(jié)合的方式載入數(shù)據(jù)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院448.3數(shù)據(jù)庫的開發(fā)過程載入數(shù)據(jù)之后,要試運(yùn)行數(shù)據(jù)庫,對(duì)數(shù)據(jù)庫進(jìn)行測(cè)試,主要包括功能測(cè)試和性能測(cè)試。功能測(cè)試需要運(yùn)行數(shù)據(jù)庫應(yīng)用程序,執(zhí)行對(duì)數(shù)據(jù)庫的各種操作,測(cè)試應(yīng)用程序的功能是否達(dá)到設(shè)計(jì)要求。性能測(cè)試主要檢查數(shù)據(jù)庫和應(yīng)用程序運(yùn)行中的相關(guān)物理參數(shù)值,測(cè)試其是否達(dá)到設(shè)計(jì)要求。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院458.3數(shù)據(jù)庫的開發(fā)過程⑥數(shù)據(jù)庫運(yùn)行和維護(hù)階段主要任務(wù)是維護(hù)數(shù)據(jù)庫的穩(wěn)定,保證數(shù)據(jù)庫平穩(wěn)運(yùn)行;同時(shí),對(duì)數(shù)據(jù)庫設(shè)計(jì)進(jìn)行評(píng)價(jià),聽取、總結(jié)、分析用戶的需求,必要時(shí)可以對(duì)數(shù)據(jù)庫進(jìn)行適當(dāng)?shù)难a(bǔ)充和修改。數(shù)據(jù)庫的運(yùn)行和維護(hù)是個(gè)長(zhǎng)期的工作,在這一階段應(yīng)注意如下幾個(gè)問題。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院468.3數(shù)據(jù)庫的開發(fā)過程首先,管理員應(yīng)該定期轉(zhuǎn)儲(chǔ)和備份數(shù)據(jù),保證數(shù)據(jù)庫的恢復(fù)機(jī)制可以正常運(yùn)行。其次,應(yīng)注意保證數(shù)據(jù)庫的安全性和完整性,“數(shù)據(jù)溢出”、“數(shù)據(jù)污染”等。最后,管理員應(yīng)定期對(duì)數(shù)據(jù)庫的設(shè)計(jì)和使用情況做出評(píng)價(jià),聽取客戶意見和建議,適當(dāng)修改、調(diào)整數(shù)據(jù)庫的組織與構(gòu)造。數(shù)據(jù)庫的重組并不修改原設(shè)計(jì)的邏輯和物理結(jié)構(gòu),而數(shù)據(jù)庫的重構(gòu)就修改了數(shù)據(jù)庫的模式。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院478.4編程操作數(shù)據(jù)庫JDBC(JavaDataBaseConnectivity,Java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的JavaAPI,它由一組用Java語言編寫的類和接口組成,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問。使用JDBC操作數(shù)據(jù)庫的主要步驟是:與數(shù)據(jù)庫建立連接;向數(shù)據(jù)庫發(fā)送SQL語句,需要java.sql包的支持;處理SQL語句返回的結(jié)果。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院488.4編程操作數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院498.4編程操作數(shù)據(jù)庫8.4.1連接數(shù)據(jù)庫8.4.2查詢數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院508.4.1連接數(shù)據(jù)庫獲取JDBCDriver,并配置ClassPath。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院518.4.2查詢數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院528.4.2查詢數(shù)據(jù)庫游標(biāo)系統(tǒng)為用戶開設(shè)的一個(gè)數(shù)據(jù)緩沖區(qū),用于存放SQL語句的執(zhí)行結(jié)果。為了得到一個(gè)帶有游標(biāo)的結(jié)果集,需使用下述方法獲得一個(gè)Statement對(duì)象。Statementstmt=dbConn.createStatement(inttype,intconcurrency);2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院538.4.2查詢數(shù)據(jù)庫type的取值決定滾動(dòng)的方式。ResultSet.TYPE_FORWARD_ONLY:表示結(jié)果集的游標(biāo)只能向下滾動(dòng)。ResultSet.TYPE_SCROLL_INSENSITIVE:游標(biāo)可以上下滾動(dòng)。當(dāng)數(shù)據(jù)庫變化時(shí),當(dāng)前結(jié)果集不變。ResultSet.TYPE_SCROLL_SENSITIVE:游標(biāo)可以上下滾動(dòng)。當(dāng)數(shù)據(jù)庫變化時(shí),當(dāng)前結(jié)果集同步改變。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院548.4.2查詢數(shù)據(jù)庫Concurrency的取值決定是否用結(jié)果集更新數(shù)據(jù)庫。ResultSet.CONCUR_READ_ONLY:不能用結(jié)果集更新數(shù)據(jù)庫中的表。ResultSet.CONCUR_UPDATABLE:可以用結(jié)果集更新數(shù)據(jù)庫中的表。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院558.4.2查詢數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院568.5案例分析與實(shí)踐8.5.1分析與設(shè)計(jì)8.5.2設(shè)計(jì)數(shù)據(jù)庫8.5.3開發(fā)數(shù)據(jù)庫應(yīng)用程序2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院578.6討論與提高8.6.1事務(wù)與并發(fā)8.6.2使用存儲(chǔ)過程8.6.3查詢優(yōu)化——消除不必要的循環(huán)8.6.4測(cè)試數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院588.6.1事務(wù)與并發(fā)事務(wù)是數(shù)據(jù)庫應(yīng)用程序的基本邏輯單元,它是用戶定義的一個(gè)數(shù)據(jù)庫的操作序列,這些操作要么全做,要么全不做,是一個(gè)不可分割的基本單位。為完成數(shù)據(jù)庫操作,并保證數(shù)據(jù)一致性,所有針對(duì)數(shù)據(jù)庫的讀寫操作都被添加在各種強(qiáng)度的鎖下,如共享鎖或排它鎖。在共享鎖中,用戶可以同時(shí)讀取數(shù)據(jù);在排它鎖中,用戶不能同時(shí)讀取、更新數(shù)據(jù),只能等待其他用戶釋放對(duì)數(shù)據(jù)的鎖。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院598.6.1事務(wù)與并發(fā)事務(wù)占用的時(shí)間越長(zhǎng),用戶等待的時(shí)間就越長(zhǎng)。提高性能的首要任務(wù)就是控制事務(wù)的運(yùn)行時(shí)間。因?yàn)槭聞?wù)具有隔離性,一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾,所以在適當(dāng)?shù)逆i的規(guī)范下,事務(wù)之間可以有序地并發(fā)執(zhí)行。通過并發(fā)執(zhí)行,加快了數(shù)據(jù)庫執(zhí)行效率。利用事務(wù)的并發(fā)操作,可以在事務(wù)級(jí)別提高數(shù)據(jù)庫的性能。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院608.6.1事務(wù)與并發(fā)1.在JDBC中批量執(zhí)行SQLJDBC中的批量更新特征允許多個(gè)更新操作被傳遞到DBMS上來簡(jiǎn)化過程。被執(zhí)行在批量模型上的SQL代碼,可以用addBatch()方法添加到一個(gè)與statement對(duì)象有關(guān)的列表上,并用clearBatch()對(duì)象方法,列表能被清空。當(dāng)在列表中添加語句后,調(diào)用executeBatch()對(duì)象方法,并把它們?nèi)總鬟f到數(shù)據(jù)庫上作為一個(gè)單元或批量被執(zhí)行。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院618.6.1事務(wù)與并發(fā)2.選擇合適的隔離級(jí)別隔離是指一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾,即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)其他并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。需要注意的是,事務(wù)的隔離級(jí)別越高,越應(yīng)該小心避免并發(fā)的沖突。隔離級(jí)別可以在JDBCAPI級(jí)別上進(jìn)行設(shè)置,以便于DBMS決定合適的加鎖計(jì)劃??梢栽贘DBCConnection接口上指定5種隔離級(jí)別,如表8.8所示2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院628.6.1事務(wù)與并發(fā)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院638.6.1事務(wù)與并發(fā)對(duì)于一個(gè)連接,隔離級(jí)別可以通過調(diào)用setTransactionIsolation()方法設(shè)置隔離級(jí)別。應(yīng)用程序通過如下代碼來設(shè)置一個(gè)事務(wù)的隔離級(jí)別。注意,在一個(gè)數(shù)據(jù)庫應(yīng)用系統(tǒng)中,重要的事務(wù)應(yīng)該有較高的隔離級(jí)別,不重要的事務(wù)可以用較低的隔離級(jí)別來完成。而且在事務(wù)啟動(dòng)之前,隔離級(jí)別必須被設(shè)置,并且在事務(wù)完成之后重新設(shè)置。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院648.6.2使用存儲(chǔ)過程一組為完成特定功能的SQL語句集,存儲(chǔ)在數(shù)據(jù)庫中,經(jīng)過第一次編譯之后再次調(diào)用時(shí)不需要再次編譯,用戶通過指定存儲(chǔ)過程的名字并給出參數(shù)來執(zhí)行存儲(chǔ)過程。使用存儲(chǔ)過程可以在數(shù)據(jù)層級(jí)別提高數(shù)據(jù)庫的性能。使用存儲(chǔ)過程可以在數(shù)據(jù)層提高數(shù)據(jù)庫的性能,是優(yōu)化數(shù)據(jù)庫的技術(shù)手段之一。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院658.6.2使用存儲(chǔ)過程1.創(chuàng)建存儲(chǔ)過程CREATEProcedure<過程名>([參數(shù)1數(shù)據(jù)類型1,參數(shù)2數(shù)據(jù)類型2,…])AS<SQL語句集(過程體)>過程名:是數(shù)據(jù)庫識(shí)別存儲(chǔ)過程的標(biāo)識(shí)。參數(shù)列表:存儲(chǔ)過程中的形式列表,用名字來標(biāo)識(shí)調(diào)用存儲(chǔ)過程時(shí)需要給出的參數(shù)值。必須指定值的數(shù)據(jù)類型。過程體:是一個(gè)SQL語句集。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院668.6.2使用存儲(chǔ)過程例如,在CategoryPlayer表(屬性包括CategoryID、PlayerID、Grade)中,修改答題者編號(hào)(PlayerID)為@p1的答題者在題目分組(CategoryID)為@c1的分組中的成績(jī),將成績(jī)改為@g1。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院678.6.2使用存儲(chǔ)過程2.使用JDBC調(diào)用存儲(chǔ)過程使用JDBC來調(diào)用數(shù)據(jù)庫中的存儲(chǔ)過程。用JDBC的Statement接口來傳遞調(diào)用命令,調(diào)用返回的結(jié)果放在JDBCResultSet中保存。JDBC調(diào)用存儲(chǔ)過程的代碼如下:2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院688.6.3查詢優(yōu)化——消除不必要的循環(huán)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院698.6.4測(cè)試數(shù)據(jù)庫數(shù)據(jù)庫系統(tǒng)測(cè)試的主要任務(wù)就是測(cè)試數(shù)據(jù)庫及應(yīng)用軟件。對(duì)于應(yīng)用程序,基本的測(cè)試技術(shù)(黑盒測(cè)試、白盒測(cè)試)同樣適合,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育心理學(xué)能力檢測(cè)試卷A卷附答案
- 2024年度山西省高校教師資格證之高等教育法規(guī)??寄M試題(全優(yōu))
- 2024年柔性樹脂版項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 2024年全國注冊(cè)安全工程師安全生產(chǎn)法律知識(shí)考試題庫(含答案)
- 三年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)及答案集錦
- 2024年車輛購買協(xié)議模板
- 2024限量啤酒銷售協(xié)議模板
- 2024年度日本商業(yè)協(xié)議模板集錦
- 2024企業(yè)間緊急無償借款協(xié)議樣本
- 2024年度畢業(yè)生見習(xí)就業(yè)協(xié)議范本
- 中學(xué)生法律知識(shí)競(jìng)賽考試題庫200題(含各題型)
- 公園保潔服務(wù)投標(biāo)方案
- 食品保質(zhì)期延長(zhǎng)技術(shù)研究
- 初中數(shù)學(xué)試題大全(六十九)尺規(guī)作圖難題
- 2024-2030年中國索道纜車市場(chǎng)運(yùn)行狀況與未來經(jīng)營模式分析報(bào)告
- 高一思想政治上冊(cè)2024-2025學(xué)年達(dá)標(biāo)測(cè)試試卷及答案部編版
- SHT+3413-2019+石油化工石油氣管道阻火器選用檢驗(yàn)及驗(yàn)收標(biāo)準(zhǔn)
- 09BJ13-4 鋼制防火門窗、防火卷簾
- 初二廣東省深圳市道德與法治上冊(cè)期中測(cè)試試題及答案
- 古詩詞誦讀《江城子-乙卯正月二十日夜記夢(mèng)》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)統(tǒng)編版高中語文選擇性必修上冊(cè)
- 單身證明書12篇
評(píng)論
0/150
提交評(píng)論