

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件開發(fā)技術基礎,顧 剛計算機教學實驗中心,第4章 數(shù)據(jù)庫及應用程序開發(fā)講課8學時 實驗4學時,案例1:雅虎網(wǎng)站,,,雅虎網(wǎng)站,,案例2:火車訂票系統(tǒng),,全國各個地區(qū)火車車次信息,可以想象數(shù)據(jù)量很大。假如西安火車站每天始發(fā)車次200列,每列火車15×120,信息記錄36000條。又假如全國有100個像西安的城市,則系統(tǒng)每天要處理的數(shù)據(jù)量達到300萬條。,案例3:大學教學管理系統(tǒng),,某大學的全校性選修課門數(shù)有180多門,
2、選修學生人次達到1.5萬/每學期。假定每位學生最多允許選3門,每門課最多允許300人選,全校現(xiàn)有學生3萬多,每位學生都有自己專業(yè)的若干必修課。,需要專門的管理平臺去解決上面問題!,計算機怎樣去組織、存儲和管理這樣海量的數(shù)據(jù)信息?,數(shù)據(jù)庫概念回顧,數(shù)據(jù)?數(shù)據(jù)處理?數(shù)據(jù)庫?數(shù)據(jù)庫管理系統(tǒng)?數(shù)據(jù)庫系統(tǒng)?,指描述客觀事物的信息符號的總稱,這些信息符號能輸入到計算機中存儲起來,又能被處理,指對數(shù)據(jù)進行收集、整理、組織、存儲、加工(增刪改)、傳輸、
3、檢索的各個過程總稱,指對數(shù)據(jù)庫進行管理(定義、增、刪、改、查詢等)的軟件系統(tǒng)DBMS,指長期存儲在計算機內的有組織的可共享的數(shù)據(jù)集合,由硬件、操作系統(tǒng)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應用程序、數(shù)據(jù)庫管理員等部分組成,數(shù)據(jù)庫概念回顧,實體?屬性?關鍵字(碼)?關系?實體三種聯(lián)系?,客觀世界存在的任何事物稱為實體,指一個實體的所有特征稱為屬性,笛卡爾積D1×D2×…×Dn的子集稱為在N個域D1, D2,…, Dn上的
4、一個關系,俗稱二維表格為關系,指唯一能夠標識實體的一個或一組屬性稱為關鍵字或碼,一對一、一對多、多對多。分別舉例?,數(shù)據(jù)庫概念回顧,描述實體間聯(lián)系的工具?三種數(shù)據(jù)模型?,層次模型、網(wǎng)狀模型、關系模型。分別舉例?,現(xiàn)實世界:事物的客觀存在,由事物及其性質反映信息世界:是對現(xiàn)實世界的抽象,事物在信息世界中稱為實體。實體是由屬性來描述的。反映事物及其之間聯(lián)系的模型稱為(實體)概念模型。數(shù)據(jù)世界:信息的數(shù)據(jù)化。用記錄和數(shù)據(jù)項分別描述信息
5、世界中的實體及屬性。實體模型數(shù)據(jù)化后數(shù)據(jù)模型,數(shù)據(jù)庫概念回顧,現(xiàn)實世界中萬物之間必然存在多種聯(lián)系或者是實體內部的聯(lián)系,或者是實體之間的聯(lián)系實體之間各種各樣的聯(lián)系歸納起來有三種方式: 一對一(1:1) 一對多(1:n) 多對多(m:n)注意指不同類實體之間的聯(lián)系,數(shù)據(jù)庫概念回顧,,“一對一”聯(lián)系是最常見、最簡單的聯(lián)系例如:實體集“
6、本市房屋”中的實體“房屋” 實體集“本市居民家庭”中的實體“家庭”一般來說,每個家庭只住一套房屋、一套房屋住一戶家庭但要注意的是“一對一”聯(lián)系不一定是“一一對應”聯(lián)系,前者不排除如新造的房屋尚沒分配或剛組建的家庭還未分配到房子等情況,“一對一”聯(lián)系,,“一對多”聯(lián)系也是最常見的。例如實體學校和實體學生之間的聯(lián)系。一個學校有許多學生,但一個學生只就讀于一所學校。,,,實體E11實體E12實體E13實體E14實體
7、E15,,實體E21實體E22實體E23實體E24實體E25實體E26實體E27實體E28實體E29,,,,,,,,,,,,,,,,,,“一對多”聯(lián)系,“多對多”聯(lián)系是一種較為復雜的聯(lián)系。實體集E1中的實體可以和實體集E2中的任意多個實體間有聯(lián)系,反之亦然。例如在學校中教師和學生之間的聯(lián)系:一個教師給多個學生上課,而一個學生可以同時選修幾個教師的課。,,“多對多”聯(lián)系,,,用E-R圖(ENTITY-RELATIONS
8、HIP)來描述實體、屬性及實體之間的聯(lián)系。,,,,實體 聯(lián)系 屬性,概念模型的表示方法,E-R圖舉例1,E-R圖舉例2,供應商,項目,企業(yè),零件,供應,,,,,項目名,負責人,工期,零件號,零件名,庫存量,企業(yè)名,法人名,地址,,,,,,,電話,產(chǎn)品名,資產(chǎn),,,,,,,課程,教師,學生,教學,,,,E-R圖舉例3,姓名,學號,成績
9、,姓名,職稱,學科,,,,,,,,,課程實體集與教師實體集 多對多聯(lián)系,課程實體集與學生實體集 多對多聯(lián)系,在數(shù)據(jù)庫中,由于采用的數(shù)據(jù)模型不同,相應的DBMS也就完全不同,目前常用的三種數(shù)據(jù)模型是:層次模型、網(wǎng)狀模型、關系模型。因此目前流行的三種主要類型數(shù)據(jù)庫系統(tǒng)分別是層次、網(wǎng)狀和關系型數(shù)據(jù)庫管理系統(tǒng)。,三種數(shù)據(jù)模型,“一對多”、“一對一”聯(lián)系可以直接用層次模型來描述,但“多對多”聯(lián)系不能直
10、接用層次模型來表示,必須通過一些數(shù)學變換把“多對多”聯(lián)系拆成幾個“一對多”聯(lián)系后再用層次模型表示。雖然層次模型有一定局限性,但由于其簡單、清晰,還是有許多數(shù)據(jù)庫管理系統(tǒng)根據(jù)層次模型來設計,這樣一來的DBMS稱為層次型數(shù)據(jù)庫管理系統(tǒng)。在現(xiàn)實世界中有大量實體間聯(lián)系可以用層次模型來描述。,,層次模型,,在網(wǎng)狀模型中各實體之間的聯(lián)系用有向圖表示。由于樹型結構可以看成是有向圖的特例,所以網(wǎng)狀模型要比層次模型復雜,但它可以直接用于表示“多對多聯(lián)系”
11、。然而由于技術上的困難,一些已實現(xiàn)的網(wǎng)狀數(shù)據(jù)庫管理系統(tǒng)(如DBTG)中仍然只允許處理“一對多”聯(lián)系。,教師,班級,學生,課程,網(wǎng)狀模型,,,,,,,在手工處理(沒有使用計算機以前)的實際工作中。人們經(jīng)常使用表格進行業(yè)務管理。也就是說把實體之間的聯(lián)系繪制成表格。 例如旅館管理,除了旅客登記表以外,旅館本身最重要的資源:客房的有關數(shù)據(jù)也可以制成如下一張表格。,,關系模型,,實體集“旅客”和“房間”之間的聯(lián)系,即住宿關系也可使用表格來表示
12、??梢钥闯鲇帽砀衲軌虮硎尽耙粚σ弧薄ⅰ耙粚Χ唷钡膶嶓w聯(lián)系。實際上用表格也可以表示“多對多”的實體間聯(lián)系。,,,關系模型--表格描述,,目前實際使用的數(shù)據(jù)庫系統(tǒng)大多是關系數(shù)據(jù)庫,下面重點討論域(Domain):相同類型數(shù)據(jù)元素值的集合。 比如自然數(shù)集合、小寫字母集合笛卡爾積:設有一組域D1, D2,…, Dn ,則笛卡爾乘積為 D1×D2×…×Dn ={( d1, d2,…,
13、dn)| di ∈Di,i=1,2,…,n}元組(Tuple):笛卡爾乘積中每一個元素( d1, d2,…, dn)稱為 一個元組(n元組),關系數(shù)據(jù)庫系統(tǒng),域 D1=學生集合(Student)={張寧,李健,王鵬}, 域 D2=計算機語言課程集合(Language)={C++,OP,JAVA}, 域 D3=修課類別(Lesson)={必修課,選修課}, 笛卡爾積 D1
14、15; D2 × D3 = {(張寧,C++,必修課), (張寧,C++,選修課), (張寧,OP,必修課), (張寧,OP,選修課), (張寧,JAVA,必修課),(張寧,JAVA,選修課), (李健,C++,必修課), (李健,C++,選修課), (李健,OP,必修課), (李健,OP,選修課),
15、 (李健,JAVA,必修課),(李健,JAVA,選修課), (王鵬,C++,必修課), (王鵬,C++,選修課), (王鵬,OP,必修課), (王鵬,OP,選修課), (王鵬,JAVA,必修課),(王鵬,JAVA,選修課) }。,笛卡爾積實例,,,通常用關系來表示實體及其之間的聯(lián)系。關系可以用二維表來表示。每一行為一個元組,每一列為一個域,每一列
16、也可以稱為一個屬性,屬性具有對應的名稱,稱為屬性名。,比如在D1 × D2 × D3中只選出與學生張寧有關的內容就構成一個關系R(D1, D2, D3),關系:D1×D2×…×Dn的子集稱為域D1, D2,…, Dn上的一個關 系,記作 R(D1, D2,…, Dn),或簡記為R。,,笛卡爾積子集,關系模式-----指一個關系中的所有屬性名。 記為:〈關系名〉(屬性名1
17、,屬性名2, …… 屬性名N)例: SLL(Student,Language,Lesson) shop(店名,地址,法人名,經(jīng)營者名,電話) fruit(水果名,價格,庫存量,質量等級) book(書名,著者名,出版地,出版社,價格,頁數(shù),開本, ISBN,分類號,版本) student(姓名,學號,性別,宿舍,電話) 電話號碼簿(電話號碼,姓名)
18、注意上述關系模式中,哪些是關鍵字、哪些是外碼?,數(shù)據(jù)庫概念回顧,數(shù)據(jù)庫概念回顧,數(shù)據(jù)模型是概念模型(實體模型)的數(shù)據(jù)化,關系模型是三種數(shù)據(jù)模型之一,也是目前最為流行的數(shù)據(jù)模型,關系模型=關系模式(數(shù)據(jù)結構)+數(shù)據(jù)操縱+完整性約束,關系模式指一個關系中的所有屬性名數(shù)據(jù)操縱=查詢操作+更新操作 查詢操作:選擇、投影、連接、并、交、差 更新操作:增、刪、改完整性約束=實體完整性+參照完整性+用戶定義完整性 實體完
19、整性指關系中關鍵字不為空且唯一,見表4-1 參照完整性指外碼的刪除,出現(xiàn)數(shù)據(jù)不完整性,見表4-2,將圖書館大量圖書數(shù)據(jù)和大量讀者數(shù)據(jù)建立關系模型數(shù)據(jù)庫,假設我們設計的一個關系模式如下表所示:,圖書館如何建數(shù)據(jù)庫,對于這樣的關系表,如果具體分析可以發(fā)現(xiàn)如下問題: 1、數(shù)據(jù)的冗余度大:重復數(shù)據(jù)太多,占用較多存儲空間 2、插入異常:新購圖書,如果無讀者借,就無法登記該書的信息 3、刪除異常:當讀者還某書時,該書
20、的信息也刪除掉了; 4、更新異常:當某讀者單位變更時,需修改數(shù)據(jù),如果改錯,找不到讀者,注意:上表中的關鍵字是證號和書名兩個屬性組成,實際上我們所建立關系的二維表一般具有如下特性:1、每一列中的屬性值是同類型的數(shù)據(jù),即來自同一個域;2、不同的列要給予不同的屬性名,但可以出自同一個域;3、任意兩個元組在各屬性值上不能完全相同;4、每一個屬性必須是不可再分的數(shù)據(jù)項;5、行、列次序是無關緊要的。 但是一個關系的二
21、維表僅具有這些特性是不夠的。需要對關系再增加一些條件限制,使其避免出現(xiàn)數(shù)據(jù)冗余、插入異常、刪除異常和修改異常等問題。,分析圖書館的數(shù)據(jù)表,通常稱存在問題的關系為不規(guī)范關系,所以要將關系模式規(guī)范化。我們要優(yōu)化關系模式,從而使關系模式越來越合理。在此先搞清楚范式的概念。 范式(Normal Form)是滿足某種條件的關系模式的集合。 關系模式根據(jù)要求的不同,或者說規(guī)范化的程度的不同,可
22、以進一步劃分為一范式、二范式、三范式、Boyce-Codd范式、四范式和五范式,分別記為1NF、2NF、3NF、BCNF、4NF和5NF。 當我們說“關系R是3NF”時,就表示為R∈3NF。 各種范式之間存在以下包含關系: 1NF?2NF?3NF?BCNF?4NF?5NF,數(shù)據(jù)庫規(guī)范化理論,數(shù)據(jù)依賴,學號→姓名 課程號→課程名 (學號,課程號)→成績 還有嗎? 一個學號只對應一個學生,換句
23、話說知道學號就知道姓名,反之不然。因此稱姓名函數(shù)依賴于學號;或者說學號函數(shù)決定姓名。記作學號→姓名,一個關系中屬性值之間存在的互相依賴和互相制約的條件或因素,或者說一個關系中屬性之間存在著相互聯(lián)系,我們稱之為數(shù)據(jù)依賴。屬性之間依賴關系類似于數(shù)學中的函數(shù)。,函數(shù)依賴定義,設在關系R中,X和Y為R中的兩個屬性,如果每個X值只有一個Y值與之對應,則稱屬性Y函數(shù)依賴于屬性X;或稱屬性X(函數(shù))決定屬性Y,記作X→Y。,上表中學號決定其它5個屬性
24、,函數(shù)依賴再定義,設有關系模式R(A1,A2,A3,…… AK),X和Y均為{ A1,A2,A3,…… AK }的子集,r 是R 的任意具體關系,u 、v 是r 中的任意兩個元組。u (X)、v(X)分別表示元組u 、v 在X上的屬性值。u (Y)、v(Y)分別表示元組u 、v 在Y上的屬性值。如果存在u(X)=v(X),則有u(Y)=v(Y),那么稱X函數(shù)決定Y,或稱Y函數(shù)依賴于X,記為X ? Y。,分析下表中的屬性依賴?,學號→姓名
25、 課程號→課程名 (學號,課程號)→成績 還有嗎?,(證號,書名) ? 日期 完全OR部分?(證號,書名) ? 單位 完全OR部分?,在關系模式R中,如果X?Y,并且對于X的任何一個真子集X′,都有X′?Y不成立,則稱Y完全函數(shù)依賴于X。否則稱Y部分函數(shù)依賴于X。,完全函數(shù)依賴,分析下表傳遞依賴情況:,學號→學院→院地址,在關系模式R中,如果X?Y,Y X,Y?Z,則稱Z對X傳遞函數(shù)依賴。,傳遞函數(shù)依賴,
26、,,1NF的定義:如果關系模式R的每個屬性值都是基本數(shù)據(jù)項, 即為不可再分的數(shù)據(jù)項,則稱R為第一范式(1NF)。 分析書215頁例子,見表7-18不是1NF 解決辦法:元組重復就拆開。屬性可拆開就拆開;使生成的關系 模式滿足1NF。 2NF的定義:如果關系模式R為第一范式(即R∈ 1NF),
27、并且 任意一個非主屬性都完全函數(shù)依賴于R的任一候選碼, 則稱R為第二范式(2NF)。 分析書216頁例子,見表7-19不是2NF 注意:只要使關系模式滿足2NF,就可以避免1NF中由于存在 非主屬性對候選碼的部分函數(shù)依賴而產(chǎn)生的插入異常和
28、 刪除異常的問題。 解決辦法:利用投影運算把1NF分解成若干新的關系模式。使其 滿足2NF。,3NF的定義:如果關系模式R ∈2NF,且它的任何一個非主屬性都 不傳遞函數(shù)依賴于R的候選碼,則稱R為第三范式 (3NF)。 分析書217頁例子,見表7-21是2NF,但不滿足3N
29、F。 注意:2NF仍然存在插入異常和刪除異常 解決辦法:利用投影運算把2NF分解成若干新的關系模式, 使其滿足3NF。BCNF的定義:當關系模式R ∈1NF,且對于R的每個函數(shù)依賴 X ?Y,且X不包含Y時,都有X比含有R的候選碼, 則稱R為BC范式(BCNF)。 注意:滿足BC
30、NF的關系模式具有下述特點: 1)所有非主屬性對每一個候選碼都是完全函數(shù)依賴 2)所有非主屬性對每一個不包含它的碼也是完全函數(shù)依賴,關系模式S(no, department,dean,course, grade),觀察下面關系表格,是否為1NF?,在關系模式R中,如果所有屬性都是基本數(shù)據(jù)項,則稱1NF。,范式(Normal Form)是滿足某種條件的關系模式的集合。,一范式1NF定義,將一
31、個元組拆開為多個元組,1NF存在數(shù)據(jù)冗余、插入、刪除異?,F(xiàn)象。,二范式2NF定義,?分析上表(no, course)是關鍵字?(no, course)部分決定dean和department?拆分為N_C(no,course,grade)和N_D (no,department, dean),如果R是1NF,且每個非主屬性都完全函數(shù)依賴于關鍵字,則R是2NF。,在N_C中,(no, course)是主關鍵字。(no, course)完全
32、決定grade,設計符合二范式,在N_D中,no是主關鍵字,no完全決定department 和dean,三范式3NF定義,如果R是2NF,并且每個非主屬性都不傳遞函數(shù)依賴于關鍵字,則R是3NF,根據(jù)定義N_C(no,course,grade)是3NF,根據(jù)定義N_D(no,department, dean)不是3NF,N_D1,D_D,將N_D(no,department, dean)拆分為N_D_1(no,department)和D
33、_D(department, dean),設計符合三范式,非規(guī)范化關系,1NF,2NF,3NF,BCNF,4NF,5NF,,,,,,,消去重復元組,消除部分函數(shù)依賴,消除傳遞函數(shù)依賴,消除部分和傳遞函數(shù)依賴,消除多值依賴,消除連接依賴,關系數(shù)據(jù)庫標準語言SQL,SQL(structured query language)結構化查詢語言,結構化查詢語言包括三部分:數(shù)據(jù)定義語言DDL數(shù)據(jù)操縱語言DML數(shù)據(jù)控制語言DCL,DDL用來定義
34、數(shù)據(jù)庫的結構(即各種各樣的表) 1、定義各種表(關系模式) 每個表的列屬性名稱及類型的定義 2、輸入數(shù)據(jù),修改數(shù)據(jù) 3、修改表的結構,如增加列 4、定義候選碼,建立索引,DML用來維護數(shù)據(jù)庫中的數(shù)據(jù),即對表中數(shù)據(jù)進行各種處理 1、表中數(shù)據(jù)查詢 select 2、在表中插入一行數(shù)據(jù)(一條記錄、一個元組)insert 3、在表中刪除一行數(shù)據(jù)(一條記錄、一個元組)delete 4、在表中更改
35、一行數(shù)據(jù)(一條記錄、一個元組)update,DCL用來保護數(shù)據(jù)庫的安全操作 1、授權給用戶 grant 2、回收授權 revoke,SQL三級模式結構,建立表,定義表的語句格式為: CREATE TABLE ([NOT NULL][UNIQUE] [,[NOT NULL][UNIQUE]],…);,CREATE TABLE employee(eid CHAR(6) NO
36、T NULL PRIMARY KEY,name VARCHAR(8) NOT NULL),age NUMERIC(3,0),country VARCHAR(10) NULL),參見例4-1、4-2,插入記錄,?INSERT INTO employee(eid, name, age, country) VALUES (‘3018’, ‘zhang’, 28, ‘China’)? INSERT INT
37、O employee VALUES (‘3056’, ‘wang’, 35, ‘USA’)? INSERT INTO employee(eid, name, country) VALUES (‘4025’, ‘li’, ‘Russia’),插入記錄的語句格式為: INSERT INTO 表名 ([列名表]) VALUES (值表),參見例4-29,修改記錄,UPDATE employee SET
38、name=’Li Ming’WHERE eid=’4025’UPDATE employee SET name=’Zhang Li’,age=36,country=’USA’WHERE eid=’3056’可以修改多個字段的值。如果不帶WHERE修改所有的記錄,修改記錄的語句格式為: UPDATE SET =[,=]… WHERE ,參見例4-33、4-34,刪除記錄,DELETE em
39、ployee WHERE eid=’3018’,刪除記錄的語句格式為: DELETE FROM [ WHERE ];,參見例4-31、4-32,查詢記錄,查詢記錄的語句格式為: SELECT [ALL | DISTINCT] FROM [WHERE] [GROUP BY [ HAVING ] [ORDER BY [ ASC | DESC];,?語句第一部分指明要選取的列。各列由逗號
40、分開,他們之間的順序可以與表中的順序不一致。?FROM子句指明要從哪個(些)表中查詢數(shù)據(jù)。?WHERE子句指明要選擇滿足什么條件的記錄。?GROUP子句將結果按“列名1”的值進行分組,該屬性列值相等的元組分為一個組,每個組產(chǎn)生結果中的一條記錄。如果帶有HAVING短語,則只有滿足指定條件的組才輸出。?ORDER子句將結果按“列名2”的值升序(降序)排序。,查詢舉例,?SELECT pub_id, pub_name, cou
41、ntry FROM publishers? SELECT * FROM publishers,參見例4-11、4-12,SELECT city, state FROM authersSELECT DISTICT city, state FROM authers,查詢舉例,刪除表格中重復的行(元組)DISTICT,參見例4-14、4-15,?SELECT title_id, type, price, price-
42、price*0.3 FROM title ?SELECT au_lname+’.’+au_fname, city+’.’+state FROM authors,查詢舉例,計算表達式的查詢,參見例4-13,條件:= = != price>45.3country=’China’ NOT AND OR Country=’China’ AND age>35,查詢舉例,
43、帶有篩選條件的查詢,?SELECT title_id, type, price, price - price*0.3 FROM titles WHERE price - price*0.3>18? SELECT pub_id, pub_name FROM publishers WHERE country=’USA’ AND state=’CA’,查詢舉例,參見例4-15到4
44、-22,字符串中%表示匹配任意字符串 字符串中_表示匹配任意一個字符SELECT au_lname+’.’+au_fname, city+’.’+stateFROM authorsWHERE au_fname LIKE ‘D%’SELECT au_lname+’.’+au_fname, city+’.’+stateFROM authorsWHERE au_id LIKE ‘72_-%’,查詢舉例,
45、帶有LIKE子句的查詢,一般格式為: 列名 LIKE 字符串常數(shù),,通常返回的結果是隨機排列的。 SELECT stor_name, cityFROM storesORDER BY store_name,查詢舉例,帶有結果排序ORDER子句的查詢,一般格式為: ORDER BY 字段表,SELECT stor_name, cityFROM storesORDER BY
46、store_name DESC SELECT stor_name, cityFROM storesORDER BY store_name ASC,升序和降序排列結果,SELECT stor_name, cityFROM storesORDER BY stor_name, city 用多個列排列。 SELECT stor_name, cityFROM storesORDER
47、 BY state用不出現(xiàn)的列。,查詢舉例,,SUM(expression)AVG( expression )MIN( expression )MAX( expression )COUNT( expression ) COUNT(*),查詢舉例,使用庫函數(shù)進行統(tǒng)計查詢,常用庫函數(shù)如下:,SELECT AVG(price)FROM titles SELECT MAX(price)FROM titl
48、esWHERE type=’business’,,查詢舉例,SELECT AVG(qty), SUM(qty), COUNT(DISTICT stor_id)FROM sales SELECT COUNT(*)FROM publishersWHERE state=’CA’,,查詢舉例,SELECT type, AVG(price), SUM(price), COUNT(*)FROM ti
49、tlesWHERE type in ('business', 'mod_cook', 'trad_cook')GROUP BY type,查詢舉例,使用結果分組子句查詢,一般格式如下: GROUP BY 分組列名表 [HAVING 條件],SELECT type, pub_id, AVG(price), SUM(price), COUNT(*)F
50、ROM titlesWHERE type in (‘business’, ‘mod_cook’, ‘trad_cook’)GROUP BY type, pub_id,查詢舉例,對GROUP的分組結果再進一步篩選。 SELECT type, AVG(price), SUM(price), COUNT(*)FROM titlesWHERE price>$10GROUP BY type
51、SELECT type, AVG(price), SUM(price), COUNT(*)FROM titlesWHERE price>$10GROUP BY typeHAVING AVG(price)>$20,多表查詢,(a)笛卡爾乘積SELECT title_id, au_fnameFROM titles, authors SELECT titles.title
52、_id, titles.title, titleauthor.au_id FROM titles, titleauthor,別名查詢,SELECT t.title_id, t.title, ta.au_id FROM titles t, titleauthor ta SELECT t.title_id, t.title, ta.au_id FROM titles t, titleauthor taWHE
53、RE t.title_id=ta.title_id,篩選查詢,SELECT t.title_id, a.au_id FROM titles t, titleauthor ta, authors aWHERE t.title_id=ta.title_id and ta.au_id=a.au_id,視圖,CREATE VIEW au_viewASSELECT au_id, au_fname, au_lnameF
54、ROM authorsCREATE VIEW author_titleASSELECT t.title_id, a.au_id FROM titles t, titleauthor ta, authors aWHERE t.title_id=ta.title_id and ta.au_id=a.au_id,SQL建立視圖的語句格式為:CREATE VIEW [([,]…)] AS ,視圖查詢,SELECT
55、* FROM au_viewSELECT t.title_id, a.au_id FROM titles t, titleauthor ta, authors aWHERE t.title_id=ta.title_id and ta.au_id=a.au_id,刪除視圖,DROP VIEW 視圖名 DROP VIEW a_authors,索引的建立和刪除,索引類型按照存儲位置:聚集索引和非
56、聚集索引。按照關鍵字值是否唯一:唯一索引和非唯一所以。,建立索引,一般語句格式如下:CREATE [UNIQUE] [CLUSTERED | NOCLUSTERED ] INDEX 索引名ON 表名 (列名表)CREATE UNIQUE INDEX id_index ON authors (au_id),建立索引舉例,CREATE INDEX id_index ON authors (
57、 au_fname DESC,au_id)CREATE CLUSTERED INDEX id_index ON authors ( au_fname DESC,au_id),刪除索引,DROP INDEX 表名.索引名 DROP INDEX authors.id_index,數(shù)據(jù)庫安全性,(1)添加數(shù)據(jù)庫用戶 SP_GRANTDBACCESS 有登錄權的帳戶名 SP_GRANTDBACCESS
58、 [li\xin](2)刪除數(shù)據(jù)庫用戶 SP_REVOKEDBACCESS 帳戶名 SP_REVOKEDBACCESS [li\li],數(shù)據(jù)庫設計,需求分析,概念設計,邏輯結構設計,物理結構設計,數(shù)據(jù)庫實施,數(shù)據(jù)庫設計分下列階段:,需求分析,詳細調查要處理的對象了解原系統(tǒng)工作概況確定新系統(tǒng)的功能考慮今后可能的擴充和改變信息要求 要從數(shù)據(jù)庫中獲得信息的內容與性質處理要求 要完成什么處理功能,
59、對處理的響應時間有什么要求。安全性與完整性要求,概念設計,將現(xiàn)實世界(指應用領域)抽象為具有屬性的實體以及聯(lián)系。畫出一張張ER圖,就得到了一個對系統(tǒng)信息的初步描述,進而形成數(shù)據(jù)庫的概念模型。,邏輯結構設計,將概念結構轉化為一般的關系模型。將轉化來的關系模型向特定DBMS支持下的數(shù)據(jù)模型轉換。對數(shù)據(jù)模型進行優(yōu)化,數(shù)據(jù)庫邏輯模型的產(chǎn)生,一個實體型轉換為一個關系模式。實體的屬性就是關系的屬性,實體的碼就是關系的碼。,一個獨立的關系模式:
60、各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性,每個實體的碼均是該關系的候選碼。 與一端的關系模式合并:在該關系模式的屬性中加入另一個關系模式的碼和聯(lián)系本身的屬性。,一個1對l聯(lián)系,,方案1 職工(職工號,姓名,年齡)產(chǎn)品(產(chǎn)品號,產(chǎn)品名,價格)負責(職工號,產(chǎn)品號),,方案2職工(職工號,姓名,年齡,產(chǎn)品號) 產(chǎn)品(產(chǎn)品號,產(chǎn)品名,價格)方案3職工(職工號,姓名,年齡)產(chǎn)品(產(chǎn)品號,產(chǎn)品名,價格,職工號)方案
61、3比較合理,一個1對n聯(lián)系,一個獨立的關系模式:與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均換為關系的屬性,而關系的碼為n端實體的碼與n端對應的關系模式合并:聯(lián)系本身的屬性均換為關系的屬性,再加1端實體的碼,,方案1: 1:n聯(lián)系形成的關系獨立存在。 倉庫(倉庫號,地點,面積) 產(chǎn)品(產(chǎn)品號,產(chǎn)品名,價格) 倉儲(倉庫號,產(chǎn)品號,數(shù)量),,方案2: 聯(lián)系形成的關系與n端對象合并倉庫(倉庫號,地點,面積)產(chǎn)品
62、(產(chǎn)品號,產(chǎn)品名,價格,倉庫號,數(shù)量)方案2較優(yōu),m:n聯(lián)系,一個m:n聯(lián)系轉換為一個關系模式。與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性。而關系的碼為各實體碼的組合。,,學生(學號,姓名,年齡,性別); 課程(課程號,課程名,學時數(shù)); 選修(學號,課程號,成績)。,,,供應商(供應商號,供應商名,地址)零件(零件號,零件名,單價)產(chǎn)品(產(chǎn)品號,產(chǎn)品名,型號)供應(供應商號,零件號,產(chǎn)品號,
63、數(shù)量),,三個及以上實體間聯(lián)系,三個或三個以上實體間的一個多元聯(lián)系轉換為一個關系模式。與該多元聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性。而關系的碼為各實體碼的組合。,,方案1:轉換為兩個關系模式。 職工(職工號,姓名,年齡) 領導(領導工號,職工號)方案2:轉換為一個關系模式。 職工(職工號,姓名,年齡,領導工號),,同一實體集聯(lián)系,按上述1:1,1:n和m:n三種情況分別處理。,,零件(零件號,
64、名稱,價格)組裝(組裝件號,零件號,數(shù)量),,數(shù)據(jù)模型的優(yōu)化,以規(guī)范化理論為指導 (1)確定數(shù)據(jù)依賴。按需求分析,寫出各屬性之間的數(shù)據(jù)依賴。(2)考查是否存在部分函數(shù)依賴、傳遞函數(shù)依賴等,確定各關系模式分別屬于第幾范式。(3)按照需求分析對數(shù)據(jù)處理的要求,確定是否需要對它們進行合并或分解。,設計用戶模式,利用視圖功能設計更符合局部用戶需要的用戶外模式。(1)使用更符合用戶習慣的別名(2)針對不同級別的用戶定義不同的外模式,
65、以滿足系統(tǒng)對安全性的要求。,數(shù)據(jù)庫物理設計及實施,物理設備上的存儲結構與存取方法稱為數(shù)據(jù)庫的物理結構 1.確定數(shù)據(jù)的存儲結構綜合考慮存取時間、存儲空間利用率和維護代價3方面的因素。2.設計數(shù)據(jù)的存取路徑在關系數(shù)據(jù)庫中,選擇存取路徑主要是指確定如何建立索引。,建立索引原則,一個(組)屬性經(jīng)常在操作條件中出現(xiàn)。一個(組)屬性經(jīng)常作為聚集函數(shù)的參數(shù)。一個(組)屬性經(jīng)常在連接操作的連接條件中出現(xiàn)。,建立聚簇索引原則,檢索數(shù)據(jù)時,常以
66、某個(組)屬性作為排序、分組條件。檢索數(shù)據(jù)時,常以某個(組)屬性作為檢索限制條件,并返回大量數(shù)據(jù)。表中某個(組)的值重復性較大。,確定數(shù)據(jù)的存放位置,數(shù)據(jù)庫數(shù)據(jù)備份、日志文件備份等,可以考慮存放在磁帶上??梢钥紤]將表和索引分別放在不同的磁盤上。在查詢時,由于兩個磁盤驅動器分別在工作,因而可以保證物理讀寫速度比較快。,確定系統(tǒng)配置,同時使用數(shù)據(jù)庫的用戶數(shù)同時打開的數(shù)據(jù)庫對象數(shù)使用的緩沖區(qū)長度、個數(shù)時間片大小裝填因子,數(shù)據(jù)庫的
67、實施,(1)定義數(shù)據(jù)庫結構(2)數(shù)據(jù)裝載,數(shù)據(jù)庫編程,數(shù)據(jù)庫編程指用高級語言程序中直接處理數(shù)據(jù)庫具體數(shù)據(jù)庫連接技術如下:,?ODBC Open DataBase Connectivity 開放數(shù)據(jù)庫連接?OLE DB Object Linking and Embedding DataBAse 對象連接和嵌入數(shù)據(jù)庫?ADO ActiveX Data
68、 Object ActiveX控件數(shù)據(jù)對象?JDBC Java DataBase Connetivity JAVA數(shù)據(jù)庫連接,微軟公司ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互連),,建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的標準API(應用程序編程接口)?;贠DBC的應用程序對數(shù)據(jù)庫的操作不依賴任何DBMS,由對應的DBMS的ODBC驅動程序完成
69、。能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。,ODBC,,Microsoft推出的一致數(shù)據(jù)訪問技術,為關系型或非關系型數(shù)據(jù)訪問提供了一致的訪問接口。ADO提供了高層軟件接口,不僅可在高級語言開發(fā)環(huán)境中使用,還可以在一些腳本語言中使用,這對于WEB程序訪問數(shù)據(jù)庫提供了捷徑。OLE DB 提供了底層軟件接口,ADO和OLE DB,JDBC,Java 數(shù)據(jù)庫連接JDBC (Java Database Connectivity)由一組用 Java 編程語
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第1章軟件開發(fā)方法(三)軟件開發(fā)技術
- 軟件開發(fā)技術手冊
- 面向對象的軟件開發(fā)基礎
- 軟件開發(fā)環(huán)境與開發(fā)技術.pdf
- 軟件開發(fā)崗位舉證模板_軟件開發(fā)
- 軟件開發(fā)崗位舉證模板_資深軟件開發(fā)
- 軟件開發(fā)崗位舉證模板_助理軟件開發(fā)
- 軟件開發(fā)崗位舉證模板_高級軟件開發(fā)
- 軟件開發(fā)
- 軟件開發(fā)技術復習題
- 軟件開發(fā)技術文檔編寫規(guī)范==
- 軟件開發(fā)技術 復習題
- 絡軟件開發(fā)技術概念篇
- 軟件開發(fā)技術復習題
- 廣告屏蔽軟件開發(fā)技術方案
- 軟件開發(fā)技術復習題
- 軟件開發(fā)模型
- 軟件開發(fā)合同
- 軟件開發(fā)合同
- 軟件開發(fā)規(guī)范
評論
0/150
提交評論