炫“庫”行動——超全數據庫疑難知識總結(解說+案例)建議收藏!

王小王-123 2022-01-08 06:54:59 阅读数:244

案例 收藏

本文正在參與炫“庫”行動-人大金倉有獎征文:快來點擊活動鏈接參與投稿吧https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edbhttps://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb


目錄

一、數據庫分析與設計

 二、UML與數據庫應用系統

三、高級查詢

四、數據庫後臺編程技術

五、數據庫及數據庫對象

六、安全管理

七、運行維護與優化

八、故障管理、備份與恢複

每文一語


話不多說,直接上幹糧,各比特C站的小夥伴,不要吃的太飽了喲,要記得消化,太撐了容易長肉肉喲!

一、數據庫分析與設計

1、數據庫應用系統的數據處理需求可以錶示為事務規範。

事務規範: 事務規範包括了事務名稱事務描述事務所訪問的數據項事務用戶

2、改變數據庫應用系統體系結構昇級DBMS版本修改程序以適應新需求都屬於數據庫應用系統昇級工作;而創建新的索引屬於數據庫應用系統優化內容。

3、IDEF1X側重分析、抽象和概括應用領域中的數據需求,被稱為數據建模方法,而UML,DFD,IDEFO都屬於需求分析建模方法。

4、數據持久層負責保存和管理應用數據系統數據,而數據的完整性維護屬於數據持久層功能中的數據管理的內容。

5、多個小事務合並成大事務,會增加占有鎖的時間,可能會造成大量阻塞事務,甚至會產生死鎖。

6、數據庫應用系統的實施工作包括創建數據庫、裝載數據、編寫與調試應用程序、數據庫試運行

7、關鍵字unique錶示唯一索引,clustered錶示聚集索引,

8、數據庫應用系統日常維護包括:備份與恢複、完整性維護、安全性維護、存儲空間管理和並發控制

9、模式調整屬於數據庫應用系統的性能優化調整的範圍。

10、在數據流圖中,一個處理至少有一個輸入流和一個輸出流;一個存儲必須有流入的數據流和流出的數據流  ;父圖中描述過的數據流必須在相應的子圖中出現;一個數據流至少有一端是處理框

11、通過數據庫概念設計邏輯設計已經得到了規範化的關系模式。盡管關系數據庫模式是按照關系數據庫管理系統支持的結構進行數據的描述和組織的,然而,這些符號錶示並不能解釋如何處理和存儲數據。數據庫物理設計的目的是將數據的邏輯描述轉換為實現技術規範,其目標是設計數據存儲方案,以便提供足够好的性能並確保數據庫數據的完整性、安全性和可恢複性。

從功能角度數據庫應用系統可以劃分為四個層次來實現:
    ①錶示層:用於顯示數據和接收用戶輸入的數據。(一般為Windows應用程序或Web應用程序)。
    ②業務邏輯層:是錶示層和數據訪問層之間的橋梁,主要負責數據的傳遞和處理。
    ③數據訪問層:負責與DBMS系統進行交互,提取或存入應用系統所需的數據。
    ④數據持久層:負責保存和管理應用系統數據。

12、在IDEF1X中一個非確定聯系又稱為多對多關系或m:n 聯系,非標定型聯系   :一對多

13、系統規劃與定義的內容包括:任務陳述、確定任務目標、確定系統範圍和邊界、確定用戶視圖

14、IDEF0需求建模方法,描述功能活動示意圖中:

左邊的輸入箭頭錶示完成活動需要的數據;

矩形框上方的控制箭頭描述了影響這個活動執行的事件或約束條件;

右邊的輸出箭頭說明由活動產生的結果及信息,

下方進入的機制箭頭錶示實施該活動的物理手段或完成活動需要的資源。

15、降低事務隔離級別可以提高事務的吞吐量提高活鎖的可能性降低發生死鎖、發生阻塞的可能性。

事務的隔離性是指多個並發事務同時訪問一個數據庫時,一個事物不應被另一個事物所幹擾,即保證並發讀取數據的正確性,降低發生數據不一致的可能性。

16、在進行DBAS設計時,為了避免死鎖,可以考慮以下原則:
    (1)按同一順序訪問資源
    (2)避免事務中的用戶交互。
    (3)采用小事務模式,盡量縮短事務的長度,减少占有鎖的時間。
    (4)盡量使用記錄級別的鎖(行鎖),少用錶級別的鎖。
    (5)使用綁定連接,使同一應用程序所打開的兩個或多個連接可以相互合作。

17、完整性約束條件的作用對象分為列、元組和關系三種級別

其中對列的約束主要指對其值類型、範圍、精度、排序等的約束條件。對元組的約束主要指對記錄中各個屬性之間的聯系的約束條件。對關系的約束是指對若幹紀錄間、關系集合上以及關系之間聯系的約束條件。

