《SQL Server 從入門到精通》 第1章 資料庫基礎 1.2 資料庫的體繫結構 1.2.1 資料庫三級模式結構 1. 模式 模式也稱邏輯模式或概念模式,它是資料庫中 ,是所有用戶的公共數據視圖。一個資料庫只有一個模式,模式處於三級結構的中間層。 2. 外模式 外模式也稱用戶模式,它是 ,`是數 ...
《SQL Server 從入門到精通》
第1章 資料庫基礎
1.2 資料庫的體繫結構
1.2.1 資料庫三級模式結構
- 模式
模式也稱邏輯模式或概念模式,它是資料庫中全體數據的邏輯結構和特征的描述
,是所有用戶的公共數據視圖。一個資料庫只有一個模式,模式處於三級結構的中間層。
定義模式時不僅要定義數據的邏輯結構,而且要定義數據之間的聯繫,定義與數據有關的安全性完整性要求
- 外模式
外模式也稱用戶模式,它是資料庫用戶(包括應用程式員和最終用戶)能夠看見和使用的局部數據的邏輯結構和特征的描述
,是資料庫用戶的數據視圖
,是與某一應用有關的數據的邏輯表示
。外模式是模式的子集。一個資料庫可以有多個外模式。
外模式是保證數據安全性的一個有力措施。
內模式
內模式也稱存儲模式,一個資料庫只有一個內模式。它是數據物理結構和存儲方式的描述,是數據在資料庫內部的表示方式
。1.2.2 三級模式之間的映射
為了能夠在內部實現資料庫的3個抽象層次的聯繫和轉換,資料庫管理系統在三級模式之間提供了兩層映射。
- 外模式/模式映射
對應於同一個模式可以有任意多個外模式。對於每一個外模式,資料庫系統都有一個外模式/模式映射。當模式改變時,由資料庫管理員對各個外模式/模式映射作相應的改變,可以使外模式保持不變。依據數據外模式編寫的應用程式就不用修改,保證數據與程式的邏輯獨立性
。 模式/內模式映射
模式/內模式映射唯一,定義了資料庫的全局邏輯結構與存儲結構之間對應關係。當資料庫的存儲結構改變時,由資料庫管理員對模式/內模式映射作相應改變,可以使模式保持不變,應用程式相應地也不做變動。保證數據與程式的物理獨立性
。1.3 數據模型
數據模型是一種對客觀事物抽象化的表現形式。它對客觀事物加以抽象,通過電腦來處理現實世界中的具體事物。它客觀地反映了現實世界,易於理解,與人們對外部事物描述的認識相一致。
1.3.1 數據模型的概念
數據模型由數據結構、數據操作、完整性約束組成。
數據結構
:是對系統靜態特征的描述。描述對象包括數據的類型、內容、行政和數據之間的相互關係。
數據操作
:是對系統動態特征的描述,是對資料庫中各種對象實例的操作。
完整性約束
:是完整性規則的集合。他定義了給定數據模型中數據及其聯繫所具有的制約和依存規則。1.3.2 常見的數據模型
層次模型
:用樹形結構表示實體類型及實體間聯繫的數據模型成為層次模型。
- 每棵樹有且僅有一個無雙親節點,稱為根。
- 樹中除根外所有節點有且僅有一個雙親。
網狀模型
:用有向圖結構表示實體類型及實體間聯繫的數據模型成為網狀模型。用網狀模型編寫應用程式及其複雜,數據的獨立性較差。關係模型
:以二維表來描述數據。在關係模型中,每個表有多個欄位列和記錄行,每個欄位列有固定的屬性(數字、字元、日期等)。關係模型數據結構簡單、清晰、具有很高的數據獨立性,因此是目前主流的資料庫數據模型。
關係
:二維表元組
:二維表一行,表中的記錄屬性
:二維表一列,用類型和值表示域
:每個屬性取值的變化範圍,如性別的域為{男,女}
關係模型中的數據約束:
實體完整性約束
:約束關係的主鍵屬性值不能為空參照完整性約束
:關係之間的基本約束用戶定義的完整性約束
:反應具體應用中數據的語義要求1.3.3 關係資料庫的規範化
第一範式(1NF)、2NF、3NF、鮑依斯-科得範式(BCNF)、4NF、5NF。其中,NF是Normal Form的縮寫。一般情況下,只要把數據規範到第三範式標準即可滿足需要。1NF
:在一個關係中,消除重覆欄位,且各欄位都是最小的邏輯存儲單位。2NF
:1NF基礎上,消去非主屬性對鍵的部分函數依賴3NF
:2NF基礎上,消去非主屬性對鍵的傳遞函數依賴BCNF
:3NF基礎上,消去主屬性對鍵的傳遞函數依賴4NF
:BCNF基礎上,消去表中的多值依賴
詳細說明1.3.4 關係資料庫的設計原則
- 資料庫內文件的數據組織應獲得最大限度的共用、最小的冗餘度,消除數據及數據依賴關係中的冗餘部分,使依賴於同一個數據模型的數據達到有效的分離。
- 保證輸入、修改數據時數據的一致性與正確性。
保證數據與使用數據的應用程式之間獲得高度獨立性。
1.3.5 實體與關係
實體是指客觀存在並可相互區別的事物,也可以是抽象的概念或關係。實體之間有三種關係。
- 一對一關係:表A中的一條記錄確實在表B中有且只有一條相匹配的記錄。在一對一關係中,大部分相關信息都在一個表中。
學生與學生的身份證號
- 一對多關係:表A中的行可以在表B中有許多匹配行,但是表B中的行只能在表A中有一個匹配行。
一個學生只屬於一個班,一個班有多名學生
多對多關係:關係中的每個表的行在相關表中具有多個匹配行。在資料庫中,多對多關係的建立是依靠第3個表(稱作連接表)實現的,連接表包含相關的兩個表的主鍵列,然後從兩個相關表的主鍵列分別創建與連接表中的匹配列的關係。
一個學生可以選擇多門課,一門課也有多名學生
1.4 常見關係資料庫
Oracle在並行處理、實時性、數據處理速度方面都有較好的性能。
第4章 創建與管理資料庫
4.1 認識資料庫
4.1.1 資料庫基本概念
關係資料庫
關係資料庫是支持關係模型的資料庫。關係模型由關係數據結構、關係操作集合和完整性約束3部分組成。
關係數據結構
:在啊關係模型中數據結構單一,現實世界的實體以及實體間的聯繫均用關係來表示,實際上關係模型中數據結構就是一張二維表關係操作集合
:關係操作分為關係代數、關係演算、具有關係代數和關係演算雙重特點的語言(SQL語言)完整性約束
4.1.2 資料庫常用對象
表
:表是包含資料庫中所有數據的資料庫對象,由行和列組成,用於組織和存儲數據。欄位
:表中每列成為一個欄位,欄位具有自己的屬性,如欄位類型、欄位大小等。其中,欄位類型是欄位最重要的屬性,它決定了欄位能夠存儲哪種數據。索引
:索引是一個單獨的、無力的資料庫結構。它是依賴於表建立的,在資料庫中索引是資料庫程式無需對整個表進行掃描,就可以在其中找到所需的數據。視圖
:視圖是從一張或多張表中導出的表(也稱虛擬表),是用戶查看數據表中數據的一種方式。表中包括幾個被定義的數據列與數據行,其結構和數據建立在對錶的查詢基礎上。存儲過程
:存儲過程是一組為了完成特定功能的SQL語句集合(包含查詢、插入、刪除和更新等操作),經編以後以名稱的形式儲存在SQL Server伺服器端的資料庫中,由用戶通過制定存儲過程更的名字來執行。當這個存儲過程被調用執行時,這些操作也會被同時執行。4.2 SQL Server的命名規範
4.2.1 標識符
- 標識符格式
- 標識符的首字元必須是Unicode所定義字元,'_' '@' '#'。
'@'開始的標識符表示局部變數或參數
'#'開始的標識符表示臨時表或過程
'##'開始的標識符表示全局臨時對象 - 標識符後的後續字元
Unicode 2.0 標準中所定義的字母。
來自拉丁字母或其他國家/地區腳本的十進位數字。
'@' '$' '#' '_' - 標識符不允許是Transact-SQL的保留字
微軟官方文檔 - 不允許嵌入空格或其他特殊字元
- 標識符分類
- 常規標識符:符合標識符的格式規則
分隔標識符:包含在
“”
或[]
內的標識符。該標識符可以不符合標識符的格式規則。4.2.2 對象命名規則
在一個資料庫中創建了一個資料庫對象後,資料庫對象的完整名稱應該由
伺服器名、資料庫名、擁有者名和對象名
4部分組成
[[[server.][database].][owner_name].]object_name
伺服器、資料庫和所有者的名稱即所謂的對象名稱限定符。當引用一個對象時,不需要指定伺服器、資料庫和所有者,可以利用句號標出他們的位置,從而省略限定符。
指定了所有4哥部分的對象名稱被稱為完全合法名稱。4.3.3 使用管理器刪除資料庫
刪除資料庫時必須滿足以下條件
- 如果資料庫設計日誌傳輸操作,在刪除資料庫之前必須取消日誌傳送操作
- 若要刪除為事務複製發佈的資料庫,或刪除為合併複製發佈或訂閱的資料庫,必須首先從資料庫中刪除複製。如果資料庫已損壞,不能刪除複製,可以先將資料庫設置為離線狀態,然後再刪除資料庫。
如果資料庫中存在資料庫快照,必須首先刪除資料庫快照。
系統資料庫(msdb、model、master、tempdb)無法刪除,刪除資料庫後應立即備份master資料庫,因為刪除資料庫將更新master資料庫中的信息。
第5章 操作數據表與視圖
5.1 數據表基礎知識
5.1.1 基本數據類型