版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)應(yīng)用河南理工大學(xué)計算機學(xué)院喬應(yīng)旭qiaoyingxu@網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)應(yīng)用第一章緒論1.1數(shù)據(jù)庫基本概念數(shù)據(jù)庫(Database)數(shù)據(jù)庫管理系統(tǒng)(DBMS)數(shù)據(jù)數(shù)據(jù)(Data)是數(shù)據(jù)庫中存儲的基本對象數(shù)據(jù)的定義描述事物的符號記錄數(shù)據(jù)的種類文本、圖形、圖像、音頻、視頻、學(xué)生的檔案記錄、貨物的運輸情況等數(shù)據(jù)的特點數(shù)據(jù)與其語義是不可分的數(shù)據(jù)舉例數(shù)據(jù)的含義稱為數(shù)據(jù)的語義,數(shù)據(jù)與其語義是不可分的。例如93是一個數(shù)據(jù)語義1:學(xué)生某門課的成績語義2:某人的體重語義3:計算機系2003級學(xué)生人數(shù)語義4:請同學(xué)給出。。。數(shù)據(jù)舉例學(xué)生檔案中的學(xué)生記錄(李明,男,197205,江蘇南京市,計算機系,1990)語義:學(xué)生姓名、性別、出生年月、籍貫、所在院系、入學(xué)時間解釋:李明是個大學(xué)生,1972年5月出生,江蘇南京市人,1990年考入計算機系數(shù)據(jù)庫(續(xù))數(shù)據(jù)庫的定義數(shù)據(jù)庫(Database,簡稱DB)是長期儲存在計算機內(nèi)、有組織的、可共享的大量數(shù)據(jù)集合數(shù)據(jù)庫(續(xù))數(shù)據(jù)庫的特征最小冗余數(shù)據(jù)獨立性較高安全性完整性數(shù)據(jù)共享數(shù)據(jù)庫管理系統(tǒng)什么是DBMS數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,簡稱DBMS)是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。DBMS的用途科學(xué)地組織和存儲數(shù)據(jù)、高效地獲取和維護數(shù)據(jù)DBMS的主要功能數(shù)據(jù)定義數(shù)據(jù)組織、存儲和管理數(shù)據(jù)操縱功能數(shù)據(jù)庫的事務(wù)管理和運行管理數(shù)據(jù)庫的建立和維護功能
1.2數(shù)據(jù)模型數(shù)據(jù)模型在數(shù)據(jù)庫中用數(shù)據(jù)模型這個工具來抽象、表示和處理現(xiàn)實世界中的數(shù)據(jù)和信息。通俗地講數(shù)據(jù)模型就是現(xiàn)實世界的模擬數(shù)據(jù)模型應(yīng)滿足三方面要求能比較真實地模擬現(xiàn)實世界容易為人所理解便于在計算機上實現(xiàn)兩大類數(shù)據(jù)模型數(shù)據(jù)模型分為兩類(分屬兩個不同的層次)(1)概念模型也稱信息模型,它是按用戶的觀點來對數(shù)據(jù)和信息建模,用于數(shù)據(jù)庫設(shè)計。(2)邏輯模型和物理模型邏輯模型主要包括網(wǎng)狀模型、層次模型、關(guān)系模型、面向?qū)ο竽P偷?,按計算機系統(tǒng)的觀點對數(shù)據(jù)建模,用于DBMS實現(xiàn)。物理模型是對數(shù)據(jù)最底層的抽象,描述數(shù)據(jù)在系統(tǒng)內(nèi)部的表示方式和存取方法,在磁盤或磁帶上的存儲方式和存取方法。1.2.1概念模型概念模型的用途概念模型用于信息世界的建模是現(xiàn)實世界到機器世界的一個中間層次是數(shù)據(jù)庫設(shè)計的有力工具數(shù)據(jù)庫設(shè)計人員和用戶之間進行交流的語言對概念模型的基本要求較強的語義表達能力,能夠方便、直接地表達應(yīng)用中的各種語義知識簡單、清晰、易于用戶理解。概念模型的一種表示方法實體-聯(lián)系方法(E-R方法)用E-R圖來描述現(xiàn)實世界的概念模型E-R方法也稱為E-R模型E-R圖實體型用矩形表示,矩形框內(nèi)寫明實體名。學(xué)生教師E-R圖(續(xù))屬性用橢圓形表示,并用無向邊將其與相應(yīng)的實體連接起來學(xué)生學(xué)號年齡性別姓名E-R圖(續(xù))聯(lián)系聯(lián)系本身:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)實體連接起來,同時在無向邊旁標上聯(lián)系的類型(1:1、1:n或m:n)聯(lián)系屬性的表示方法課程選修學(xué)生mn成績聯(lián)系的屬性:聯(lián)系本身也是一種實體型,也可以有屬性。如果一個聯(lián)系具有屬性,則這些屬性也要用無向邊與該聯(lián)系連接起來陳品山1968年,陳品山于國立臺灣大學(xué)畢業(yè),之后赴美國深造。1970年獲哈佛大學(xué)計算機科學(xué)和應(yīng)用數(shù)學(xué)碩士學(xué)位,1973年獲哈佛大學(xué)計算機科學(xué)和應(yīng)用數(shù)學(xué)博士學(xué)位。之后,他曾先后在麻省理工學(xué)院(1974-1978,1986-1987),加州大學(xué)洛杉磯分校(1978-1984),哈佛大學(xué)(1990-1991)等學(xué)府從事教學(xué)和研究,從1983年至今任路易斯安納州立大學(xué)計算機科學(xué)系MurphyJ.Foster杰出講座教授
陳品山博士于1976年3月ACMTransactionsonDatabaseSystems上發(fā)表了《TheEntity-RelationshipModel--TowardaUnifiedViewofData》一文。由于大眾廣泛使用實體聯(lián)系模型,而這篇文章已成為計算機科學(xué)38篇被廣泛引用的論文中之一。且被譽為全世界最具計算機軟件開發(fā)技術(shù)的16位科學(xué)家之一。最常用的數(shù)據(jù)模型非關(guān)系模型層次模型(HierarchicalModel)網(wǎng)狀模型(NetworkModel)關(guān)系模型(RelationalModel)層次模型層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型
層次模型用樹形結(jié)構(gòu)來表示各類實體以及實體間的聯(lián)系層次數(shù)據(jù)庫系統(tǒng)的典型代表是IBM公司的IMS(InformationManagementSystem)數(shù)據(jù)庫管理系統(tǒng)IMS數(shù)據(jù)庫IMS數(shù)據(jù)庫是目前世界上廣泛使用的層次型數(shù)據(jù)庫,是由IBM公司于1966~1968年為NASA(美國國家航空航天局)的阿波羅登月計劃專門開發(fā)的。在阿波羅登月計劃之后,IMS數(shù)據(jù)庫又被廣泛應(yīng)用在金融、保險、制造等多個行業(yè),至今已近40年。層次型數(shù)據(jù)庫是一種以樹型邏輯拓撲結(jié)構(gòu)進行數(shù)據(jù)存儲和查找的數(shù)據(jù)庫體系,特別適合于存儲銀行,保險等總賬戶、子賬戶和明細記錄的多層次邏輯結(jié)構(gòu),也非常適合支持高可用性、高性能、高容量、高完整性和低成本的關(guān)鍵性聯(lián)機操作應(yīng)用程序和數(shù)據(jù),被國外的大型銀行、保險等金融企業(yè)廣泛使用。層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)滿足下面兩個條件的基本層次聯(lián)系的集合為層次模型。1.有且只有一個結(jié)點沒有雙親結(jié)點,這個結(jié)點稱為根結(jié)點2.根以外的其它結(jié)點有且只有一個雙親結(jié)點層次模型中的幾個術(shù)語根結(jié)點,雙親結(jié)點,兄弟結(jié)點,葉結(jié)點層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)(續(xù))
R1
根結(jié)點
R2
兄弟結(jié)點
R3
葉結(jié)點
R4
兄弟結(jié)點
R5
葉結(jié)點
葉結(jié)點層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)(續(xù))層次模型的特點:結(jié)點的雙親是唯一的只能直接處理一對多的實體聯(lián)系每個記錄類型可以定義一個排序字段,也稱為碼字段任何記錄值只有按其路徑查看時,才能顯出它的全部意義沒有一個子女記錄值能夠脫離雙親記錄值而獨立存在層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)(續(xù))
根結(jié)點葉結(jié)點記錄型系的子女結(jié)點記錄型教員的雙親結(jié)點字段葉結(jié)點層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)(續(xù))層次模型的數(shù)據(jù)操縱與完整性約束無相應(yīng)的雙親結(jié)點值就不能插入子女結(jié)點值如果刪除雙親結(jié)點值,則相應(yīng)的子女結(jié)點值也被同時刪除更新操作時,應(yīng)更新所有相應(yīng)記錄,以保證數(shù)據(jù)的一致性層次模型的優(yōu)缺點優(yōu)點層次數(shù)據(jù)模型簡單,對具有一對多的層次關(guān)系的部門描述自然、直觀,容易理解性能優(yōu)于關(guān)系模型,不低于網(wǎng)狀模型層次數(shù)據(jù)模型提供了良好的完整性支持缺點多對多聯(lián)系表示不自然對插入和刪除操作的限制多查詢子女結(jié)點必須通過雙親結(jié)點層次命令趨于程序化網(wǎng)狀模型網(wǎng)狀數(shù)據(jù)庫系統(tǒng)采用網(wǎng)狀模型作為數(shù)據(jù)的組織方式實際系統(tǒng)CullinetSoftwareInc.公司的IDMSUnivac公司的DMS1100Honeywell公司的IDS/2HP公司的IMAGE網(wǎng)狀數(shù)據(jù)庫網(wǎng)狀數(shù)據(jù)庫系統(tǒng)采用網(wǎng)狀模型作為數(shù)據(jù)的組織方式網(wǎng)狀模型滿足下面兩個條件的基本層次聯(lián)系的集合:1.允許一個以上的結(jié)點無雙親;2.一個結(jié)點可以有多于一個的雙親網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)表示方法(與層次數(shù)據(jù)模型相同)實體型:用記錄類型描述每個結(jié)點表示一個記錄類型(實體)屬性:用字段描述每個記錄類型可包含若干個字段聯(lián)系:用結(jié)點之間的連線表示記錄類型(實體)之間的一對多的父子聯(lián)系網(wǎng)狀模型與層次模型的區(qū)別網(wǎng)狀模型允許多個結(jié)點沒有雙親結(jié)點網(wǎng)狀模型允許結(jié)點有多個雙親結(jié)點網(wǎng)狀模型允許兩個結(jié)點之間有多種聯(lián)系(復(fù)合聯(lián)系)網(wǎng)狀模型可以更直接地去描述現(xiàn)實世界層次模型實際上是網(wǎng)狀模型的一個特例網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)網(wǎng)狀模型中子女結(jié)點與雙親結(jié)點的聯(lián)系可以不唯一要為每個聯(lián)系命名,并指出與該聯(lián)系有關(guān)的雙親記錄和子女記錄R1與R3之間的聯(lián)系L1R2與R3之間的聯(lián)系L2
網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點優(yōu)點能夠更為直接地描述現(xiàn)實世界,如一個結(jié)點可以有多個雙親具有良好的性能,存取效率較高缺點結(jié)構(gòu)比較復(fù)雜,而且隨著應(yīng)用環(huán)境的擴大,數(shù)據(jù)庫的結(jié)構(gòu)就變得越來越復(fù)雜,不利于最終用戶掌握DDL、DML語言復(fù)雜,用戶不容易使用關(guān)系模型關(guān)系數(shù)據(jù)庫系統(tǒng)采用關(guān)系模型作為數(shù)據(jù)的組織方式
1970年美國IBM公司SanJose研究室的研究員E.F.Codd首次提出了數(shù)據(jù)庫系統(tǒng)的關(guān)系模型計算機廠商新推出的數(shù)據(jù)庫管理系統(tǒng)幾乎都支持關(guān)系模型
埃德加·考特1981年的圖靈獎關(guān)系數(shù)據(jù)庫之父參加了IBM第一臺科學(xué)計算機701以及第一臺大型晶體管計算機STRETCH的邏輯設(shè)計,主持了第一個有多道程序設(shè)計能力的操作系統(tǒng)的開發(fā)考特原是英國人,1923年8月19日生于英格蘭中部的港口城市波特蘭。第二次世界大戰(zhàn)爆發(fā)以后,年輕的考特應(yīng)征入伍在皇家空軍服役,1942至1945年期間任機長,參與了許多重大空戰(zhàn),為反法西斯戰(zhàn)爭立下了汗馬功勞。二戰(zhàn)結(jié)束以后,考特上牛津大學(xué)學(xué)習(xí)數(shù)學(xué),于1948年取得學(xué)士學(xué)位以后到美國謀求發(fā)展。他先后在美國和加拿大工作,參加了IBM第一臺科學(xué)計算機701以及第一臺大型晶體管計算機STRETCH的邏輯設(shè)計,主持了第一個有多道程序設(shè)計能力的操作系統(tǒng)的開發(fā)。他自覺硬件知識缺乏,于是在60年代初,到密歇根大學(xué)進修計算機與通信專業(yè)(當(dāng)時他已年近40),并于1963年獲得碩士學(xué)位,1965年取得博士學(xué)位。這使他的理論基礎(chǔ)更加扎實,專業(yè)知識更加豐富。加上他在此之前十幾年實踐經(jīng)驗的積累,終于在1970年迸發(fā)出智慧的閃光,為數(shù)據(jù)庫技術(shù)開辟了一個新時代。關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)在用戶觀點下,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成。學(xué)號姓名年齡性別系名年級2005004王小明19女社會學(xué)20052005006黃大鵬20男商品學(xué)20052005008張文斌18女法律2005………………學(xué)生登記表屬性元組關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)(續(xù))例1學(xué)生、系、系與學(xué)生之間的一對多聯(lián)系:學(xué)生(學(xué)號,姓名,年齡,性別,系號,年級)系(系號,系名,辦公地點)例2系、系主任、系與系主任間的一對一聯(lián)系關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)(續(xù))例3學(xué)生、課程、學(xué)生與課程之間的多對多聯(lián)系:
學(xué)生(學(xué)號,姓名,年齡,性別,系號,年級)課程(課程號,課程名,學(xué)分)選修(學(xué)號,課程號,成績)關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)(續(xù))關(guān)系必須是規(guī)范化的,滿足一定的規(guī)范條件最基本的規(guī)范條件:關(guān)系的每一個分量必須是一個不可分的數(shù)據(jù)項,不允許表中還有表圖中工資和扣除是可分的數(shù)據(jù)項,不符合關(guān)系模型要求
職工號姓名職稱工資扣除實
發(fā)基本津貼職務(wù)房租水電86051陳平講師13051200501601122283一個工資表(表中有表)實例關(guān)系數(shù)據(jù)模型的優(yōu)缺點優(yōu)點建立在嚴格的數(shù)學(xué)概念的基礎(chǔ)上概念單一實體和各類聯(lián)系都用關(guān)系來表示對數(shù)據(jù)的檢索結(jié)果也是關(guān)系關(guān)系模型的存取路徑對用戶透明具有更高的數(shù)據(jù)獨立性,更好的安全保密性簡化了程序員的工作和數(shù)據(jù)庫開發(fā)建立的工作關(guān)系數(shù)據(jù)模型的優(yōu)缺點(續(xù))缺點存取路徑對用戶透明導(dǎo)致查詢效率往往不如非關(guān)系數(shù)據(jù)模型為提高性能,必須對用戶的查詢請求進行優(yōu)化增加了開發(fā)DBMS的難度1.3概念結(jié)構(gòu)設(shè)計數(shù)據(jù)庫的概念設(shè)計是整個數(shù)據(jù)庫設(shè)計的關(guān)鍵階段,其主要任務(wù)是通過對用戶需求進行綜合、歸納與抽象,形成一個獨立于具體DBMS的概念模型。概念設(shè)計的基本方法(1)自底向上的設(shè)計方法自底向上的設(shè)計方法有時也稱為屬性綜合法。這種方法的基本點是將前面需求分析中收集到的數(shù)據(jù)元素作為基本輸入,通過對這些元素的分析,把它們綜合成相應(yīng)的實體或聯(lián)系。自底向上的設(shè)計方法適合于較為簡單的設(shè)計對象,而對于中等規(guī)模以上的單位,數(shù)據(jù)元素常常多到幾百甚至幾千。要對這么多的數(shù)據(jù)元素進行分析,再綜合成相應(yīng)的實體或聯(lián)系,是一件非常困難的事情。(2)自頂向下的設(shè)計方法自頂向下的設(shè)計方法從分析組織的事務(wù)活動開始。首先識別用戶所關(guān)心的實體及實體間的聯(lián)系,建立一個初步的數(shù)據(jù)模式框架,然后再以逐步求精的方式加上必需的描述屬性,形成一個完整的局部數(shù)據(jù)模式(又稱局部視圖),最后再將這些局部視圖集成為一個統(tǒng)一的全局數(shù)據(jù)模式(又稱全局視圖)。局部視圖的設(shè)計數(shù)據(jù)庫概念設(shè)計的過程都是由以下兩個階段組成:第一階段,劃分用戶組,建立面向特定用戶(組)的局部數(shù)據(jù)模式,即局部視圖。第二階段,將所有局部視圖集成為一個全局的數(shù)據(jù)模式,即全局視圖。局部視圖的設(shè)計步驟如下:(1)確定局部視圖的設(shè)計范圍;(2)確定實體及實體的主鍵;(3)定義實體間的聯(lián)系;(4)給實體及聯(lián)系加上描述屬性。確定局部視圖的設(shè)計范圍首先根據(jù)系統(tǒng)的具體情況,在多層的數(shù)據(jù)流圖中選擇一個適當(dāng)層次的數(shù)據(jù)流圖,讓這組圖中每一部分對應(yīng)一個局部應(yīng)用,然后以這一層次的數(shù)據(jù)流圖為出發(fā)點,設(shè)計局部視圖。通常以中層數(shù)據(jù)流圖作為設(shè)計局部視圖的依據(jù)。因為頂層數(shù)據(jù)流圖只能反映系統(tǒng)的概貌,低層數(shù)據(jù)流圖過細,而中層數(shù)據(jù)流圖則能較好地反映系統(tǒng)中各局部應(yīng)用的子系統(tǒng)組成。在確定局部視圖的設(shè)計范圍時,有兩條原則可供參考:(1)把那些關(guān)系最密切的若干功能域所涉及到的數(shù)據(jù)盡可能地可包含在一個局部視圖內(nèi)。(2)一個局部視圖中所包含的實體數(shù)不能太多,以免過于復(fù)雜,不便理解和管理。確定實體及實體的主鍵(1)確定實體教務(wù)信息管理系統(tǒng)的學(xué)生選課子系統(tǒng)局部應(yīng)用中,學(xué)生是個實體,學(xué)生張平、李玲是學(xué)生實體中的兩個實例。課程是一個實體,操作系統(tǒng)、數(shù)據(jù)庫設(shè)計是課程實體中的兩個實例。學(xué)籍管理子系統(tǒng)的局部應(yīng)用中,學(xué)生是個實體。學(xué)生的學(xué)籍變動情況也是一個實體,一個學(xué)生的每一次學(xué)籍變動信息都是學(xué)籍變動實體中的一個實例。(2)確定實體的主鍵每個實體都有一個或一組用來標識實體中每個實例的屬性,這個或這組屬性稱之為實體的主鍵。學(xué)生實體的主鍵是學(xué)生的學(xué)號;課程實體的主鍵是課程號;學(xué)籍變動實體的主鍵是學(xué)號+變動日期;教師實體的主鍵是教師號;成績實體的主鍵是學(xué)號+課程號;區(qū)分實體與屬性的一般原則:(1)實體一般需要描述信息,而屬性不需要;(2)多值的屬性可考慮作為實體;定義實體聯(lián)系時應(yīng)該注意的若干點:1)消除冗余聯(lián)系假定:每一個技術(shù)員必須參加一個工程;每一個工程有多個技術(shù)員參加;每一個工程必須使用一種技術(shù);由于聯(lián)系具有傳遞性,因此,隱含了每一個技術(shù)員必須掌握一種技術(shù)。由于聯(lián)系具有傳遞性,因此,技術(shù)員實體和技術(shù)實體間的聯(lián)系是冗余的,應(yīng)將它去掉。2)正確鑒別二元及多元聯(lián)系問題說明1:任何一個供應(yīng)商可向任何一個顧客供應(yīng)任何一種零件。問題說明2:任何一個供應(yīng)商可向任何一個顧客供應(yīng)零件,但每一個顧客訂購的零件是一定的。問題說明3:任何一個供應(yīng)商可向任何一個顧客提供零件,但某個供應(yīng)商對某個顧客供應(yīng)的零件是確定的。3)防止連接陷阱所謂連接陷阱是指聯(lián)系結(jié)構(gòu)存在語義上的缺陷。主要原因是定義聯(lián)系時沒有仔細弄清問題的語義,定義的結(jié)構(gòu)無法提供所需要的信息。連接陷阱有幾種類型:扇形陷阱、斷層陷阱以及深層陷阱。a)扇形陷阱扇形陷阱存在于從同一個實體扇出的兩個或多個一對多聯(lián)系中。教職工通過學(xué)院與系發(fā)生聯(lián)系。如果給定一個職工號,要查詢該職工是屬于哪一個系的?根據(jù)圖中提供的結(jié)構(gòu),可以確定該職工是哪一個學(xué)院的,但不能確定是該學(xué)院中的哪一個系。不能確定的主要原因是學(xué)院實體扇出的兩個一對多聯(lián)系,即雙扇結(jié)構(gòu),無法確定需要查詢的信息,于是出現(xiàn)了連接陷阱。解決上述問題的方法是對E-R圖作適當(dāng)變換。系與教職工之間直接發(fā)生聯(lián)系,而且是一對多聯(lián)系。給定一個職工號,可以確定該職工是屬于哪一個系的。但是,如果某些教職工不屬于任何系而是直屬于學(xué)院的,該結(jié)構(gòu)不能提供這方面的信息。b)斷層陷阱斷層陷阱是指因E-R圖所含的傳遞聯(lián)系而掩蓋了某些特定值的直接聯(lián)系的現(xiàn)象。c)深層陷阱深層陷阱是指兩個實體之間存在聯(lián)系,但不存在路徑。假定:每個學(xué)生可在多名教師指導(dǎo)下參加多項工程。每位教師可指導(dǎo)多名學(xué)生,但只允許一位教師指導(dǎo)一個學(xué)生參加一項工程,而不允許多位教師指導(dǎo)一名學(xué)生參加某項工程。存在扇形陷阱:從這個聯(lián)系結(jié)構(gòu)無法得到關(guān)于哪位教師指導(dǎo)那個學(xué)生參加哪項工程的信息。改進的一種辦法是再增加一個教師對工程的聯(lián)系。在教師和工程之間添加“服務(wù)”聯(lián)系解決這個例子的最有效的辦法是將教師、學(xué)生以及工程三個實體間的聯(lián)系定義成一個三元聯(lián)系。給實體及聯(lián)系加上描述屬性當(dāng)我們已經(jīng)在一個局部應(yīng)用視圖中識別了實體、實體的主鍵以及實體間的聯(lián)系時,便形成了一個局部視圖的E-R圖。然后,我們再為局部視圖中的每個實體和聯(lián)系加上所有必須的其他描述屬性。聯(lián)系本身也可以有描述屬性如遇到一個屬性的分配在幾個實體或聯(lián)系中存在選擇的話,應(yīng)盡可能地避免使屬性出現(xiàn)空值的分配方案。比如教師和課程實體之間的E-R圖
如果屬性分配時,找不到可以依附的實體或聯(lián)系,則可以在原模式中增加一個新的實體或聯(lián)系來解決問題。視圖集成集成階段的主要任務(wù):歸并和重構(gòu)視圖,最后得到一個統(tǒng)一的全局實體。視圖集成集成策略一般可分為兩類:二元集成和n元集成。二元集成又可分為平衡式集成和階梯式集成;
n元集成又可分為一次多元集成和多次n元集成。(1)二元集成二元集成是一種兩兩集成方式,即每次集成的視圖數(shù)為2。二元集成方式的優(yōu)點是每個集成步驟上分析比較過程簡單化、一致化,且有最少的分析比較次數(shù),因而成為廣泛使用的一種策略。缺點是集成操作的總的次數(shù)較多,并且在最后須分析檢查總體性能是否都滿足,必要時作調(diào)整。二元集成方式(2)多元集成多元集成是一種集成視圖數(shù)大于2的集成方式。一次n元集成是指一次集成n個視圖。
n元集成方式視圖集成的步驟(1)確定總的集成策略集成策略包括:在總的設(shè)計目標范圍內(nèi)視圖集成的優(yōu)先次序、一次集成的視圖數(shù)以及初始集成序列等;(2)對視圖進行分析比較、識別數(shù)據(jù)對象間的語義,揭示和解決沖突,為下一階段視圖的集成奠定基礎(chǔ)。對所有局部視圖集成后便形成了一個整體的數(shù)據(jù)庫概念結(jié)構(gòu),對整體概念結(jié)構(gòu)進一步驗證,確保滿足下列條件:(1)整體概念結(jié)構(gòu)內(nèi)部必須具有一致性,不存在各種沖突。(2)整體概念結(jié)構(gòu)能準確地反映原各局部視圖結(jié)構(gòu),包括屬性、實體及實體間的聯(lián)系。(3)整體概念結(jié)構(gòu)能滿足需要分析階段所確定的所有需求。練習(xí)假設(shè)一個公司中,每個部門都有一輛小汽車,但只供具有一定資格的人使用,其ER圖模型如下:(1)如果知道了職員號,那么能否知道被使用的汽車信息?(2)如果知道了汽車牌照號,可否確定那個職員在使用汽車?小汽車部門職員屬于聘用(1:1)(1:1)(1:M)(1:1)(3)要確定有資格使用汽車的職員還應(yīng)增加什么信息?(4)這個ER圖還存在什么類型的鏈接陷阱?怎么消除?1.3數(shù)據(jù)庫的邏輯設(shè)計主要任務(wù):在概念設(shè)計的基礎(chǔ)上,首先利用一些映射關(guān)系得到一組關(guān)系模式集,然后用關(guān)系規(guī)范化理論對關(guān)系模式進行優(yōu)化,以獲得質(zhì)量良好的數(shù)據(jù)庫設(shè)計。主要內(nèi)容:
E-R圖到關(guān)系模式的映射、關(guān)系模式的優(yōu)化、關(guān)系模式的調(diào)整。E-R圖到關(guān)系模式的映射E-R圖到關(guān)系模式的映射中可能會出現(xiàn)以下問題:命名問題所用DBMS數(shù)據(jù)類型的局限性E-R圖中數(shù)據(jù)項的非原子性實體到關(guān)系的映射E-R圖中的每一個實體映射為一個關(guān)系,如圖所示。屬性k是實體E的主鍵,a是普通原子屬性,r是個集合屬性,r={r1,r2,…,rn},g是聚合屬性,由原子屬性g1,g2聚合而成。因此,獨立實體E可映射為E和E’兩個關(guān)系:E(k,a,g1,g2),E’(k,ri),i=1,2,…,n式中k表示k是關(guān)系的主鍵。訂單編號:
客戶名稱:
日期:
地址:
省
市商品名稱單位單價數(shù)量……商品訂單商品訂單文件1(訂單編號,日期,客戶名稱,省,市)商品訂單文件2(訂單編號,商品名稱,單位,單價,數(shù)量)基本E-R圖映射為關(guān)系的方法(1)一對一聯(lián)系(1:1)的映射
假設(shè)有兩個實體E1和E2,它們之間具有1:1聯(lián)系
映射規(guī)則為:每一個實體都映射為一個關(guān)系;聯(lián)系可單獨映射為一個關(guān)系,也可與任何一方關(guān)系進行合并,若聯(lián)系本身有屬性,也一并進入關(guān)系。
映射為關(guān)系的情況有三種:方案一:每一個實體都映射為一個關(guān)系,聯(lián)系也單獨映射為一個關(guān)系。即:E1(k,a),k是主鍵;E2(h,b),h是主鍵;r(k,h,s)可選任何一方實體的主鍵作為聯(lián)系的主鍵,這里選k做主鍵,則h就是候補鍵。方案二:E1映射為一個關(guān)系,聯(lián)系及其屬性合并到另一個關(guān)系E2’中。即:E1(k,a)E2’(h,b,k,s),(k是候補鍵)。方案三:E2映射為一個關(guān)系,聯(lián)系及其屬性合并到另一個關(guān)系E1’中。即:E2(h,b)E1’(k,a,h,s),(h是候補鍵)。(2)一對多聯(lián)系(1:N)的映射假設(shè)有兩個實體E1和E2,它們之間具有1:N聯(lián)系映射規(guī)則為:每一個實體都映射為一個關(guān)系;聯(lián)系可單獨映射為一個關(guān)系,也可與多方(“N”的一方)關(guān)系進行合并。若聯(lián)系本身有屬性,也一并進入多方(“N”的一方)關(guān)系。上圖的轉(zhuǎn)換方案為:方案一:每一個實體都映射為一個關(guān)系,聯(lián)系也單獨映射為一個關(guān)系。即:
E1(k,a),k是主鍵;
E2(h,b),h是主鍵;
r(h,k,s),h做主鍵(只能選多方實體的主鍵作為聯(lián)系的主鍵),k是候補鍵。方案二:E1映射為一個關(guān)系,聯(lián)系及其屬性合并到多方關(guān)系E2中,得到E2’。即:
E1(k,a)
E2’(h,b,k,s),(k是候補鍵)。(3)多對多聯(lián)系(M:N)的映射假設(shè)有兩個實體E1和E2,它們之間具有M:N聯(lián)系,如圖所示。映射規(guī)則為:每一個實體都映射為一個關(guān)系;聯(lián)系本身也必須單獨轉(zhuǎn)換為一個關(guān)系,這個關(guān)系的屬性必須包含被它聯(lián)系的雙方實體的關(guān)鍵字,作為該關(guān)系的組合關(guān)鍵字。如果聯(lián)系本身有屬性,也應(yīng)納入關(guān)系中。上圖的轉(zhuǎn)換結(jié)果:E1(k,a)E2(h,b)r3(h,k,s),(h,k
為組合主鍵)(4)多元聯(lián)系的映射
假設(shè)有三個實體E1、E2和E3,它們之間具有M:N聯(lián)系。映射為關(guān)系的情況也只有一種:E1(k,a)E2(h,b)E3(j,c)r(k
,h
,j,s),(k
,h
,j
組成組合鍵)(5)單元聯(lián)系(自聯(lián)系)的映射假設(shè)有一個實體E1,其內(nèi)部不同實例之間存在一對多聯(lián)系。如圖所示。映射規(guī)則為:同一個實體內(nèi)部的一對多聯(lián)系,可映射為一個關(guān)系,關(guān)系中包含被它聯(lián)系的雙方個體(屬于同一實體型),如聯(lián)系本身有屬性也一并納入關(guān)系中。因此,圖6.3.35映射為關(guān)系的情況如下:E’(
k,a,k’,s)k’表示起r2作用的實體的主鍵.。關(guān)系模式的優(yōu)化優(yōu)化關(guān)系模式的方法:(1)確定函數(shù)依賴(2)對于各個關(guān)系模式之間的函數(shù)依賴進行最小化處理,消除冗余的聯(lián)系。(3)根據(jù)規(guī)范化理論對關(guān)系模式逐一進行分析,考查是否存在部分函數(shù)依賴、傳遞函數(shù)依賴、多值依賴等,確定各關(guān)系模式分別屬于第幾范式。(4)根據(jù)需求分析階段得到的各種應(yīng)用對數(shù)據(jù)處理的要求,分析所在的應(yīng)用環(huán)境中這些關(guān)系模式是否合適,確定是否要對它們進行合并或分解。(5)對關(guān)系模式進行必要的分解,以提高數(shù)據(jù)操作的效率和存儲空間的利用率。必須注意:并不是規(guī)范化程度越高的關(guān)系就越好。當(dāng)一個應(yīng)用的查詢中經(jīng)常涉及到兩個或多個關(guān)系模式的屬性時,系統(tǒng)必須經(jīng)常地進行連接運算,而連接運算的代價是相當(dāng)高的,可以說關(guān)系模式操作低效的主要原因就是做連接運算引起的。在這種情況下,第二范式甚至第一范式也許是最好的。如果一個關(guān)系模式在實際應(yīng)用中只是提供查詢,并不提供更新操作,或者很少提供更新操作,此時不會存在更新異常問題或更新異常不是主要問題,可以不對關(guān)系模式進行分解。常用的分解方法有兩種:水平分解垂直分解例1:假設(shè)有一個產(chǎn)品關(guān)系模式,其中包含有出口產(chǎn)品和內(nèi)銷產(chǎn)品兩類數(shù)據(jù)。由于不同的應(yīng)用關(guān)心不同的產(chǎn)品,如一個應(yīng)用只關(guān)心進口產(chǎn)品,而另一個應(yīng)用只關(guān)心內(nèi)銷產(chǎn)品。則可將產(chǎn)品關(guān)系模式進行水平分解,分解為兩個關(guān)系模式,一個存放出口產(chǎn)品數(shù)據(jù),另一個存放內(nèi)銷產(chǎn)品數(shù)據(jù),如圖所示。這樣可以減少應(yīng)用存取的元組數(shù)。
水平分解舉例
例2:假設(shè)有一個職工關(guān)系模式,其中含有職工號、職工名、性別、職務(wù)、職稱、年齡、地址、郵編、電話、所在部門等描述屬性。如果應(yīng)用中經(jīng)常存取的是職工號、職工名、性別、職務(wù)、職稱數(shù)據(jù),而其他數(shù)據(jù)很少使用,則可以對職工關(guān)系模式進行垂直分解,分解為兩個關(guān)系模式,一個存放經(jīng)常用的數(shù)據(jù),另一個存放不常用的數(shù)據(jù),如圖所示。這樣也可以減少應(yīng)用存取的數(shù)據(jù)量。垂直分解舉例例3
假定有一個選課關(guān)系表:SelectCourse(學(xué)號,姓名,年齡,課程名稱,成績,學(xué)分)。請分析關(guān)系屬于第幾范式?如果應(yīng)用中需要常常對SelectCourse關(guān)系進行增、刪、改操作,該關(guān)系存在什么問題?并對其設(shè)計進行優(yōu)化。由于每個學(xué)生可以選修多門課程,而每門課程對應(yīng)一個成績,因此該關(guān)系的候選關(guān)鍵字為(學(xué)號,
課程名稱)。根據(jù)數(shù)據(jù)的語義,該關(guān)系上存在的函數(shù)依賴集為:(學(xué)號,
課程名稱)
→
(姓名,
年齡,
成績,
學(xué)分)
(課程名稱)
→
(學(xué)分)
(學(xué)號)
→
(姓名,
年齡)
由于(學(xué)號,
課程名稱)
→
(姓名,
年齡),而(學(xué)號,
課程名稱)的子集“學(xué)號”也能函數(shù)決定一個學(xué)生的姓名和年齡,即(學(xué)號)
→
(姓名,
年齡)。該關(guān)系存在非主屬性對候選鍵的部分函數(shù)依賴,因此該關(guān)系屬于第一范式,且存在以下問題:
(1)
數(shù)據(jù)冗余:
同一門課程由n個學(xué)生選修,“學(xué)分”就重復(fù)n-1次;同一個學(xué)生選修了m門課程,姓名和年齡就重復(fù)了m-1次。
(2)
更新異常:
若調(diào)整了某門課程的學(xué)分,數(shù)據(jù)表中所有行的“學(xué)分”值都要更新,否則會出現(xiàn)同一門課程學(xué)分不同的情況。(3)
插入異常:
假設(shè)要開設(shè)一門新的課程,暫時還沒有人選修。這樣,由于還沒有“學(xué)號”關(guān)鍵字,課程名稱和學(xué)分也無法記錄入數(shù)據(jù)庫。
(4)
刪除異常:
假設(shè)一批學(xué)生已經(jīng)完成課程的選修,這些選修記錄就應(yīng)該從數(shù)據(jù)庫表中刪除。但是,與此同時,課程名稱和學(xué)分信息也被刪除了。很顯然,這也會導(dǎo)致插入異常。
由于選課關(guān)系中的數(shù)據(jù)需要經(jīng)常更新,所以必須解決上述可能出現(xiàn)的操作異常。通過對關(guān)系進行分解,可以將選課關(guān)系表SelectCourse改為如下三個表:
學(xué)生:Student(學(xué)號,
姓名,
年齡);
課程:Course(課程名稱,
學(xué)分);選課關(guān)系:SC(學(xué)號,
課程名稱,
成績)。
其中Student關(guān)系上的候選鍵為“學(xué)號”,函數(shù)依賴集為{學(xué)號
→
姓名,
學(xué)號
→年齡},由于不存在非主屬性對候選鍵的部分函數(shù)依賴和傳遞函數(shù)依賴因此,Student關(guān)系是符合第三范式的。
Course關(guān)系上的候選鍵為“課程名稱,函數(shù)依賴為課程名稱
→
學(xué)分),由于不存在非主屬性對候選鍵的部分函數(shù)依賴和傳遞函數(shù)依賴,因此,Course關(guān)系是符合第三范式的。SC關(guān)系上的候選鍵為“學(xué)號,課程名稱,函數(shù)依賴為(學(xué)號,
課程名稱)
→
成績,由于不存在非主屬性對候選鍵的部分函數(shù)依賴和傳遞函數(shù)依賴,因此,SC關(guān)系是符合第三范式的。如果需要增加、刪除以及修改學(xué)生的信息,則只需對Student關(guān)系進行操作。如果需要增加、刪除以及修改課程的信息,則只需對Course關(guān)系進行操作。如果需要增加、刪除以及修改選課的信息,則只需對SC關(guān)系進行操作。通過對關(guān)系SelectCourse的分解,各關(guān)系上的函數(shù)依賴集以及不同關(guān)系模式之間的函數(shù)依賴已是最小函數(shù)依賴集,并且消除了數(shù)據(jù)冗余和操作異常。因此關(guān)系得到了優(yōu)化。習(xí)題:將下圖中的E-R圖轉(zhuǎn)換為一組關(guān)系模式集解:根據(jù)E-R圖到關(guān)系模型的映射規(guī)則,可得到以下一組關(guān)系模式:職工(職工號,部門名,姓名,地址)部門(部門名,經(jīng)理)產(chǎn)品(產(chǎn)品號,產(chǎn)品名)制造商(制造商名稱,地址)銷售(部門名,產(chǎn)品號,數(shù)量)生產(chǎn)(制造商名稱,產(chǎn)品號,型號,價格)其中,帶下劃線“_____”的屬性為關(guān)系的主鍵。習(xí)題2:將所給附圖轉(zhuǎn)換為關(guān)系模式。圖中所有屬性都函數(shù)依賴于其主鍵,只有ranksalary例外。對某些數(shù)據(jù)可以重新命名,但需做說明。解:根據(jù)實體和聯(lián)系的映射規(guī)則,可得以下一組關(guān)系模式:(1)Department(D#,name,head),F(xiàn)D={D#name,D#head}(2)Employee(E#,D#,rank,salary,sex,name,birthday,skill)FD={ranksalary}因為E#rank(主鍵決定任何非主屬性),且已知ranksalary,所以E#salary。由于關(guān)系模式Employee存在傳遞函數(shù)依賴,將Employee分解為Employee’,Employee’’兩個關(guān)系:
Employee’(E#,D#,rank,sex,name,birthday,skill)
Employee’’(rank,salary)(3)Dependent(name,E#,sex,age)(4)work(E#,p#)(5)project(p#,E#,start-date)(6)P--P(p#,part#,quantity)(7)Part(part#,weight,quantityinhand)(8)Supplier(s#,
……)(9)S-P-P(p#,part#,s#)其中,帶下劃線“_____”的屬性為關(guān)系的主鍵。習(xí)題3.某公司有多名銷售人員負責(zé)公司的商品銷售業(yè)務(wù),每名客戶可以一次性訂購多種商品,每件商品都由唯一的商品號標識,則下面就是銷售商品的詳細訂單。(1)試為該公司的商品銷售業(yè)務(wù)數(shù)據(jù)庫設(shè)計一個優(yōu)化的E-R圖。(2)將E-R圖轉(zhuǎn)換為關(guān)系模式集,并寫出每個關(guān)系模式的主鍵和外鍵。(如果有)解:從訂單可知,每份訂單可以訂購多個商品;每份訂單由一個銷售員簽訂;每個商品都有明細;不同客戶可以一次性訂購多種商品。(1)該公司的商品銷售業(yè)務(wù)E-R圖如下圖所示(省略屬性)。
(2)轉(zhuǎn)換后的關(guān)系模式集為:客戶(客戶號,客戶名,聯(lián)系電話,地址,郵政編碼)銷售人員(職工號,職工名,電話號碼)商品(商品號,商品名,規(guī)格,單價)訂單(訂單號,日期,客戶號,銷售人員號,付款方式,總金額)明細(訂單號,商品號)其中:帶下劃線“
”的為主鍵,帶下劃線“
”為外鍵。習(xí)題4.分解下圖所示關(guān)系,使其滿足2NF.每個分公司臨時工每周工作分配表
解:tempStaffAllocation表的主鍵是{staffNo,branchNo},所以,關(guān)系模式上存在函數(shù)依賴:{staffNo,branchNo}branchAddress而branchNobranchAddressstaffNo{name,position}也成立。因此,tempStaffAllocation表存在部分函數(shù)依賴,它不是2NF?,F(xiàn)在對關(guān)系進行分解,以消除部分函數(shù)依賴,所得結(jié)果如下圖所示:分解后的Branch表的主鍵為branchNo,函數(shù)依賴:branchNobranchAddress,不存在部分函數(shù)依賴,Branch表是2NF的;TempStaff表的主鍵為staffNo,函數(shù)依賴:staffNo{name,position};不存在部分函數(shù)依賴,TempStaff表是2NF的;TempStaffAllocation表的主鍵為{staffNo,branchNo},函數(shù)依賴:{staffNo,branchNo}
hoursPerWeek,不存在部分函數(shù)依賴,TempStaffAllocation也是2NF的。
1.4數(shù)據(jù)庫的物理設(shè)計數(shù)據(jù)庫的物理設(shè)計主要涉及到數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)和存取方法。數(shù)據(jù)庫的物理設(shè)計不同的數(shù)據(jù)庫產(chǎn)品所提供的物理環(huán)境、存取方法和存儲結(jié)構(gòu)有很大差別,能提供給設(shè)計人員使用的設(shè)計變量、參數(shù)范圍也很不相同,因此,沒有通用的物理設(shè)計方法可遵循,只能給出一般的設(shè)計內(nèi)容和原則。數(shù)據(jù)庫的物理設(shè)計任務(wù):利用DBMS所提供的手段,為設(shè)計好的邏輯數(shù)據(jù)模型選擇一個符合應(yīng)用要求的物理結(jié)構(gòu)。目標:?提高數(shù)據(jù)庫的性能
?節(jié)省存儲量數(shù)據(jù)庫的物理設(shè)計邏輯設(shè)計階段:關(guān)系和記錄僅僅是邏輯形式,而不是其存儲形式。物理設(shè)計階段:如何表示邏輯記錄的內(nèi)容,即記錄的存儲形式,同時考慮一些其他問題:數(shù)據(jù)項編碼是否要壓縮不定長數(shù)據(jù)項如何表示記錄間互相連接的指針如何設(shè)置等等。
1.4.1記錄的存儲結(jié)構(gòu)設(shè)計數(shù)據(jù)庫的物理設(shè)計另外,傳統(tǒng)數(shù)據(jù)模型通常是以記錄為基礎(chǔ),因此,了解記錄的一些存儲技術(shù)和數(shù)據(jù)壓縮方法對物理設(shè)計是很有利的。數(shù)據(jù)的存儲技術(shù)記錄在物理塊上的分配物理塊在磁盤上的分配數(shù)據(jù)壓縮方法數(shù)據(jù)庫的物理設(shè)計在存儲記錄中,數(shù)據(jù)項的表示方法一般有四種:
(1)定位法
(2)相對法
(3)索引法
(4)標號法。一.數(shù)據(jù)項的存儲技術(shù)數(shù)據(jù)庫的物理設(shè)計(1)定位法定位法是一種只能表示定長記錄的方法。使用定位法存儲記錄時,系統(tǒng)為每個數(shù)據(jù)項按其最大可能長度分配定長的字段。數(shù)據(jù)項從左向右填入,空白部分填以空白字符。WANGbbbLINGbbbMALEbb1982定位存儲法定位法的優(yōu)點:簡單,使用最廣;定位法的缺點:存儲空間的利用率不高,尤其是當(dāng)數(shù)據(jù)項長度參差不齊時,空間浪費更加突出。數(shù)據(jù)庫的物理設(shè)計(2)相對法相對法是一種可表示可變長記錄的存儲方法。使用相對法存儲記錄時,每個數(shù)據(jù)項不是定長,而是由實際情況確定。不同數(shù)據(jù)項之間用特殊的字符隔開.
相對存儲法記錄中不同數(shù)據(jù)項之間用分隔符“?!备糸_。相對法與定位法相比,其優(yōu)點是存儲空間的利用率高。WANG#LING#MALE#1982數(shù)據(jù)庫的物理設(shè)計(3)索引法索引法也是一種可表示可變長記錄的存儲方法。使用索引法表示存儲記錄時,每個數(shù)據(jù)項用一個指針指向其首地址。索引存儲法
索引法的優(yōu)點也是空間利用率高。數(shù)據(jù)庫的物理設(shè)計(4)標號法標號法也是一種可表示可變長記錄的存儲方法。使用標號法表示存儲記錄時,每個數(shù)據(jù)項用一標號開頭.標號存儲法圖中:SN=surnameFN=firstnameSX=sexYR=yearofbirth數(shù)據(jù)庫的物理設(shè)計標號存儲法的優(yōu)點:空間利用率高;標號存儲法的缺點:當(dāng)記錄的數(shù)據(jù)項個數(shù)較多時,標號本身也將占用較多的空間。一般,所有DBMS都支持定長記錄,但只有部分DBMS支持可變長記錄。應(yīng)用中可根據(jù)實際情況選擇定長存儲法或某種可變長存儲法。數(shù)據(jù)庫的物理設(shè)計二.記錄在物理塊上的分配磁盤與內(nèi)存交換數(shù)據(jù)是以物理塊為單位,即每次訪盤,至少存取一個物理塊。當(dāng)記錄比物理塊小時,一個物理塊可容納多個記錄,記錄不跨塊,這種結(jié)構(gòu)稱不跨塊組織;
當(dāng)記錄很大,一個物理塊容納不下時,記錄必須跨塊存放,這種結(jié)構(gòu)稱為跨塊組織。變長記錄的大小不定,很難確定每塊應(yīng)含有多少個記錄,一般也采用跨塊組織。數(shù)據(jù)庫的物理設(shè)計定長記錄的不跨塊組織定長記錄的跨塊組織數(shù)據(jù)庫的物理設(shè)計變長記錄的跨塊組織數(shù)據(jù)庫的物理設(shè)計三.物理塊在磁盤上的分配
早期的DBMS中,通常是由操作系統(tǒng)分配數(shù)據(jù)庫所需要的物理塊,邏輯上相鄰的數(shù)據(jù)往往被分配到磁盤的不同區(qū)域。在連續(xù)訪問數(shù)據(jù)庫中的數(shù)據(jù)時,系統(tǒng)性能會嚴重下降。而在現(xiàn)代的DBMS中,改由系統(tǒng)初始化時向操作系統(tǒng)一次性地申請所需要的磁盤空間。數(shù)據(jù)庫的物理設(shè)計物理塊在磁盤上的分配方法一般有四種:(1)連續(xù)分配法
這種方法的特點是將一個文件的塊分配在磁盤的連續(xù)空間上,塊的次序也就是它們存儲的次序。優(yōu)點:對順序存取多個塊或全部文件很有效。缺點:不利于文件的擴充和修改。數(shù)據(jù)庫的物理設(shè)計(2)連接分配法這種方法的特點是物理塊不一定分配在磁盤上的連續(xù)區(qū)域,各物理塊在磁盤上用指針鏈接。
優(yōu)點:有利于文件的擴充和修改。
缺點:存取效率低。數(shù)據(jù)庫的物理設(shè)計(3)簇集分配法
這種方法是上面兩種方法的結(jié)合,特點是把文件分為若干簇集。即文件中相關(guān)記錄存放在相鄰的幾個物理塊,各簇集以指針鏈接。優(yōu)點:有利于檢索速度的提高。缺點:重新簇集時會引起大量數(shù)據(jù)的搬移。數(shù)據(jù)庫的物理設(shè)計(4)索引分配法
這種方法的特點是每個文件有一個邏輯塊號與其物理塊地址對照的索引。通過索引,可查詢到文件中任一塊的地址。優(yōu)點:分配方法靈活,擴充、修改較方便。缺點:訪問時增加了邏輯塊號到物理塊地址映射的開銷;由于物理上不一定相鄰,故連續(xù)訪問時性能不高。數(shù)據(jù)庫的物理設(shè)計四、數(shù)據(jù)壓縮方法為了節(jié)省存儲空間,有些DBMS允許對數(shù)據(jù)進行壓縮后存儲。但訪問這些數(shù)據(jù)時須進行轉(zhuǎn)換或復(fù)原,因此,對系統(tǒng)的性能有影響。通常,數(shù)據(jù)庫中數(shù)據(jù)壓縮技術(shù)應(yīng)用得并不普遍,而且即使應(yīng)用,也只采用一些簡單的數(shù)據(jù)壓縮方法。數(shù)據(jù)庫的物理設(shè)計幾種可能的方法:(1)消零或空白符法如果數(shù)據(jù)項中常常出現(xiàn)一連串的零或空白符,我們可以用一種特殊符號及表示零或空白符個數(shù)的數(shù)字表示。例如,空白符“bbbbb”可用“#5”表示,一連串零“000000”可用“@6”表示。數(shù)據(jù)庫的物理設(shè)計(2)模式代替法如果數(shù)據(jù)項中常常出現(xiàn)一些重復(fù)的字符串,此時可以用一省略符代替。
原始數(shù)據(jù)
壓縮數(shù)據(jù)模式表方正天瀑T200-3268@#3268方正天瀑T200-8265@#8265方正天瀑T200-8268@#8268方正天瀑T200-8288@#8288
方正天瀑@T200-#數(shù)據(jù)庫的物理設(shè)計(3)索引法索引法是模式代替法的變種。對于那些經(jīng)常出現(xiàn)的模式,為了避免重復(fù)存儲,可以將不同數(shù)據(jù)單獨存儲,其他表中如果需要這些數(shù)據(jù),只要利用指針引用即可。branchcity0001nanjing0002shanghai0003shanghai0004nanjing0005shanghai……branchcity00010002000300040005……beijingshanghaiGuangzhouwuhannanjing…原始數(shù)據(jù)壓縮數(shù)據(jù)模式表數(shù)據(jù)庫的物理設(shè)計1.4.2確定數(shù)據(jù)庫的存儲結(jié)構(gòu)在DBMS中,要求能對數(shù)據(jù)庫中的數(shù)據(jù)進行即席訪問、動態(tài)修改,故文件結(jié)構(gòu)應(yīng)能適應(yīng)數(shù)據(jù)的動態(tài)變化,提供快速訪問路徑。確定數(shù)據(jù)庫存儲結(jié)構(gòu)的內(nèi)容包括:確定數(shù)據(jù)的存放位置、選擇文件的組織方式、確定系統(tǒng)配置等。25數(shù)據(jù)庫的物理設(shè)計一般原則:1.根據(jù)實際應(yīng)用情況,可將經(jīng)常變動的數(shù)據(jù)和不經(jīng)常變動的數(shù)據(jù)分開存放;例如,在企業(yè)銷售管理系統(tǒng)中,產(chǎn)品數(shù)據(jù)不經(jīng)常變動,而產(chǎn)品的訂單數(shù)據(jù)經(jīng)常變動,所以訂單數(shù)據(jù)和產(chǎn)品數(shù)據(jù)應(yīng)分開存放。數(shù)據(jù)庫的物理設(shè)計2.將訪問頻率高的數(shù)據(jù)與訪問頻率不高的數(shù)據(jù)分開存放;例如,數(shù)據(jù)庫數(shù)據(jù)備份、日志文件備份等由于只在故障恢復(fù)時才使用,而且數(shù)據(jù)量很大,可以考慮存放在磁帶或大容量磁盤上;如果計算機提供多個磁盤,可以考慮將關(guān)系表和索引分別存放在不同的磁盤上,查詢時,由于兩個磁盤驅(qū)動器分別工作,因而可以保證較快的物理讀寫速度;數(shù)據(jù)庫的物理設(shè)計另外,可將較大的關(guān)系表分別存放在兩個磁盤上,以加快存取速度,這在多用戶環(huán)境下特別有效;也可將日志文件與數(shù)據(jù)庫對象(關(guān)系表、索引等)放在不同的磁盤以改進系統(tǒng)的性能。30數(shù)據(jù)庫的物理設(shè)計常見的文件組織方式有堆文件、有序文件、Hash文件、索引順序存取方式以及B+樹等。1)堆堆是一種無序的文件,有時稱為堆文件,是最簡單的一種文件組織方式。特點:記錄按照它們插入的順序放置在文件中。一條新記錄插入到文件的最后一塊,如果最后一塊沒有多余的空間,就在文件中添加一個新塊。由于堆文件中沒有根據(jù)某一字段的值排出特定順序,因此存取一條記錄必須要使用線性查找。數(shù)據(jù)庫的物理設(shè)計刪除一條記錄,首先需要檢索出所需要的物理塊,然后在這條記錄上標記上已刪除標記,并把塊寫回到磁盤。被刪除的記錄的空間是不可再用的。隨著刪除動作的發(fā)生,系統(tǒng)的性能也會不斷下降。需要DBA定期對文件重組,收回那些被刪除記錄的未使用空間。數(shù)據(jù)庫的物理設(shè)計缺點:從包含許多塊的堆文件中進行檢索的速度相對較慢。除非檢索中包含了文件中大部分記錄。適用場合:向表中插入大量數(shù)據(jù)的操作,堆文件是最好的文件組織方式。如果僅訪問表中的選定記錄時,堆文件是不合適的。數(shù)據(jù)庫的物理設(shè)計2)有序文件有序文件中的記錄可以根據(jù)一個或多個字段的值來排序,組成一個按鍵值排序的數(shù)據(jù)集,被用來對文件進行排序的字段稱為排序字段。如果排序字段正好是文件的主鍵,那么也就保證了在每條記錄中都有惟一的值。35數(shù)據(jù)庫的物理設(shè)計優(yōu)點:在有序文件上使用二分查找比線性查找更有效率。但是,二分法多用于主存中數(shù)據(jù)的檢索,而對輔存中數(shù)據(jù)使用的比較少,除非加主索引。缺點:因為要保持記錄有序,所以有序文件的插入、刪除很麻煩。數(shù)據(jù)庫的物理設(shè)計1.4.3索引的選擇索引是一種數(shù)據(jù)結(jié)構(gòu),可使DBMS快速地在文件中查找記錄,并能快速地響應(yīng)用戶的查詢。給文件選擇索引結(jié)構(gòu)是物理設(shè)計的一個基本任務(wù)。
數(shù)據(jù)庫的物理設(shè)計在數(shù)據(jù)庫物理設(shè)計中,需要考慮以下內(nèi)容:在哪些屬性上建立索引在哪些屬性上建立組合索引哪些索引要設(shè)計為惟一索引哪些屬性上不建索引數(shù)據(jù)庫的物理設(shè)計索引選擇的一般規(guī)則:考慮建索引的情況:(1)是主鍵的屬性一般都要建立索引,因為一方面常常需要通過主鍵來查詢;另一方面在插入、修改時要進行主鍵惟一性檢查。有了主鍵索引就可以提高這些操作的性能。(2)如果一個(或一組)屬性經(jīng)常在查詢條件中出現(xiàn),則考慮在這個(或這一組)屬性上建立索引(或組合索引);數(shù)據(jù)庫的物理設(shè)計(3)如果一個屬性經(jīng)常作為最大值和最小值等聚集函數(shù)的參數(shù),則考慮在這個屬性上建立索引;(4)如果一個(或一組)屬性經(jīng)常在連接操作的連接條件中出現(xiàn),則考慮在這個(或這組)屬性上建立索引;數(shù)據(jù)庫的物理設(shè)計(5)屬性值很少的屬性上不用在其上建立索引;(6)應(yīng)用中很少用到的屬性不用在其上建立索引;(7)查詢頻率很低的屬性不用在其上建立索引;(8)文件中的記錄數(shù)很少不用建立索引;(9)小表不需建索引(6個物理塊以下)??紤]不建索引的情況:數(shù)據(jù)庫的物理設(shè)計加索引的好處:可使DBMS快速地在文件中查找記錄,并能快速地響應(yīng)用戶的查詢。加索引的不足之處:索引數(shù)過多會給系統(tǒng)帶來較多的額外開銷,如維護索引的開銷、查找索引的開銷等,所以要視具體應(yīng)用而定。把下圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模式。假設(shè)數(shù)據(jù)量大,有如下一些常用的數(shù)據(jù)庫操作:(1)查詢某顧客于某日所訂貨物清單。(2)某顧客送來一新訂單。(3)某顧客的訂單已執(zhí)行或終止。(4)查詢某顧客的某訂單的某項訂貨由哪個廠家供貨。(5)查詢產(chǎn)品的庫存量及單價。試根據(jù)一般物理設(shè)計原則提出初步的物理設(shè)計方案。讀者可根據(jù)需要做一些合理的假定。解答根據(jù)附圖轉(zhuǎn)換得到的一組關(guān)系模式如下:顧客(顧客號,姓名,地址)訂單(訂單號,顧客號,訂貨日期,交貨日期,總金額)訂貨項目(訂單號,產(chǎn)品號,數(shù)量,估價)產(chǎn)品(產(chǎn)品號,類別,單價,庫存量)生產(chǎn)廠(廠號,廠名,地址)貨源(廠號,產(chǎn)品號,出廠價,交貨時期)其中,帶下劃線“
”的屬性為關(guān)系的主鍵。為了滿足上述處理要求,根據(jù)一般物理設(shè)計原則,在每個關(guān)系的主鍵上建立索引。另外,由操作(1)可知,應(yīng)對“訂單”文件按顧客號+訂貨日期建立索引。由操作(2)可知,送來的新訂單數(shù)據(jù),可直接輸入訂單與訂貨項目文件中。由操作(3)可知,訂單已執(zhí)行或終止,可在“訂單”與“訂貨項目”文件中刪去該份訂單。如要查詢訂單執(zhí)行情況,可在訂單文件中增加“執(zhí)行情況”屬性,其值有:執(zhí)行/未執(zhí)行/中止。由操作(4)可知,要實現(xiàn)這個處理,需將“訂單”、“訂貨項目”文件按訂單號連接,然后再與“貨源”文件中產(chǎn)品號進行連接。最后與“生產(chǎn)廠”文件連接得到具體廠名等信息。由操作(5)可知,只要查“產(chǎn)品”文件即可。至此,以上處理需求均可滿足。由于大部分查詢是按顧客號進行的,所以這些顧客號相同的訂單可考慮在物理上應(yīng)盡量簇集在一起,以加快查詢速度。1.5
MySQL概述
MySQL是最流行的開放源碼SQL數(shù)據(jù)庫管理系統(tǒng),它是由MySQLAB公司開發(fā)、發(fā)布并支持的。MySQL的正式發(fā)音是“MyEss
QueEll”,而不是“MySequel”。LAMP架構(gòu)特點作為應(yīng)用廣泛的網(wǎng)絡(luò)數(shù)據(jù)庫,MySQL有著其獨有的特點:1.是一種開放源碼軟件。2.具有快速、可靠和易于使用的特點。MySQL服務(wù)器已能提供豐富和有用的功能。它具有良好的連通性、速度和安全性,是十分適合于在Internet上使用的數(shù)據(jù)庫。
3.使用核心線程的完全多線程,能很容易地利用多CPU協(xié)同工作。4.有多種編程接口(API),包括:C、C++、Java、Perl、PHP、Python等。5.支持不同的平臺,MySQL幾乎提供了現(xiàn)存的所有的操作系統(tǒng)的對應(yīng)版本1.5.1MySQL的安裝和配置MySQL的獲得:http://MySQL的命名機制是使用由3個數(shù)字和一個后綴組成的版本號。例如,mysql-5.0.51-beta的版本號解釋如下:1)第1個數(shù)字“5”是主版本號,描述了文件格式。所有版本5的發(fā)行都有相同的文件格式。2)第2個數(shù)字“0”是發(fā)行級別。主版本號和發(fā)行級別組合到一起便構(gòu)成了發(fā)行序列號。3)第3個數(shù)字“51”是此發(fā)行系列的版本號,隨每個新分發(fā)版遞增。4)每次更新后,版本字符串的最后一個數(shù)字遞增。如果相對于前一個版本增加了新功能或有微小的不兼容性,字符串的第二個數(shù)字遞增。如果文件格式改變,第一個數(shù)字遞增。4)后綴顯示發(fā)行的穩(wěn)定性級別,通過一系列后綴顯示如何改進穩(wěn)定性。可能的后綴有:Alpha:發(fā)行包含大量未被徹底測試的新代碼Beta:該版本功能是完整的,并且所有的新代碼被測試了,沒有增加重要的新特征,應(yīng)該沒有已知的缺陷。當(dāng)alpha版本至少一個月沒有出現(xiàn)報導(dǎo)的致命漏洞,并且沒有計劃增加導(dǎo)致已經(jīng)實施的功能不穩(wěn)定的新功能時,版本則從alpha版變?yōu)閎eta版。rc是發(fā)布代表,是一個發(fā)行了一段時間的beta版本,看起來應(yīng)該運行正常。只增加了很小的修復(fù)。(發(fā)布代表即以前所稱的gamma版)如果沒有后綴,這意味著該版本已經(jīng)在很多地方運行一段時間了,而且沒有非平臺特定的缺陷報告。只增加了關(guān)鍵漏洞修復(fù)修復(fù)。這就稱為一個產(chǎn)品(穩(wěn)定)或“通用”版本。MySQL的安裝(1)下載Windows版的MySQL5.1.28,解壓后雙擊進入安裝向?qū)?。?種安裝方式可供選擇:Typical(典型安裝)、Complete(完全安裝)和Custom(定制安裝),對于大多數(shù)用戶,選擇Typical就可以了。單擊“next”按鈕進入下一步。(2)在MySQL5.1中,數(shù)據(jù)庫主目錄和文件目錄是分開的。其中,“DestinationFolder”為MySQL所在的目錄,默認目錄為C:\ProgramFiles\MySQL\MySQLServer5.1?!癉ataFolder”為MySQL數(shù)據(jù)庫文件和表文件所在的目錄,默認目錄為C:\DocumentsandSettings\AllUsers\ApplicationData\MySQL\MySQLServer5.1\data,其中ApplicationData是隱藏文件夾。確認后單擊“Install”按鈕開始安裝。圖1MySQL安裝界面(1)安裝完畢后選擇“ConfiguretheMySQLservernow”復(fù)選框進入配置向?qū)?。第一步選擇配置類型,有兩種:DetailedConfiguration(詳細配置)和StandardConfiguration(標準配置)。標準配置選項適合想要快速啟動MySQL而不必考慮服務(wù)器配置的新用戶。詳細配置選項適合想要更加細粒度控制服務(wù)器配置的高級用戶。這里選擇DetailedConfiguration。(2)單擊“next”按鈕進行服務(wù)器類型選擇,分為3種:DeveloperMachine(開發(fā)機器)、ServerMachine(服務(wù)器)和DedicatedMySQLServerMachine(專用MySQL服務(wù)器)。鑒于只是初學(xué)MySQL,所以這里選擇DeveloperMachine。MySQL服務(wù)器的配置(3)單擊“next”按鈕進入數(shù)據(jù)庫使用情況對話框,有3個選項:MultifunctionalDatabase(多功能數(shù)據(jù)庫)、TransactionalDatabaseOnly(只是事務(wù)處理數(shù)據(jù)庫)和Non-TransactionalDatabaseOnly(只是非事務(wù)處理數(shù)據(jù)庫)。其中多功能數(shù)據(jù)庫對InnoDB和MyISAM表都適用,所以這里選擇“MultifunctionalDatabase”。(4)下一步進入InnoDB表空間對話框,這里可以修改InnoDB表空間文件的位置,如圖2所示。默認位置是MySQL服務(wù)器數(shù)據(jù)目錄,這里不做修改,直接下一步。(5)接下來進入并發(fā)連接選擇對話框,DecisionSupp
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度山西省高校教師資格證之高等教育法規(guī)真題練習(xí)試卷B卷附答案
- 2024年大、中容量數(shù)字程控交換機項目資金需求報告代可行性研究報告
- 2024年機械治療及病房護理設(shè)備項目資金申請報告代可行性研究報告
- 幼兒園校舍安全排查自查報告范文
- 2024年產(chǎn)品保修服務(wù)協(xié)議文本
- 2024年專用液化氣運輸服務(wù)協(xié)議范本
- 2024年建筑效果設(shè)計方案協(xié)議模板
- 2024年二手車銷售協(xié)議:全面細化
- 倉庫租賃與承包協(xié)議范本2024年適用
- 出口業(yè)務(wù)協(xié)議樣式2024年專業(yè)
- 儲槽基礎(chǔ)施工方案#吉林
- Alices--adventures-in-wonderland愛麗絲夢游仙境PPT課件
- 2021年四史學(xué)習(xí)教育PPT
- 財務(wù)共享服務(wù)中心在企業(yè)中的應(yīng)用分析——以國美電器集團為例[精選]
- 幼兒園大班數(shù)學(xué)練習(xí)題(直接打印版)
- 民警三個規(guī)定自查自糾報告6篇范文
- 成立紀檢監(jiān)察領(lǐng)導(dǎo)小組3篇
- 查詢深溝球軸承尺寸和公差
- 關(guān)于柜面操作關(guān)鍵環(huán)節(jié)的風(fēng)險提示
- 抽油桿設(shè)計方法
- 工程送審結(jié)算模板(經(jīng)典實用)
評論
0/150
提交評論