版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章
應(yīng)用數(shù)據(jù)庫(kù)第8章應(yīng)用數(shù)據(jù)庫(kù)討論軟件構(gòu)造中數(shù)據(jù)庫(kù)的使用。介紹關(guān)系數(shù)據(jù)庫(kù)的相關(guān)知識(shí)及結(jié)構(gòu)化查詢語(yǔ)言SQL,學(xué)習(xí)如何創(chuàng)建數(shù)據(jù)庫(kù)、連接數(shù)據(jù)庫(kù)、查詢數(shù)據(jù)庫(kù);學(xué)習(xí)數(shù)據(jù)庫(kù)及應(yīng)用軟件的開(kāi)發(fā),熟練掌握數(shù)據(jù)庫(kù)的增、刪、改、查等操作方法,以及如何在應(yīng)用程序中操作數(shù)據(jù)庫(kù)。還介紹數(shù)據(jù)庫(kù)的深入應(yīng)用。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院2第8章應(yīng)用數(shù)據(jù)庫(kù)故事9引入數(shù)據(jù)庫(kù)系統(tǒng)管理題目和答案。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院3第8章應(yīng)用數(shù)據(jù)庫(kù)8.1數(shù)據(jù)庫(kù)概述8.2結(jié)構(gòu)化查詢語(yǔ)言SQL8.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程8.4編程操作數(shù)據(jù)庫(kù)8.5案例分析與實(shí)踐8.6討論與提高8.7思考與練習(xí)題2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院48.1數(shù)據(jù)庫(kù)概述數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織、可共享的大量數(shù)據(jù)的集合。它的目的是提供一種可以方便、高效地管理數(shù)據(jù)庫(kù)信息的途徑。DBMS是位于用戶(含應(yīng)用程序)和操作系統(tǒng)之間的一種數(shù)據(jù)管理軟件,負(fù)責(zé)數(shù)據(jù)的組織、存儲(chǔ)和管理。數(shù)據(jù)庫(kù)、DBMS、應(yīng)用程序及數(shù)據(jù)庫(kù)管理員構(gòu)成的系統(tǒng)稱為數(shù)據(jù)庫(kù)系統(tǒng)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院58.1數(shù)據(jù)庫(kù)概述8.1.1關(guān)系數(shù)據(jù)庫(kù)8.1.2關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)模型2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院68.1.1關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)領(lǐng)域中最常見(jiàn)的數(shù)據(jù)模型有:層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P?、?duì)象關(guān)系模型。其中,關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫(kù)系統(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ù)庫(kù)1.關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)就是一張二維表。關(guān)系數(shù)據(jù)庫(kù)由表的集合構(gòu)成,每個(gè)表都有唯一的名字。元組(行)、屬性(列)、域、碼、候選碼、主碼、主屬性、組合碼、全碼、外碼、關(guān)系模式……2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院88.1.1關(guān)系數(shù)據(jù)庫(kù)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院98.1.1關(guān)系數(shù)據(jù)庫(kù)2.關(guān)系操作集合2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院108.1.1關(guān)系數(shù)據(jù)庫(kù)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ù)庫(kù)實(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ù)庫(kù)用戶自定義完整性(User-definedIntegrity)關(guān)系數(shù)據(jù)庫(kù)系統(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ù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)由若干基本表組成?;颈碛扇舾稍M組成。表是組成這個(gè)關(guān)系的若干實(shí)體。表與表之間同時(shí)還存在參照關(guān)系,通過(guò)外碼表達(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)系的主屬性之間的箭頭來(lái)表示。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院148.1.1關(guān)系數(shù)據(jù)庫(kù)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院158.1.1關(guān)系數(shù)據(jù)庫(kù)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院168.1.2關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)模型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)支持?jǐn)?shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu),如圖8.2所示。內(nèi)模式對(duì)應(yīng)存儲(chǔ)文件,模式包含數(shù)據(jù)庫(kù)中最重要的基本表,外模式對(duì)應(yīng)于部分基本表和由基本表導(dǎo)出的視圖。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院178.1.2關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)模型內(nèi)模式,也稱為存儲(chǔ)模式,一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式。它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方式。在關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中,存儲(chǔ)文件的邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫(kù)的內(nèi)模式。存儲(chǔ)文件的物理結(jié)構(gòu)對(duì)用戶是透明的,可以由用戶來(lái)定義。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院188.1.2關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)模型模式,也稱為邏輯模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。在關(guān)系數(shù)據(jù)庫(kù)中,模式是所有基本表的集合。每個(gè)基本表表達(dá)了一個(gè)關(guān)系。一個(gè)或多個(gè)基本表存儲(chǔ)在一個(gè)存儲(chǔ)文件中。所有基本表都保存在數(shù)據(jù)庫(kù)模式中。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院198.1.2關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)模型外模式也稱為用戶模式,它是數(shù)據(jù)庫(kù)用戶能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖。在關(guān)系數(shù)據(jù)庫(kù)中,外模式包含部分的基本表和由一些基本表導(dǎo)出的視圖。需注意,一個(gè)數(shù)據(jù)庫(kù)中可以同時(shí)有多個(gè)外模式。同一個(gè)外模式可以被用戶的多個(gè)應(yīng)用使用,但一個(gè)應(yīng)用只能用一個(gè)外模式。外模式是保證數(shù)據(jù)庫(kù)安全性的一個(gè)重要手段。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院208.2結(jié)構(gòu)化查詢語(yǔ)言SQL8.2.1SQL概述8.2.2創(chuàng)建基本表的CREATE語(yǔ)句8.2.3插入元組的INSERT語(yǔ)句8.2.4刪除元組的DELETE語(yǔ)句8.2.5更新元組的UPDATE語(yǔ)句8.2.6選擇元組的SELECT語(yǔ)句2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院218.2.1SQL概述SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語(yǔ)言)分為以下幾個(gè)部分。數(shù)據(jù)定義語(yǔ)言(DataDefinitionLanguage):針對(duì)數(shù)據(jù)庫(kù)和基本表的結(jié)構(gòu)所做的定義。數(shù)據(jù)操縱語(yǔ)言(DataManipulationLanguage):對(duì)已定義的數(shù)據(jù)增、刪、改、查。數(shù)據(jù)控制語(yǔ)言(DataControlLanguage):完整性約束(Integrity):2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院228.2.1SQL概述SQL主要解決的三個(gè)問(wèn)題就是關(guān)系數(shù)據(jù)模型的三個(gè)要素。視圖定義:從基本表導(dǎo)出的虛表,DDL提供視圖定義的命令語(yǔ)句。事務(wù)控制:SQL包括定義事務(wù)開(kāi)始和結(jié)束的命令。訪問(wèn)權(quán)限:SQLDDL定義了對(duì)關(guān)系和視圖訪問(wèn)權(quán)限的命令。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院238.2.1SQL概述SQL實(shí)現(xiàn)了關(guān)系模型的一些主要特點(diǎn)。SQL是集數(shù)據(jù)定義語(yǔ)言DDL、數(shù)據(jù)操縱語(yǔ)言DML和數(shù)據(jù)控制語(yǔ)言DCL功能于一體的查詢語(yǔ)言。SQL是高度非過(guò)程化的查詢語(yǔ)言。用戶只需指明“怎么做”、“想要什么”,而無(wú)須說(shuō)明查詢的步驟。SQL采用的是集合的運(yùn)算方式。操作對(duì)象是元組的集合,插入、刪除、修改的對(duì)象及查詢得到的結(jié)果都可以是元組的集合。SQL使用動(dòng)詞來(lái)表達(dá)功能。核心動(dòng)詞9個(gè)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院248.2.1SQL概述用SQL語(yǔ)言有兩種方式:一種是在終端交互方式下使用,稱為交互式SQL;另一種是把SQL嵌入在高級(jí)程序設(shè)計(jì)語(yǔ)言中使用,稱為嵌入式SQL。這些高級(jí)語(yǔ)言可以是C、Java、C#、Python等,稱為宿主語(yǔ)言。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院258.2.2創(chuàng)建基本表的CREATE語(yǔ)句CREATETABLE語(yǔ)句定義基本表。CREATETABLE<表名>
(<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件][,<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件]]…[,<表級(jí)完整性約束條件>]);2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院268.2.2創(chuàng)建基本表的CREATE語(yǔ)句2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院278.2.3插入元組的INSERT語(yǔ)句INSERT插入語(yǔ)句的一般格式為: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語(yǔ)句DELETE語(yǔ)句的一般形式為:DELETEFROM<表名>
[WHERE<條件>];刪除編號(hào)為1001的題目:DELETEFROMQuestionWHEREQuestionID=’1001’;刪除所有的題目:DELETEFROMQuestion;2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院298.2.5更新元組的UPDATE語(yǔ)句UIPDATE語(yǔ)句的一般形式為: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語(yǔ)句SELECT語(yǔ)句的功能是查詢數(shù)據(jù)庫(kù)中存儲(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ù)庫(kù)的開(kāi)發(fā)過(guò)程數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)分為6階段。需求分析階段;概念結(jié)構(gòu)設(shè)計(jì)階段;邏輯結(jié)構(gòu)設(shè)計(jì)階段;物理結(jié)構(gòu)設(shè)計(jì)階段;數(shù)據(jù)庫(kù)實(shí)施階段;數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院328.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程①需求分析階段首要任務(wù)是通過(guò)詳盡調(diào)查明確用戶的組成,包括用戶的身份、權(quán)限、職責(zé)及分配的工作等;其次,詳細(xì)調(diào)查各用戶組對(duì)數(shù)據(jù)庫(kù)的操作,包括各用戶組將對(duì)數(shù)據(jù)庫(kù)輸入的信息、如何使用這些信息、輸出什么信息及其格式等;將輸入的信息分類存儲(chǔ),以便在邏輯分析階段生成數(shù)據(jù)庫(kù)模式,即基本表;最后,需要確定系統(tǒng)的邊界。對(duì)前面調(diào)查的結(jié)果進(jìn)行初步分析,確定哪些功能由計(jì)算機(jī)完成或?qū)?lái)讓計(jì)算機(jī)完成,哪些活動(dòng)由人工完成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院338.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程(1)用戶的組成2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院348.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程(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ù)庫(kù)的開(kāi)發(fā)過(guò)程(3)系統(tǒng)邊界系統(tǒng)可以自動(dòng)生成算術(shù)題目并得到運(yùn)算結(jié)果,可以完成答題結(jié)果的檢查、統(tǒng)計(jì)成績(jī)分布;可以根據(jù)人工設(shè)定的難度級(jí)別來(lái)生成相應(yīng)難度的算術(shù)題目;無(wú)法分析錯(cuò)誤題目的出錯(cuò)原因。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院368.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程②概念結(jié)構(gòu)設(shè)計(jì)階段將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)(概念模型)的過(guò)程就是概念結(jié)構(gòu)設(shè)計(jì),是整個(gè)數(shù)據(jù)庫(kù)設(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ù)庫(kù)的開(kāi)發(fā)過(guò)程E-R模型是描述概念模型的有力工具?!癊”表示實(shí)體型,E-R圖中用矩形表示,矩形框內(nèi)寫明實(shí)體名;用橢圓表示實(shí)體的屬性,并用無(wú)向邊將其與相應(yīng)的實(shí)體連接起來(lái);“R”表示聯(lián)系,在E-R圖中用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無(wú)向邊分別與有關(guān)的實(shí)體型連接起來(lái),同時(shí)在無(wú)向邊旁標(biāo)記聯(lián)系的類型。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院388.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程兩個(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ù)庫(kù)的開(kāi)發(fā)過(guò)程2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院408.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程③邏輯結(jié)構(gòu)設(shè)計(jì)階段邏輯結(jié)構(gòu)設(shè)計(jì)階段的主要任務(wù)是將概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R模型轉(zhuǎn)換為數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院418.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程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ù)庫(kù)的開(kāi)發(fā)過(guò)程④物理結(jié)構(gòu)設(shè)計(jì)階段數(shù)據(jù)庫(kù)在物理設(shè)備上的存儲(chǔ)結(jié)構(gòu)和存取方法稱為數(shù)據(jù)庫(kù)的物理結(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ù)庫(kù)的開(kāi)發(fā)過(guò)程⑤數(shù)據(jù)庫(kù)實(shí)施階段數(shù)據(jù)庫(kù)實(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ù)庫(kù)的開(kāi)發(fā)過(guò)程載入數(shù)據(jù)之后,要試運(yùn)行數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行測(cè)試,主要包括功能測(cè)試和性能測(cè)試。功能測(cè)試需要運(yùn)行數(shù)據(jù)庫(kù)應(yīng)用程序,執(zhí)行對(duì)數(shù)據(jù)庫(kù)的各種操作,測(cè)試應(yīng)用程序的功能是否達(dá)到設(shè)計(jì)要求。性能測(cè)試主要檢查數(shù)據(jù)庫(kù)和應(yīng)用程序運(yùn)行中的相關(guān)物理參數(shù)值,測(cè)試其是否達(dá)到設(shè)計(jì)要求。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院458.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程⑥數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段主要任務(wù)是維護(hù)數(shù)據(jù)庫(kù)的穩(wěn)定,保證數(shù)據(jù)庫(kù)平穩(wěn)運(yùn)行;同時(shí),對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)進(jìn)行評(píng)價(jià),聽(tīng)取、總結(jié)、分析用戶的需求,必要時(shí)可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行適當(dāng)?shù)难a(bǔ)充和修改。數(shù)據(jù)庫(kù)的運(yùn)行和維護(hù)是個(gè)長(zhǎng)期的工作,在這一階段應(yīng)注意如下幾個(gè)問(wèn)題。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院468.3數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程首先,管理員應(yīng)該定期轉(zhuǎn)儲(chǔ)和備份數(shù)據(jù),保證數(shù)據(jù)庫(kù)的恢復(fù)機(jī)制可以正常運(yùn)行。其次,應(yīng)注意保證數(shù)據(jù)庫(kù)的安全性和完整性,“數(shù)據(jù)溢出”、“數(shù)據(jù)污染”等。最后,管理員應(yīng)定期對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)和使用情況做出評(píng)價(jià),聽(tīng)取客戶意見(jiàn)和建議,適當(dāng)修改、調(diào)整數(shù)據(jù)庫(kù)的組織與構(gòu)造。數(shù)據(jù)庫(kù)的重組并不修改原設(shè)計(jì)的邏輯和物理結(jié)構(gòu),而數(shù)據(jù)庫(kù)的重構(gòu)就修改了數(shù)據(jù)庫(kù)的模式。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院478.4編程操作數(shù)據(jù)庫(kù)JDBC(JavaDataBaseConnectivity,Java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI,它由一組用Java語(yǔ)言編寫的類和接口組成,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn)。使用JDBC操作數(shù)據(jù)庫(kù)的主要步驟是:與數(shù)據(jù)庫(kù)建立連接;向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句,需要java.sql包的支持;處理SQL語(yǔ)句返回的結(jié)果。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院488.4編程操作數(shù)據(jù)庫(kù)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院498.4編程操作數(shù)據(jù)庫(kù)8.4.1連接數(shù)據(jù)庫(kù)8.4.2查詢數(shù)據(jù)庫(kù)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院508.4.1連接數(shù)據(jù)庫(kù)獲取JDBCDriver,并配置ClassPath。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院518.4.2查詢數(shù)據(jù)庫(kù)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院528.4.2查詢數(shù)據(jù)庫(kù)游標(biāo)系統(tǒng)為用戶開(kāi)設(shè)的一個(gè)數(shù)據(jù)緩沖區(qū),用于存放SQL語(yǔ)句的執(zhí)行結(jié)果。為了得到一個(gè)帶有游標(biāo)的結(jié)果集,需使用下述方法獲得一個(gè)Statement對(duì)象。Statementstmt=dbConn.createStatement(inttype,intconcurrency);2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院538.4.2查詢數(shù)據(jù)庫(kù)type的取值決定滾動(dòng)的方式。ResultSet.TYPE_FORWARD_ONLY:表示結(jié)果集的游標(biāo)只能向下滾動(dòng)。ResultSet.TYPE_SCROLL_INSENSITIVE:游標(biāo)可以上下滾動(dòng)。當(dāng)數(shù)據(jù)庫(kù)變化時(shí),當(dāng)前結(jié)果集不變。ResultSet.TYPE_SCROLL_SENSITIVE:游標(biāo)可以上下滾動(dòng)。當(dāng)數(shù)據(jù)庫(kù)變化時(shí),當(dāng)前結(jié)果集同步改變。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院548.4.2查詢數(shù)據(jù)庫(kù)Concurrency的取值決定是否用結(jié)果集更新數(shù)據(jù)庫(kù)。ResultSet.CONCUR_READ_ONLY:不能用結(jié)果集更新數(shù)據(jù)庫(kù)中的表。ResultSet.CONCUR_UPDATABLE:可以用結(jié)果集更新數(shù)據(jù)庫(kù)中的表。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院558.4.2查詢數(shù)據(jù)庫(kù)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院568.5案例分析與實(shí)踐8.5.1分析與設(shè)計(jì)8.5.2設(shè)計(jì)數(shù)據(jù)庫(kù)8.5.3開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院578.6討論與提高8.6.1事務(wù)與并發(fā)8.6.2使用存儲(chǔ)過(guò)程8.6.3查詢優(yōu)化——消除不必要的循環(huán)8.6.4測(cè)試數(shù)據(jù)庫(kù)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院588.6.1事務(wù)與并發(fā)事務(wù)是數(shù)據(jù)庫(kù)應(yīng)用程序的基本邏輯單元,它是用戶定義的一個(gè)數(shù)據(jù)庫(kù)的操作序列,這些操作要么全做,要么全不做,是一個(gè)不可分割的基本單位。為完成數(shù)據(jù)庫(kù)操作,并保證數(shù)據(jù)一致性,所有針對(duì)數(shù)據(jù)庫(kù)的讀寫操作都被添加在各種強(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í)行。通過(guò)并發(fā)執(zhí)行,加快了數(shù)據(jù)庫(kù)執(zhí)行效率。利用事務(wù)的并發(fā)操作,可以在事務(wù)級(jí)別提高數(shù)據(jù)庫(kù)的性能。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院608.6.1事務(wù)與并發(fā)1.在JDBC中批量執(zhí)行SQLJDBC中的批量更新特征允許多個(gè)更新操作被傳遞到DBMS上來(lái)簡(jiǎn)化過(guò)程。被執(zhí)行在批量模型上的SQL代碼,可以用addBatch()方法添加到一個(gè)與statement對(duì)象有關(guān)的列表上,并用clearBatch()對(duì)象方法,列表能被清空。當(dāng)在列表中添加語(yǔ)句后,調(diào)用executeBatch()對(duì)象方法,并把它們?nèi)總鬟f到數(shù)據(jù)庫(kù)上作為一個(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ì)劃。可以在JDBCConnection接口上指定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í)別可以通過(guò)調(diào)用setTransactionIsolation()方法設(shè)置隔離級(jí)別。應(yīng)用程序通過(guò)如下代碼來(lái)設(shè)置一個(gè)事務(wù)的隔離級(jí)別。注意,在一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,重要的事務(wù)應(yīng)該有較高的隔離級(jí)別,不重要的事務(wù)可以用較低的隔離級(jí)別來(lái)完成。而且在事務(wù)啟動(dòng)之前,隔離級(jí)別必須被設(shè)置,并且在事務(wù)完成之后重新設(shè)置。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院648.6.2使用存儲(chǔ)過(guò)程一組為完成特定功能的SQL語(yǔ)句集,存儲(chǔ)在數(shù)據(jù)庫(kù)中,經(jīng)過(guò)第一次編譯之后再次調(diào)用時(shí)不需要再次編譯,用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)來(lái)執(zhí)行存儲(chǔ)過(guò)程。使用存儲(chǔ)過(guò)程可以在數(shù)據(jù)層級(jí)別提高數(shù)據(jù)庫(kù)的性能。使用存儲(chǔ)過(guò)程可以在數(shù)據(jù)層提高數(shù)據(jù)庫(kù)的性能,是優(yōu)化數(shù)據(jù)庫(kù)的技術(shù)手段之一。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院658.6.2使用存儲(chǔ)過(guò)程1.創(chuàng)建存儲(chǔ)過(guò)程CREATEProcedure<過(guò)程名>([參數(shù)1數(shù)據(jù)類型1,參數(shù)2數(shù)據(jù)類型2,…])AS<SQL語(yǔ)句集(過(guò)程體)>過(guò)程名:是數(shù)據(jù)庫(kù)識(shí)別存儲(chǔ)過(guò)程的標(biāo)識(shí)。參數(shù)列表:存儲(chǔ)過(guò)程中的形式列表,用名字來(lái)標(biāo)識(shí)調(diào)用存儲(chǔ)過(guò)程時(shí)需要給出的參數(shù)值。必須指定值的數(shù)據(jù)類型。過(guò)程體:是一個(gè)SQL語(yǔ)句集。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院668.6.2使用存儲(chǔ)過(guò)程例如,在CategoryPlayer表(屬性包括CategoryID、PlayerID、Grade)中,修改答題者編號(hào)(PlayerID)為@p1的答題者在題目分組(CategoryID)為@c1的分組中的成績(jī),將成績(jī)改為@g1。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院678.6.2使用存儲(chǔ)過(guò)程2.使用JDBC調(diào)用存儲(chǔ)過(guò)程使用JDBC來(lái)調(diào)用數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程。用JDBC的Statement接口來(lái)傳遞調(diào)用命令,調(diào)用返回的結(jié)果放在JDBCResultSet中保存。JDBC調(diào)用存儲(chǔ)過(guò)程的代碼如下:2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院688.6.3查詢優(yōu)化——消除不必要的循環(huán)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院698.6.4測(cè)試數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)系統(tǒng)測(cè)試的主要任務(wù)就是測(cè)試數(shù)據(jù)庫(kù)及應(yīng)用軟件。對(duì)于應(yīng)用程序,基本的測(cè)試技術(shù)(黑盒測(cè)試、白盒測(cè)試)同樣適合,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科貿(mào)職業(yè)學(xué)院《英語(yǔ)閱讀4》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東酒店管理職業(yè)技術(shù)學(xué)院《安全人機(jī)工程課程設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東交通職業(yè)技術(shù)學(xué)院《教師職業(yè)道德規(guī)范》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工商職業(yè)技術(shù)大學(xué)《生物制藥過(guò)程自動(dòng)化技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東第二師范學(xué)院《系統(tǒng)化品牌設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東潮州衛(wèi)生健康職業(yè)學(xué)院《名案研討》2023-2024學(xué)年第一學(xué)期期末試卷
- 《總分析誤差》課件
- 《干部管理技能精座》課件
- 廣安職業(yè)技術(shù)學(xué)院《中醫(yī)眼科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 共青科技職業(yè)學(xué)院《品牌與形象》2023-2024學(xué)年第一學(xué)期期末試卷
- 追求“真實(shí)、樸實(shí)、扎實(shí)”的語(yǔ)文課堂
- 螺桿空壓機(jī)操作規(guī)程完整
- 702班素質(zhì)評(píng)價(jià)觀測(cè)學(xué)生填寫完成情況檢查
- 大學(xué)學(xué)院成績(jī)單(模板)
- 奧林燃燒器說(shuō)明書(GP130-150H)
- 康復(fù)治療學(xué)專業(yè)畢業(yè)生的培養(yǎng)與就業(yè)分析
- 績(jī)效管理模塊-績(jī)效管理與績(jī)效考核制度
- 《工人工資發(fā)放承諾書范文 》
- 馬達(dá)加斯加 礦產(chǎn)和能源開(kāi)發(fā)戰(zhàn)略
- 忘憂草(周華健)原版五線譜鋼琴譜正譜樂(lè)譜.docx
- XX公司紀(jì)檢監(jiān)察機(jī)構(gòu)談話筆錄模板
評(píng)論
0/150
提交評(píng)論