18、論證是否具備數據庫應用系統開發所需的人力資源,這屬於數據庫應用系統的操作可行性分析。

19、兩個實體集間存在多對多聯系,利用引入的第三個實體集,轉化後得到的兩個一對多的聯系,符合標定型聯系的定義。

20、關系模式個數=實體集數+多對多關系數

21、業務邏輯層概要設計

    1、一個構件或模塊只負責完成一項任務,也就是單一責任原則。
    2、各個構件均應具有獨立的功能,並最大限度地减少與其他構件功能重疊。
    3、構件之間的接口應盡量簡單明確。
    4、如果兩個構件間的關系比較複雜,應考慮進一步進行模塊劃分。
    5、如果構件過於複雜,可以考慮將其細分。

22、關系模式的設計、規範化處理屬於數據庫邏輯結構設計的內容
 

 二、UML與數據庫應用系統

1、狀態圖中只能有一個起始狀態可以有多個結束狀態

2、對象圖主要用於解釋類圖以及驗證所設計的類圖是否符合實際狀况,也可用於協助程序設計人

員理解複雜的類圖結構。

3、一般情况下,時間圖作為狀態機圖的輔助說明工具,一張時間圖通常會對應至少一張狀態圖。

4、角色是與系統進行交互外部實體,可以是系統用戶也可以是其他系統或者硬件設備

5、在UML中,用類圖來描述系統的靜態結構,而用順序圖和通信圖來錶示系統的動態結構。順序圖和通信圖都描述交互,但是順序圖强調的是時間,通信圖强調的是空間

6、UML中,橢圓錶示用例,比特於系統邊界內部。

7、根據事務-基本錶交叉引用矩陣可以確定哪些事務對哪些錶列執行了何種操作,基於該矩陣可以幫助數據庫設計人員建立合適的索引。

8、 數據庫安全性保護的主要保護方式有用戶身份鑒別、權限控制、視圖機制

三、高級查詢

1、在SQLserver2008版本的查詢語法之中,我們的限制查詢top,應該放在*的前面。

2、使用FOR或者AFTER選項定義的觸發器為後觸發型觸發器,即只有在引發觸發器執行的語句中的操作都已成功執行,並且所有的約束檢查也成功完成後,才執行該觸發器。

3、使用INSTEAD OF選項定義的觸發器為前觸發型觸發器,在這種模式的觸發器中,指定執行觸發器而不是執行引發觸發器執行的SQL語句,從而替代觸發的操作。

4、創建分區函數的sql語句是:

CREATE PARTITION FUNCTION partition_function_name(input_parameter_type)
AS RANGE [LEFT|RIGHT]
FOR VALUES([boundary_value[,…n]])
[;]

采用了LEFT關鍵字,在指定分區間隔值是由數據庫引擎按昇序從左到右排列時,指定邊界值間隔處於左側分區;而關鍵字RIGHT是指定邊界值間隔在右側分區。

如果:分區的邊界值分別是100和200,那麼將被分為3個區間,分別是<=100、>=101 and <=200、>200。

四、數據庫後臺編程技術

1、使用FOR或者AFTER選項定義的觸發器為後觸發型觸發器,即只有在引發觸發器執行的語句中的操作都已成功執行,並且所有的約束檢查也成功完成後,才執行該觸發器。

2、使用INSTEAD OF選項定義的觸發器為前觸發型觸發器,在這種模式的觸發器中,指定執行觸發器而不是執行引發觸發器執行的SQL語句,從而替代觸發的操作。

3、 在對遊標數據進行提取的過程中,可以使用@@FETCH_STATUS全局變量判斷數據提取的狀態。由於@@FETCH_STATUS對於在一個連接上的所有遊標是全局性的,不管是對哪個遊標,只要執行一次FETCH語句,系統都會對@@FETCH_STATUS賦一次值,以錶明該FETCH語句的執行情况。

4、對於前觸發器,在一個錶上針對同一個數據操作只能定義一個前觸發器;對於後觸發器,可以在同一種操作上建立多個觸發器

5、

NEXT關鍵字的作用是返回緊跟在當前行之後的數據行,並且當前行遞增為結果行

PRIOR關鍵字返回緊臨當前行前面的數據行,並且當前行遞减為結果行。

ABSOLUTE n和RELATIVE n關鍵字用於指定特定行

FIRST關鍵字返回遊標中的第一行並將其作為當前行

LAST關鍵字返回遊標中的最後一行並將其作為當前行

