資料庫系統及應用知識梳理
什麼是信息?
對人們有用的、有意義的數據或內容稱之為信息
什麼是系統?
有一組成員組成,各個成員間相互系統、相互作用,每個成員又有獨立作用並完成一定功能,這一組成語你的集合稱之為系統
什麼是信息系統?
以方便管理和決策為目的,以DBMS平台為支撐,用於信息處理的系統
資料庫系統及應用思維導圖
資料庫系統
資料庫系統組成
所存儲的資料庫
相關數據的集成 DBMS
用於定義,構造和操作資料庫 應用
用某個程序語言開發的操作資料庫的程序 用戶
通過DBMS界面或通過應用程序來使用資料庫的人員
為什麼用資料庫系統?
資料庫提供了對數據和元數據的集中存儲,這樣
- 應用程序相對獨立與數據
- 為多用戶提供共享存取的機制
- 將應用開發的程序員從繁重乏味的數據管理中解放出來
- 提供了無須修改程序就能更改數據的機制
資料庫概念
什麼是資料庫?————相關資料或內容的集成
資料庫的設計與實現是信息系統開發最有意義、最基本的組成部分
資料庫管理系統(DBMS)概念
Database Management System
定義資料庫
對資料庫中的數據成員定義數據類型、結構和約束 構造資料庫
存儲數據到介質上 操作資料庫
查詢和更新資料庫
DBMS的各個功能
控制冗餘 限制未授權存取 提供多種用戶介面 表示複雜的聯繫 強制完整性約束 提供備份與恢復
關係模型
概念介紹
數據模型
數據模型是對數據的提煉,它排除了那些與用戶無關的、或者複雜的細節,它由有關的邏輯概念,如對象或實體的特徵和聯繫等組成
模式和實例
模式是指原數據,或者說是描述數據的數據,是在資料庫設計定義的,且不常更改 實例是指資料庫中相應於某個模式的具體數據,經常被更新
關係模型
關係是關係模型中表示數據的主要結構
* 每個關係是一張表。每個表不一定是關係* 域是一組原子值(原子值是不可再分的),每個域有一個數據類型或格式 表中的每個列都有其名字,對應於表中的某個列所起的名字稱之為該列的屬性,屬性個數稱之為度
同樣的屬性名不必是表示同樣的域,不同的屬性不一定表示不用的域 對應於二維表中每個屬性的一組取值稱之為元組
關係模式和實例
關係模式包括關係名字和屬性列表 關係實例是一個n-元組
次序特徵
元組的次序 元組內各個值的次序
元組內各個值的次序不影響關係的任何操作
關係資料庫的設計與約束
完整性約束是針對資料庫模式
完整性約束的種類
靜態和動態的約束 單關係和多關係的約束 結構和語義的約束
其中,結構的,靜態的,單個的關係
域約束
關係中的每個屬性都有一定的取值範圍,即屬於某個域上的取值 關鍵字約束
關係中的每一個 元組必須是可以區分的,也就是說關係中不允許存在兩個或兩個以上的元組其各個屬性的取值都相同,此為唯一性約束
關鍵字是最小的超鍵,能夠唯一區分元組的最小的屬性集合
一個模式可以由一個或多個關鍵字,每個關鍵字被稱之為候選鍵,其中被選中的那一個被稱之主鍵
實體完整性約束(主鍵的值不能為NULL)
結構的,靜態的,多個的關係
引用完整性約束
定義在兩個關係之間,外鍵約束
其他完整性約束
語義上的約束 變換的約束
關係資料庫模式與實例
模式:關係模式的集合完整性約束的集合 實例:關係實例的集合,滿足關係模式的完整性約束
設計一個關係資料庫
確定關係中的每一個屬性 為每個關係選擇合適的名字 為每個屬性定義數據類型和格式 找出每個關係的候選鍵,並選中其中之一為主鍵 定義所有的外鍵
實體-聯繫模型
概念設計階段,ER圖,用戶數據需求的描述
邏輯設計階段,概念模型(ER)被用以生成實現模型(Relational)
物理設計階段,資料庫設計的主題是存儲和執行
概念設計
實體
實體,現實世界中存在的客觀對象,一個實體可以用一組屬性來描述 實體集合,類似的實體的組成,一個實體集合中的所有實體都有同樣的屬性的集合 實體類型,定義具有同樣屬性的實體的集合,每一個實體類型是通過名字和屬性加以描述
屬性
鍵屬性,一個鍵屬性有一個帶有下劃線的名字 屬性的值集,值集對應於關係的域 空值屬性
屬性類型
- 複合,簡單屬性
- 單值,多值屬性
- 導出,存儲屬性
屬性表示方式
圓括弧表示複合屬性,花括弧{}表示多值屬性
聯繫
聯繫類型和聯繫集合 聯繫的度,一個聯繫的度是參與該聯繫的實體類型的數目 角色和遞歸聯繫 聯繫約束
聯繫約束是又描述這些聯繫的應用目標所決定,聯繫類型的約束限制了那些參與相應聯繫集合的實體的可能的組合。
結構約束,包括基數約束和參與約束
聯繫類型的屬性
沒有自己的關鍵字屬性的實體類型稱為「弱實體」。通常有一個」部分鍵「,它是一個唯一的標識同一個所有者實體之弱實體的屬性集合。
並非所有的存在依賴導致弱實體的產生
實體類型進一步被分為超類和子類,子類實體類型從超類實體類型繼承
子類是超類的特殊化,超類是子類的普遍化
ER到關係模型變換
變換步驟
實體變換
生成一個關係R,把E的所有簡單屬性作為R的屬性,選擇一個E的關鍵字屬性作為主鍵(若E的關鍵字是複合屬性, 則它的簡單屬性集為R主鍵)
弱實體變換
對每一個弱實體類型W,生成一個關係R,把W的所有簡單屬性作為R的屬性,選擇一個W的所有者實體的關鍵字屬性和W本身的部分鍵屬性一起作為R的主鍵
二度1:1聯繫
對於每一個二度1:1 聯繫類型RT,參與該聯繫的兩端的實體類型分別為S和T,則其變換步驟如下:
選定S與T中完全參與該聯繫的那一端的實體類型,若都完全參與或都部分參與,則任選其中之一的實體類型,假定選為S 將實體類型T的關鍵字屬性做為外鍵加到S所變換的關係模型中 將RT的所有簡單屬性加到S所變換的關係模型中
二度1:N聯繫
對於每一個二度1:N 聯繫類型RT,參與該聯繫的兩端的實體類型分別為S和T,則其變換步驟如下:
選定S與T參與該聯繫為N的那一端的實體類型,假定選為S 將實體類型T的關鍵字屬性做為外鍵加到S所變換的關係模型中 將RT的所有簡單屬性加到S所變換的關係模型中
二度M:N聯繫
生成一個關係R,吧RT中的所有簡單屬性作為R的屬性加到R中,吧參與RT的兩個實體類型的關鍵字屬性一起作為R的主鍵。
多值屬性
生成一個關係R,把屬於多值屬性的所有簡單屬性作為R的屬性,把E的關鍵字屬性和該多值屬性的所有簡單屬性一起作為R的主鍵
N-度聯繫類型
生成一個關係R,把RT中的所有簡單屬性作為R的屬性加到R中,把參與RT的所有實體類型的關鍵字屬性一起作為R的主鍵
如果參與N-度聯繫的某個實體類型E其參與約束(min,max)有max=1,則E的關鍵字屬性僅做為N-度聯繫變換后所得到的關係R的外鍵存在, 而不做為主鍵的一部分
ER的表示
幾種類型的約束可以在ER圖中表示出來,如鍵約束,參與約束 一些外鍵約束也可以隱含在聯繫定義中 一些約束如函數依賴不能再ER模型中表示出來 一些另外的結構沒有討論:如ISA層和聚合
函數依賴與形式化
非形式化設計指南
屬性的含義要明確,構成關係的屬性包含著實際的含義 減少元組中冗餘的值 減少元組中的空值 不允許有虛假的元組
異常 插入異常————插入新的元組將出現問題 刪除異常————刪除元組將可能導致信息丟失的問題 修改異常————修改屬性值將可能導致數據不一致問題
函數依賴
一個函數依賴是關係模式R上兩個屬性集之間的一個約束,記為X←Y
函數依賴規定了作為R中所有可能元組的限制
X←Y成立當且僅當無論何時,兩個元組只要X值想用,必有Y值相同
函數依賴的主要功能就是進一步規定關係中的各屬性組之間所訊在的約束
推導公式
為了從已有的函數依賴集推導新的函數依賴集,我們需要一個推導規則體系
IR1:自反規則。屬性集總是決定自身和其子集 IR2:增元規則,增加同樣的屬性集到函數依賴的左邊和右邊將得到新的FD IR3:傳遞規則。 IR4:分解規則。我們可以除去函數依賴的右手邊的屬性,以分解函數依賴 IR5:並規則。我們可以合併同一屬性集所決定的函數依賴關係的右手邊,形成單個函數依賴 IR6:偽傳遞規則。X←Y,WY←Z|=WX←Z
形式化
形式化是利用已知的語義信息獲得好的關係
形式化過程就是讓關係模式經過一系列測試區確定其是否滿足一定條件
滿足一定條件的我們稱之屬於或符合範式 不滿足條件的就通過分解的方法得到新的滿足條件的關係
超鍵:一個可以區分關係中任何元組的屬性集
鍵:最小的超鍵,如果關係中有多於一個鍵,則稱之為候選鍵
主屬性:屬於任何候選鍵的屬性
非主屬性:不屬於任何候選鍵的屬性
第一範式 1NF
一個關係模式是屬於1NF當且僅當該關係屬性的域是原子且屬性的值是單值
一般化定義:一個關係模式屬於 2NF,如果它屬於 1NF, 並且每個非主屬性都完全依賴於R中的每一個鍵
第二範式 2NF
一個關係模式屬於2NF,如果它屬於1NF,並且每個非主屬性都完全依賴於主鍵
2NF 關係可以通過分解而產生, 而非主屬性完全依賴於分解后它所在的那個關係的主鍵
第三範式 3NF
關係模式是在3NF必須滿足它是在2NF,且沒有非主屬性傳遞依賴主鍵
(一個 FD X←Y 被稱做 「傳遞的」 ,如果存在非任何關鍵字子集的屬性組Z 使得 X←Z 和 X←Y 成立)
一般化定義:一個關係模式R屬於3NF,如果對R中成立每一個函數依賴X←A,有』X是R的超鍵『或者』A是R的主屬性『
(這個定義可以直接用以測試 3NF而不必先測試其是否為2NF)
BCNF
一個關係模式R屬於BCNF,如果對R中成立的每一個函數依賴:X←A,X是R的超鍵
形式化的限制
孤立 執行
分解特性
形式化還必須一起考慮關係模式擁有的其他特性:
依賴保留特性
非形式地, F中的每個FD 要麼直接出現在分解后的某個關係中,要麼可以從這些關係的函數依賴中推導出
不丟失信息的連接特性,意思是不增加虛假元組
一個分解如果是丟失信息的話,在對分解關係進行連接之後,就可能產生虛假元組
關係代數
關係查詢:
插入 刪除 修改 檢索
關係查詢語言中的關係查詢被列式化:
關係代數(RA) SQL 表格化查詢(QBE)
關係代數操作
SELECT
PROJECT
關係賦值與命名
UNION
並的可兼容性
INTERSECTION
操作特點
DIFFERENCE
R1-R2:生成一個關係,該關係包含在R1出現但不在R2中出現的所有元組(R1與R2必須是並可兼容) CARTESIAN PRODUCT
JOIN:Θ連接、相等連接、自然連接
Θ連接:筆記
相等連接:連接條件只有相等比較符
自然連接:類似於相等連接,但用於連接的相等連接條件的兩端的屬性名相同,相等連接不將重複屬性去掉,而自然連接去掉重複屬性
DIVISION
R1/R2的結果所得關係包含R1的列,且排除在R2出現的列,(必須滿足除法可兼容性)
SQL
數據定義語言(DDL) 數據操縱語言(DML) 數據控制語言
DDL語句
表定義
CREATE TABLE
DROP TABLE ALTER TABLE
DML語句
SELECT INSERT
DELETE UPDATE
結構化查詢語言(SQL)
選取(WHERE子句)
投影(SELECT子句)
排序(ORDER子句)
聚集函數
SUMDISTINCT AVGDISTINCT COUNTDISTINCT COUNT(*) MAX MIN
成組
連接操作
SQL的嵌入式查詢
嵌套查詢的概念:一個查詢語句嵌有另一個查詢語句的情形 關聯的和非關聯的類型
非關聯的嵌套式查詢:從內查詢中返回給外查詢一個結果,外查詢將根據內查詢的結果而動作
關聯的嵌套式查詢:關聯的子查詢在其WHERE子句的條件中引用了外查詢所陳述的關係的一些屬性,子查詢對每一個外部關係元組之被引用的屬性進行一次比較和判斷。
連接與子查詢
使用子查詢,只能顯示外查詢關係中的數據,能夠計算出聚合函數的值返回給外層去比較
連接可以顯示EROM子句中列出的、所有的表中數據(當你需要列出多表的屬性列時,用連接) 使用IN查詢
使用EXISTS函數
子查詢的構造規則
緊隨比較操作符(和 ANY/ALL) 或 IN之後的子查詢的選取屬性序列 只能包含一個表達式或一個列名. 外層語句的WHERE子句中的表達式或屬性要與子查詢所選取的屬性序列可比較 緊隨EXISTS的子查詢的選取序列幾乎總是星號(*) 子查詢, 其結果不用 ANY/ALL來比較, 通常不包含 GROUP BY(和HAVING)子句除非你能預先確定成組操作將返回一個單值 子查詢不能包含ORDER BY 子句. 選項 DISTINCT 關鍵字可以有效地排序子查詢的結果, 而大多數的系統 通過首先排序查詢結果刪除了重複的值
DBMS結構
數據模型種類
低層/物理,描述數據是都怎樣在存儲設備上表示和組織的 邏輯/實現,提供用戶既能理解,又能反映數據結構和特徵的概念 高層/概念,提供的概念更接近農戶對數據的理解
資料庫方法的特點:
隔離程序與數據 支持數據的多種視圖 使用目錄去存儲關係模式
邏輯數據獨立
不需要用物理指針去存取數據,列由列名所確定而性由主鍵所確定
行或列的次序可能改變,而一個查詢總是提供一樣的結果
許多情況下,列可以被增加和刪除而不影響已存在的表
邏輯數據獨立性導致視圖的使用 一個視圖是從別的表中導出的虛表 視圖被定義為查詢。視圖定義存儲在數據目錄中,和基表定義在一起
一個視圖是從別的表或視圖中導出的單標,視圖可以是
虛表————它不需要在磁碟有真正的物理存儲 實表————在物理上創建視圖表。這將要跟隨基表的更新而更新
數據的邏輯獨立性是指當資料庫重構造時,如增加新的關係或對原有的關係增加新的欄位,用戶的應用程序不會受影響。
物理數據獨立
索引
索引是一個與表及其結構有關的數據結構的選項,加快檢索記錄的速度,適當使用的話稱為減少磁碟I/O的主要手段
索引可以隨時創建和刪除,但不影響基表和其他索引
唯一索引就是制定列所做的索引表中沒有兩行值是重複的
簇
簇是存儲表數據的可選擇的方法,一個簇就是一組表共享磁碟上同樣的數據塊,因為它們有相同的列並且經常連接使用
DBMS語言
DDL語言
事務控制、授權和優先權管理、語義完整性約束如觸發器和斷言
斷言
觸發器,定義一個陳述性的條件以及過程性的動作,兩者結合去實現觸發器的約束,當觸發器條件為真是,過程性的動作將自動執行
DML語言
嵌入式SQL是基於游標的概念
通常,應用程序使用變數存儲數據都是一個一個地存取,一個游標是一個指向查詢結果的當前記錄的指針,一開始指向查詢結果的第一個記錄,這樣可以逐個得到返回記錄的所有數據
DBMS環境
DBMS是一個由幾個成員模塊組成的複雜軟體
DBMS的分類
歷史的角度
文件系統 層次資料庫系統 網狀資料庫系統 關係資料庫系統 現代商務資料庫系統
數據模型的角度
從結構的角度