軟考—軟件設計師—第7章數據庫技術基礎

概念性的東西我總是很容易搞混,想着一邊學習一邊整理出來,如果這次沒有考過的話下次還可以繼續學習……

學習資料《軟件設計師教程(第4版)》褚華 主編,清華大學出版社

對這本書有點小小的意見,沒有課後習題,雖然說有對應的上下午科目的真題的書,但是感覺還是有一兩道題會好一些

數據庫系統DBS

    組成:數據庫、硬件、軟件、人員。

    從最終用戶角度,體系結構分類:集中式數據庫系統、客戶端/服務器(C/S)體系結構、並行數據庫系統、分佈式數據庫系統。

    三級模式結構“三級模式和兩級映像”:外模式(用戶模式/子模式)、概念模式(模式)、內模式(存儲模式)、外模式/模式映像、模式/內模式映像。二級映像功能保證了數據的獨立性。

數據庫管理系統DBMS是DBS的核心軟件

    功能:數據定義(數據定義語言DDL)、數據庫操作(數據操縱語言DML)、數據庫運行管理、數據的組織、存儲和管理、數據庫的建立和維護、其他功能。

    特徵:數據結構化且統一管理、有較高的數據獨立性(物理獨立性、邏輯獨立性)、數據控制功能(數據庫的安全性、數據的完整性、併發控制、故障恢復)。

    分類:關係數據庫系統RDBS、面向對象的數據庫系統OODBS、對象關係數據庫系統ORDBS

大數據BigData

    特徵:“4V”——大量化Volumn、多樣化Variety、價值密度低Value、快速化Velocity。

    三大挑戰:軟件和數據處理能力、資源和共享管理、數據處理的可信力。

    安全風險:大數據成爲網絡攻擊的顯著目標、大數據加大了隱私泄露風險、大數據威脅現有的存儲和安防措施、大數據技術成爲黑客的攻擊手段、大數據成爲高級可持續攻擊的載體、(新機遇)大數據技術爲信息安全提供新支撐。


數據模型

    分類:概念數據模型(信息模型,其中最著名的是E-R模型)、基本數據模型(用於DBMS的實現,包括層次模型、網狀模型、關係模型、面向對象模型)。

    三要素:數據結構、數據操作、數據的約束條件。

E-R模型(實體—聯繫模型)   

    強調語義,與現實世界的問題密切相關,容易理解、與計算機無關,只能說明實體間的語義聯繫,解決實際應用問題時,通常先設計一個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模型)   

    採用網絡結構表示數據與數據間聯繫。允許一個以上的結點無雙親,一個結點可以有多於一個的雙親。每個結點表示一個記錄類型(實體),每個記錄類型可以表示若干個字段(實體的屬性),結點間的連線表示記錄類型之間一對多的聯繫。

    是層次模型的一個特例,不能表示記錄之間的多對多聯繫,需要引入連接記錄來表示多對多聯繫。

    (我對於網狀模型和層次模型之間的聯繫還是不是很瞭解,感覺講得很抽象,有更好的瞭解方法的時候再更新)

    優點:直接地描述顯示時間,具有良好的性能,存取效率高。

    缺點:結構複雜、

關係模型(Relation Model)   

    目前最常用的數據模型之一。採用表格結構表達實體集以及實體集之間的聯繫,最大的特色是描述的一致性。關係模型是由若干個關係模式組成的集合,一個關係模式相當於一個記錄型,對於程序設計語言中類型定義的概念。關係是一個實例,也是一張表,對應於程序設計語言中變量的概念。

面向對象模型(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.NAMEA.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是部分函數依賴。(cr:  https://baike.baidu.com/item/部分函數依賴)

    規範化: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鎖/讀鎖)。三級封鎖協議(一級封鎖協議解決丟失修改、二級封鎖協議解決丟失修改和不可重複讀,三級封鎖協議解決丟失修改和不可重複讀和讀髒數據)。

    死鎖:兩個以上的事務分別請求封鎖對方已經封鎖的數據,導致了長時間等待而無法繼續進行下去的現象。

    併發調度的可串行性:可串行性是併發事務正確性的準則,一個給定的併發調度,當且僅當它是可串行化的才認爲是正確調度。

    兩段封鎖協議

    封鎖的粒度:封鎖對象(可以是邏輯單元,也可以是物理單元)的大小。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章