軟考—軟體設計師—第7章資料庫技術基礎
概念性的東西我總是很容易搞混,想著一邊學習一邊整理出來,如果這次沒有考過的話下次還可以繼續學習……
學習資料《軟體設計師教程(第4版)》褚華 主編,清華大學出版社
對這本書有點小小的意見,沒有課後習題,雖然說有對應的上下午科目的真題的書,但是感覺還是有一兩道題會好一些
資料庫系統DBS
組成:資料庫、硬體、軟體、人員。
從終端使用者角度,體系結構分類:集中式資料庫系統、客戶端/伺服器(C/S)體系結構、並行資料庫系統、分散式資料庫系統。
三級模式結構“三級模式和兩級映像”:外模式(使用者模式/子模式)、概念模式(模式)、內模式(儲存模式)、外模式/模式映像、模式/內模式映像。二級映像功能保證了資料的獨立性。
資料庫管理系統DBMS是DBS的核心軟體
功能:資料定義(資料定義語言DDL)、資料庫操作(資料操縱語言DML)、資料庫執行管理、資料的組織、儲存和管理、資料庫的建立和維護、其他功能。
特徵:資料結構化且統一管理、有較高的資料獨立性(物理獨立性、邏輯獨立性)、資料控制功能(資料庫的安全性、資料的完整性、併發控制、故障恢復)。
分類:關係資料庫系統RDBS、面向物件的資料庫系統OODBS、物件關係資料庫系統ORDBS
大資料BigData特徵:“4V”——大量化Volumn、多樣化Variety、價值密度低Value、快速化Velocity。
三大挑戰:軟體和資料處理能力、資源和共享管理、資料處理的可信力。
安全風險:大資料成為網路攻擊的顯著目標、大資料加大了隱私洩露風險、大資料威脅現有的儲存和安防措施、大資料技術成為黑客的攻擊手段、大資料成為高階可持續攻擊的載體、(新機遇)大資料技術為資訊保安提供新支撐。
資料模型分類:概念資料模型(資訊模型,其中最著名的是E-R模型)、基本資料模型(用於DBMS的實現,包括層次模型、網狀模型、關係模型、面向物件模型)。
三要素:資料結構、資料操作、資料的約束條件。
強調語義,與現實世界的問題密切相關,容易理解、與計算機無關,只能說明實體間的語義聯絡,解決實際應用問題時,通常先設計一個E-R模型,然後再轉換成計算機能夠接受的資料模型。
實體:矩形表示。
聯絡:菱形表示,用無向邊連線有關實體。實體內部的聯絡、實體與實體之間的聯絡(兩個不同實體之間的聯絡:1:1、1:n、m:n;兩個以上不同實體集之間的聯絡:1:1:1、1:1:n、1:m:n、r:m:n;同一實體集內的二元聯絡)
屬性:實體某方面的特徵。橢圓表示,實體集中作為主碼的一部分屬性以下劃線標明。分類:簡單屬性和複合屬性、單值屬性和多值屬性、NULL屬性、派生屬性(派生屬性可以從其他屬性得來)。
E-R方法:概念模型中最常用的方法。其他構件:雙邊矩形表示弱實體集、雙邊菱形表示弱實體集對應的標識性聯絡、雙橢圓標識多值屬性、虛橢圓表示派生屬性、雙線表示一個實體全部參與到聯絡集中。
擴充的E-R模型:弱實體(一個實體的存在必須以另一個實體為前提)、特殊化(一個實體可以按照某些特徵區分為幾個子實體)、普遍化(將幾個具有共同特徵的實體集概括成一個更普遍的實體集)。
層次模型(Hierarchical Model)採用樹型結構表示資料與資料間的聯絡。每一個結點表示一個記錄型別(實體),記錄之間的聯絡用結點之間的連線表示,並且根結點以外的其他結點有且僅有一個雙親結點。典型的層次模型系統:IMS系統(資訊管理系統,IBM推出)。
特點:記錄之間的聯絡通過指標實現,比較簡單,查詢效率高。
缺點:只能表示1:n聯絡,由於層次順序嚴格、複雜,插入、刪除操作的限制比較多,應用程式編制比較複雜。
表示多對多聯絡的方法:冗餘結點法(兩個實體的多對多聯絡轉換為兩個一對多聯絡,優點:結點清晰,允許結點改變儲存位置;缺點:額外的儲存空間,潛在的資料不一致性);虛擬結點分解法(將冗餘結點轉換為虛擬結點,優點:減少空間浪費、避免資料不一致性;缺點:改變儲存位置可能引起虛擬結點中指標的修改)。
網狀模型(Network Model,DBTG模型)採用網路結構表示資料與資料間聯絡。允許一個以上的結點無雙親,一個結點可以有多於一個的雙親。每個結點表示一個記錄型別(實體),每個記錄型別可以表示若干個欄位(實體的屬性),結點間的連線表示記錄型別之間一對多的聯絡。
是層次模型的一個特例,不能表示記錄之間的多對多聯絡,需要引入連線記錄來表示多對多聯絡。
(我對於網狀模型和層次模型之間的聯絡還是不是很瞭解,感覺講得很抽象,有更好的瞭解方法的時候再更新)
優點:直接地描述顯示時間,具有良好的效能,存取效率高。
缺點:結構複雜、
目前最常用的資料模型之一。採用表格結構表達實體集以及實體集之間的聯絡,最大的特色是描述的一致性。關係模型是由若干個關係模式組成的集合,一個關係模式相當於一個記錄型,對於程式設計語言中型別定義的概念。關係是一個例項,也是一張表,對應於程式設計語言中變數的概念。
面向物件模型(Object Oriented Model)核心概念:物件和物件標識(OID)、封裝(encapsulate)、物件的屬性(object attribute)、類和類層次(class and class hierarchy)、繼承(inherit)。
優點:更加豐富的表達能力。
缺點:模型相對複雜,實現起來較困難。
關係資料庫
屬性和域:屬性是描述事物的特徵,屬性的域是每個屬性的取值範圍。在關係資料模型中所有的域應是原子資料。這種限制成為第一正規化(first normal form,1NF)條件。存在非1NF的關係資料模型。
笛卡爾積與關係:笛卡爾積可以用二維表來表示,一個關係也可以用二維表來表示。
目或度、候選碼、主碼、主屬性、非碼屬性、外碼、全碼。
關係的3種類型:基本關係(基本表/基表)、查詢表、視圖表(虛表)。
關係的描述成為關係模式(Relation Schema):R(U,D,dom,F),簡記為R(U)或R(A1,A2,A3,...,An)。R表示關係名,U是組成該關係的屬性名合集,D是屬性的域,dom是屬性向域的映像集合,F為屬性間資料的依賴關係集合。
關係的完整性:實體完整性(Entity Integrity)、參照完整性(Referential Integrity)、使用者定義完整性(User defined Integrity)。
關係操作的特點是操作物件和操作結構都是集合。
關係資料語言分為三類:關係代數語言、關係演算語言(包括元組關係演算語言如Aplha和Quel、域關係演算語言如QBE)、具有關係代數和關係演算雙重特點的語言(如SQL)。其中關係代數語言、元祖關係演算和域關係演算是抽象查詢語言。
關係代數運算
4類關係運算符:集合運算子(並∪、差-、交∩、笛卡爾積×)、專門的關係運算符(選擇σ、投影π、連線▷◁(θ連線、等值連線、自然連線)、除÷)、算術比較符(大於>、大於等於≥、小於<、小於等於≤、等於=、不等於≠)、邏輯運算子(非¬、與∧、或∨)。
5種基本的關係代數運算:並、差、笛卡爾積、投影、選擇。其他關係代數運算可以通過這5中基本關係代數運算匯出。
擴充套件的關係代數運算:交、連線、除、廣義投影、外連線(左外連線、右外連線、全外連線)
個人覺得這一塊的運算和記憶都不是很容易,因為之前學了sql,所以有一些方法,但是不一定準確,在這裡分享一下,等到之後完全掌握了之後若是發現有錯誤的話,會過來改正。
↑其實看書看到SQL的時候有講明其對應關係。
① SELECT A.NAME FROM A WHERE A.ID='001'
→πA.NAME(σA.ID='001'(A))
關係資料庫SQL語言(Structured Query Language)
關係資料庫標準語言,功能:資料查詢(SELECT)、資料操縱(INSERT、DELETE、UPDATE)、資料定義(CREATE、DROP、ALTER)、資料控制(GRANT、REVORK)。
特點:綜合統一、高度非過程化、面向集合的操作方式、兩種使用方式(自含式語言、嵌入式語言)、語言簡潔易學易用。
支援資料庫的三級結構模式:檢視對應外模式、基本表對應模式、儲存檔案對應內模式。
基本組成:資料定義語言、互動式資料操縱語言、事務控制、嵌入式SQL和動態SQL、完整性、許可權管理。
平時用SQL用得比較多,關於SQL的比較基本的語句就不贅述了,只抽取自己不是掌握得不是很好的部分做個筆記。
關於CREATE VIEW中的WITH CHECK OPTION: |
假設建立如下的VIEW: CREATE VIEW CS-STUDENT AS SELECT Sno,Sname,Sage,Ssex FROM Student WHERE SD='CS' WITH CHECK OPTION 則對CS-STUDENT進行操作時都會保證SD='CS' 如以下操作是錯誤的不會被執行: UPDATE CS-STUDENT SET SD='DB' WHERE Sno='3001' |
對於沒有經過複雜處理的單表檢視,修改檢視時會修改原表 對於經過負責處理的單表檢視或者多表檢視,則需要分情況 |
SELECT | 投影運算 |
FROM | 笛卡爾積 |
WHERE | 選擇謂詞 |
5個預定義聚集函式:AVG、MIN、MAX、SUM、COUNT。
定義轉義符:ESCAPE。 如LIKE 'ab\%ab%'ESCAPE'\' → 匹配的是以'ab%ab'開頭的字串。
關係資料庫的規範化
函式依賴:函式依賴、非平凡的函式依賴、平凡的函式依賴、完全函式依賴、部分函式依賴、傳遞依賴、碼、主屬性和非主屬性、外碼、函式依賴的公理系統/Armstrong公理系統(自反律、增廣律、傳遞率、合併規則、偽傳遞率、分解規則;參考資料https://baike.baidu.com/item/Armstrong公理)。
平凡的函式依賴 | 如:(id,name)->id、(id)->id是平凡的函式依賴 |
非平凡的函式依賴 | 如:(id)->name、(id)->sex是非平凡的函式依賴 |
完全函式依賴 | 如:SC(Sno,Cno,grade,Sage),對於(Sno,Cno)的任意真子集Sno或Cno,都不能決定grade,所以(Sno,Cno)→grade是完全函式依賴。只有當函式依賴的決定方是組合屬性時,討論部分函式依賴才有意義,當函式依賴的決定方是單屬性時,只能是完全函式依賴。(cr: https://baike.baidu.com/item/部分函式依賴) |
部分函式依賴 | 如:SC(Sno,Cno,grade,Sage),對於(Sno,Cno)的真子集Sno,可以決定Sage,所以(Sno,Cno)->Sage是部分函式依賴。 |
規範化:1NF、2NF、3NF。1NF的級別最低。通過分解,可以將一個低一級正規化的關係模式轉換成若干個高一級正規化的關係模式,這個過程稱為規範化。對於非3NF的1NF、2NF,其效能弱,一般不宜作為資料庫模式,要將其變換為3NF或更高級別的正規化。
1NF | 關係模式R的每一個分量是不可再分的資料項 | 冗餘度大、引起修改操作的不一致性、插入異常、刪除異常 |
2NF | 每一個非主屬性完全依賴於碼 | 當1NF消除了非主屬性對碼的部分函式依賴 |
3NF | 產生冗餘和異常的兩個重要原因是部分函式依賴和傳遞函式依賴,因為3NF不存在非主屬性對碼的部分函式依賴和傳遞函式依賴,所以具有很好的效能。 | 當2NF消除了非主屬性對碼的傳遞函式依賴 |
分解:對一個給定的模式進行分解,是的分解後的模式是否與原來的 模式等價有3種情況:①分解具有無損連線性;②文傑要保持函式依賴;③分解既要無損連線性,又要保持函式依賴。
資料庫的控制功能
SQL中事務定義的語句:BEGIN TRANSACTION、COMMIT、ROLLBACK。
事務的特性(事務的ACID性質):原子性atomicity、一致性consistency、隔離性isolation、永續性durability。
資料庫的4類故障:事務內部故障、系統故障(軟故障)、介質故障(硬故障)、計算機病毒。
資料庫的備份和恢復:恢復的基本原理是建立資料冗餘(重複儲存)。建立冗餘資料的方法和是進行資料轉儲(靜態轉儲和動態轉儲、海量轉儲和增量轉儲)和登記日誌檔案。
恢復的3個步驟:①反向掃描檔案日誌,查詢該事務的更新操作;②對事務的更新操作執行逆操作;③繼續反向掃描日誌檔案,查詢該事務的其他更新操作,並做同樣的處理,直到事務的開始標誌。
併發操作帶來的三類問題:丟失修改、不可重複讀、讀髒資料。主要原因是事務的併發操作破壞了事務的隔離性。解決該問題可以從保證事務的隔離性入手。
併發控制技術:封鎖(排它鎖/X鎖/寫鎖、共享鎖/S鎖/讀鎖)。三級封鎖協議(一級封鎖協議解決丟失修改、二級封鎖協議解決丟失修改和不可重複讀,三級封鎖協議解決丟失修改和不可重複讀和讀髒資料)。
死鎖:兩個以上的事務分別請求封鎖對方已經封鎖的資料,導致了長時間等待而無法繼續進行下去的現象。
併發排程的可序列性:可序列性是併發事務正確性的準則,一個給定的併發排程,當且僅當它是可序列化的才認為是正確排程。
兩段封鎖協議
封鎖的粒度:封鎖物件(可以是邏輯單元,也可以是物理單元)的大小。