6、執行有多個輸入參數的存儲過程時,參數的傳遞方式有兩種:
    ①按參數比特置傳遞值
    按參數比特置傳遞值指執行存儲過程的EXEC語句中的實參的排列順序必須與定義存儲過程時定義的參數的順序一致。
    ②按參數名傳遞值
    按參數名傳遞值指的是執行存儲過程的EXEC語句中要指明定義存儲過程時指定的參數的名字以及此參數的值,而不關心參數的定義順序。

7、數據庫創建後可以手工縮小數據文件和日志文件的空間

8、db_datawriter角色屬於數據庫級角色,具有插入、删除和更改數據庫中所有用戶數據的權限。

8、在T1錶上定義了一個由插入或删除操作引發的後觸發型觸發器   

CREATE TRIGGER tri_1
ON T1 FOR INSERT,DELETE
AS ……

五、數據庫及數據庫對象

1、model數據庫用作SQL Server實例上創建的所有數據庫的模板。對model數據庫進行的修改(如數據庫大小、排序規則、恢複模式和其他數據庫選項)將應用於以後創建的所有用戶數據庫,當用戶創建一個數據庫時,系統自動將model數據庫中的全部內容複制到新建數據庫中。

2、日志文件不包括在文件組內,日志文件和數據文件是分開管理的。

3、 tempdb是臨時數據庫,用於保存臨時對象或中間結果集,並為數據的排序等操作提供一個臨時工作空間。每次啟動SQL Server時都會重新創建tempdb數據庫。

4、唯一索引的作用是保證索引鍵值的不重複。在多列唯一索引的情况下,可以確保索引列中每個值的組合都是唯一的。唯一索引和非聚集索引之間沒有限定關系。

5、一個錶上只能有一個聚集索引,在錶上建立聚集索引會引起錶中數據的物理排序在一個錶上可以同時有聚集索引和非聚集索引。

6、唯一索引既可以是聚集的也可以是非聚集的

7、一個錶或視圖只允許同時有一個聚集索引。

六、安全管理

1、  guest是SQL Server中一個特殊的數據庫用戶。

2、GRANT UPDATE ON T1 TO U1語句的作用是用戶U1具有對錶T1各列數據進行修改的權利,在SQL Server中,擁有UPDATE權限的用戶並不意味著一定擁有SELECT權限。

3、Oracle的安全控制機制可分為數據庫級的安全控制、錶級、行級和列級的安全控制。數據庫級的安全性通過用戶身份認證和授予用戶相應系統權限來保證,而錶級、行級、列級的安全性是通過授予或回收對象特權保證的。Oracle數據庫中的用戶按其操作權限大小可分DBA用戶和普通用戶

4、REVOKE SELECT, INSERT ON T1 FROM U1   :要收回用戶U1對T1錶的查詢和插入權限

5、SQL Server 2008的身份驗證模式有"Windows身份驗證模式"和"混合身份驗證模式"兩種。混合身份驗證模式是指SQL Server允許Windows授權用戶和SQL授權用戶登錄到SQL Server數據庫服務器。

6、 數據庫級角色,db_datereader具有查詢數據庫中所有用戶數據的權限。

七、運行維護與優化

1、數據庫重組是指按照系統設計要求對數據庫存儲空間進行全面調整,如調整磁盤分區方法和存儲空間、重新安排數據的存儲、整理回收碎塊等,以提高數據庫性能

2、數據庫的重構是指由於數據庫應用環境的不斷變化,增加了新的應用或新的實體,取消了某些應用,有的實體與實體間的聯系也發生了變化等,使得原有的數據庫設計不能滿足新的需求,此時需要調整數據庫的模式和內模式。

3、數據庫的重組並不修改數據庫原有設計的邏輯結構和物理結構,而數據庫的重構則不同,它可以部分修改數據庫的模式和內模式。

4、增加數據庫內存數量可以在一定程度上降低數據庫服務器IO操作

5、 派生性冗餘列是指錶中增加的列由錶中的一些數據項經過計算生成。它的作用是在查詢時减少連接操作,避免使用聚合函數。由於增加了派生性冗餘字段,破壞了規範化規則。

6、 除了删除或創建索引,以及非聚簇索引和聚簇索引的相互轉換外,通過重建索引可以改進系統的性能

7、  水平分割是根據數據行的使用特點進行分割,分割之後所得的所有錶的結構都相同,而存儲的數據不同。

水平分割會給應用增加複雜度,特別在查詢所有數據時需要Union(並)操作;大部分情况是局部使用,只有很少情况才全局查詢時適合使用此方法。

垂直分割是根據列的特點進行分割,分割之後所得的所有錶中除了都含有主碼列外其餘列都不同,其查詢時會减少I/O次數,但其缺點是查詢所有數據時需要Join (連接)操作。

