資料庫概述
一、資料庫基本概念
1.資料庫系統
資料庫(DB)通常包含企業資訊的集合,(存在于硬碟上)
區分DB:業務是否相關
資料庫管理系統(DBMS):存盤和檢索資料(要求方便和高效)(MySQL)
資料庫系統(DBS):引入資料庫后整個系統(包含DB、DBMS)
DBS 包括 資料庫本身的軟體(資料庫管理系統DBMS、作業系統OS、應用系統)、硬體、資料庫管理員
2.計算機硬體
!
OS指作業系統的檔案系統
3.使用資料庫系統的目的
1.使用檔案系統的缺點
? a. 資料的冗余和不一致(語言不同導致無法編譯)
? b.資料訪問困難(難以從資料中篩選有用的)
? c.資料孤立(格式不同)
? d.完整性問題(難以添加約束)
? e.原子性問題(難以在更改程序中進行復原)
? f.多個用戶的并發訪存(多個用戶同時 更改資料)
? g.安全性問題
4.資料視圖
資料庫系統為用戶提供資料的抽象視圖,隱藏了資料存盤和維護的某些細節
屏蔽復雜性的三個層次:
1.物理層
? 描述資料是怎么被存盤的
2.邏輯層
? 描述資料庫中資料是怎么存盤的和資料之間的關系
? 是描述整個資料庫是怎么存盤資料的
3.視圖層
? 描述一部分資料庫中的資料
!
Secondary Memory:二級存盤器(硬碟)
5.模式schema和實體Instance
資料庫的模式:資料庫的總體設計
模式分為三種模式:物理模式(內模式)(1個)、邏輯模式(1個)、子模式(外模式)(里面可以有多個視圖),分別對應三種層次
物理資料獨立性:程式員通過邏輯模式來構造應用程式,應用程式不依賴于物理模式,即使物理模式改變,通過改變物理模式和邏輯模式之間的映射來保證邏輯模式不變
邏輯資料獨立性:即使邏輯模式改變,也可以保證子模式不變
資料庫的實體:特定時刻儲存在資料庫中資訊的集合
二、資料模型
用什么樣的結構組織資料
1.關系模型(Relational Model)
關系資料庫基于關系資料模型,使用表來表示資料和資料間的聯系,
表就是行的集合,也就是記錄的集合,每個記錄有多個分量,分量就叫做屬性,每一列就對應屬性,
每一個表就是一個關系,基于關系構建的就是關系資料模型,
2.物體聯系模型Entity-relationship data model(E-R模型)
資料庫設計使用的模型,基于現實世界認識構成,
物體Entity:現實世界中可區別于其他物件的事情或物體,如人、夢、賬戶,
物體的特征稱為屬性Attribute,如人所在街道,
聯系Relationship:物體之間的聯系
物體集Entity Set:具有相同屬性所有物體的集合,如某所大學的所有教師,
聯系集Relationship set:相同種類所有聯系的集合
圖形化表示:
!
矩形:物體集 橢圓:屬性 菱形:物體間的聯系
3.基于物件的資料模型Object-based data model
面向物件的資料模型(E-R模型擴展)
4.半結構化資料模型Semistructured data model
XML
5.其他模型
網狀資料模型Network data model、層次資料模型Hierarchical data model
三、資料庫語言
語言分類:程序性語言procedural(指出需要的資料和怎么得到資料)C、java、非程序性語言(宣告性語言)declarative(指出需要什么資料)SQL語言
1.SQL語言(基于關系模型構建的語言):結構化查詢語言,純pure資料庫語言
!
在customer表中查詢id為,,的名字
a.資料庫定義語言DDL:資料庫從無到有或從有到無,建立資料庫、表
!
把表的定義存盤于資料字典里,資料字典以表的形式存在,包含的資料稱為元資料metadata,
元資料:關于資料的資料,包含資料庫的模式database schema、完整性約束Integrity constraints、權限資料Authorization,
b.資料操縱語言DML(查詢語言):資料庫查詢更新,可以使用現有的資料庫
訪問或者操縱按照某種適當資料模型組織起來的資料,
操作型別:檢索資料庫中的資訊、插入新的資訊、洗掉、修改資訊,(增刪改查)(大部分是查詢操作,)
四、資料庫程式語言
將SQL與其他高級語言配合時其他語言叫陣列語言,
1.在應用程式中訪問資料庫方法:
1.擴展陣列語言,嵌入SQL陳述句(特殊字符作為SQL開始),整個程式通過SQL預編譯器轉變為陣列語言程序呼叫,然后陣列語言再解釋執行.
2.提供應用程式介面,如ODBC(微軟),JDBC(Java),
2.關系Relational資料庫
基于關系模型構建,
資料和資料之間的聯系通過表的集合來表示,
關系資料庫包含DML和DDL(一般就是SQL語言),
五、資料庫設計(最重要邏輯設計、物理設計)
1.邏輯設計Logical design
找到最優表的模式的集合,(業務層面:需要記錄哪些屬性,計算機科學方面:使用什么模式、屬性如何分布在模式里)
2.物理設計
決定資料庫物理布局,包括檔案組織形式、內部的存盤結構等,
六、資料庫用戶
1.資料庫普通用戶
分為應用程式員Application programmers(通過資料操作語言呼叫)、老練用戶Sophisticated users(用資料庫查詢語言研究資料)、專門用戶Specialized users(撰寫資料庫應用)、無經驗用戶Naive users(使用寫好的應用程式)
2.資料庫管理員DBA
職責:
1.模式定義(資料庫初始表的定義)
2.存盤結構和存取方法定義
3.資料訪問授權
4.定義完整性約束(條件合不合理)
5.與用戶聯絡
6.監控性能并根據需求進行變更
七、資料庫管理系統DBMS的功能
1.存盤管理
資料庫存盤于硬碟,使用作業系統、檔案系統,
存盤管理器storage manager提供資料庫的資料和應用程式之間的介面,將各種DML查詢操作翻譯為底層的檔案系統命令,
1.存盤管理器包括:
a.權限級完整性管理器manager
資料是否滿足完整性約束和檢查用戶的權限,
b.事務Transaction管理器
保證及時系統故障,資料庫也可以保證正確
保證并發的事務執行不發生沖突
資料庫應用中完成單一邏輯功能的操作集合,確保資料庫處于一致性狀態,
事務管理器確保意外情況資料庫正常,
并發控制管理器就是控制事件并發情況,
c.檔案管理器
分配磁盤存盤空間
管理磁盤存盤資訊的資料結構
d.緩沖區管理器
將資料從磁盤取到記憶體中
決定哪些資料應該被快取到磁盤中
2.存盤管理器部件應該實作的資料結構:
a.資料檔案data file
存盤資料庫的資料
b.資料字典data dictionary
存盤資料庫的元資料和資料庫的模式
data about data
c.索引indices
提供資料庫的快速訪問
對一列資料進行排序,排序的那個屬性后面還有一個指標,指向原資料位置,
2.查詢Query處理(可以在視圖層次作業)
實作:資料抽象、非程序性語言(SQL)
查詢處理器Query processor將SQL的陳述句翻譯成物理層的操作序列
1.組成:
1.DDL解釋器interpreter
解釋DDL陳述句,并將定義記錄在字典中
2.DML編譯器compiler and organizer
將查詢語言的DML陳述句翻譯成執行方案(低級指令),查詢的優化
3.查詢執行引擎Query evaluation engine
執行DML陳述句生成的執行計劃
2.執行給定查詢的其他方法(替代查詢):
1.計算等價的運算式
2.采用不同的演算法
評估中間統計結果的資訊來計算運算式的代價,來找到最小的代價
計算代價取決于資料庫必須維護的統計資訊,通過統計資訊statistical data(相當于人類的經驗)來計算代價
3.查詢處理步驟
1.將查詢陳述句決議并翻譯parsing and translation成查詢處理器可以理解的關系代數運算式
2.系統對查詢進行優化,結合統計資訊盡可能選出最小查詢執行代價的查詢執行計劃 optimization
3.查詢執行引擎查詢并執行evaluation
!
3.整體功能介紹
通過代碼想資料發出查詢請求:code -> engine
DML編譯器: 資料字典查詢權限資訊,統計資訊進行優化
檔案管理和緩沖管理:訪問資料和索引(也相當于一種資料)
!
4.系統的體系結構Architecture
取決于資料庫運行的計算機系統,
1.集中式的Centralized
2.客戶-服務器式的Client-server
3.并行Parallel
針對并行的計算體系設計的
4.分布式Distributed
地理上分離的多臺計算機的
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/272554.html
標籤:其他
上一篇:Redis常見面試題
下一篇:mysql知識點整理