8、在數據庫設計階段,主要强調的是高效率利用存儲空間,减少數據的冗餘,减少數據的不一致,這個過程也就是規範化的過程。

規範化關系解决了數據維護的异常,並使冗餘最小化,然而,可能會出現數據處理性能下降的問題。

在大多數情况下,數據庫系統需要考慮的第二個目標是高效率的數據處理,反規範化處理,如增加派生冗餘列,增加冗餘列,重新組錶、分割錶和新增匯總錶可以有效地提高查詢效率。

9、 數據庫運行維護工作主要包括數據庫的轉儲和恢複;數據庫的安全性和完整性控制;數據庫性能的監控分析和改進;數據庫的重組和重構

10、數據庫設計過程中,提高數據庫安全性的同時不一定能提高數據庫性能。數據庫應用系統正式投入運行後,開發團隊還要參與此應用後期工作,如數據庫的優化需要開發團隊的配合。

數據庫維護的主要工作內容是日常維護、系統監控與分析、系統性能優化調整、系統進化(昇級)等工作。數據庫數據備份只是屬於數據庫日常維護的一小部分。

11、維護工作主要包括:數據庫的轉儲和恢複;數據庫的安全性和完整性控制;數據庫性能的監控分析和改進;數據庫的重組和重構

12、將數據文件和索引文件放置在同一磁盤上不利於提高查詢效率。將數據文件與日志文件放在不同的磁盤有利於查詢效率。

13、當數據庫錶更新大量數據後,删除並重建索引可以提高查詢速度。

14、SQL Server提供了一套綜合的工具,用於監視SQLServer中的事件和優化物理數據庫的設計。

15、集中式數據庫的查詢處理中,主要代價是CPU代價和I/O代價。在分布式數據庫系統中,由於數據分布在多個不同的場地上,需要在各站點中傳輸數據,所以通信代價尤為關鍵。

16、水平分割是對一張錶在水平方向分割,分割後得到的錶結構相同,查詢時需要使用UNION運算;

垂直分割則是對一張錶在垂直方向分隔,分割後每張錶中除主碼列外,其他列均不同,查詢時需要使用JOIN運算。

分割的目的是提高性能

八、故障管理、備份與恢複

1、在制定備份策略時,除考慮使用備份恢複時丟失的數據量外,還需考慮數據庫備份所需的時間。

2、檢查點技術大幅度减少了數據庫完全恢複時所必須執行的日志部分

3、靜態轉儲雖然保證了數據的有效性,但是卻是以降低數據庫的可用性為代價;動態轉出雖然提高了數據庫的可用性,但數據的有效性卻可能得不到保障。

4、差量轉儲和增量轉儲相比,速度慢,占用空間較多,但恢複速度比增量轉儲快。

5、創建備份設備的 T-SQL存儲過程為sp_addumpdevice

6、事務日志備份僅用於完整恢複模式和大容量日志恢複模式,它並不備份數據庫本身,只備份日志記錄,而且只備份從上次備份之後到當前備份時間發生變化的日志內容。

但是不允許對大容量操作日志備份進行時點恢複。結尾日志備份在出現故障時進行,用於防止丟失數據,可以包含純日志記錄或者大容量操作日志記錄

7、日志文件記錄每個事務對數據庫的修改操作,主要用來實現數據恢複。

8、大容量日志恢複模式只對大容量操作進行最小記錄,一般只作為完整恢複模式的附加模式。

9、在SQL Server 2008系統數據庫中,只有tempdb數據庫不需要備份,其他的都需要備份。

10、事務日志備份並不備份數據庫本身,它只備份日志記錄,而且只備份從上次備份之後到當前備份時間發生變化的日志內容。

11、簡單恢複模式不支持事務日志備份。

12、對於大型數據庫差异備份的間隔通常比完整數據庫備份的時間更短,這可降低數據丟失風險

13、比如對master數據庫的備份,通常在執行了創建、修改或删除數據庫的操作,或是更改了服務器或數據庫的配置、建立或更改登錄賬戶等操作後,都應對它進行備份。

14、簡單恢複模式可最大限度的减少事務日志的管理開銷,因為這種模式不備份事務日志。

15、事務日志備份僅用於完整恢複模式和大容量日志恢複模式,不備份數據庫本身,只備份日志記錄,而且只備份從上次備份之後到當前備份時間發生變化的日志內容。

1、聚集函數的並行化計算可以采取"先分後合"的方法。

2、比特置獨立性、數據分片獨立性和數據複制獨立性是使分布式數據庫具有分布式透明性的主要因素。

分布式數據庫最基本特征是本地自治、非集中式管理及高可用性。

3、SaaS,即Software as a Service,中文意思是軟件即服務。


每文一語

准備是機會的前提

版权声明:本文为[王小王-123]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080654594023.html