數據庫系統原理

數據庫系統原理

概念

  • 數據:
    描繪事物的符號。
  • 數據庫:
    長期儲存在計算機內,有組織,可共享的大量數據的集合。
  • 數據庫管理系統:
    位於用戶與操做系統之間的一層數據管理軟件。
  • 數據庫系統(DBS)

    是有數據庫、數據庫管理系統、應用程序、數據庫管理員組成的儲存,管理,處理,維護數據的系統。數據庫

  • 數據庫系統的特色:安全

    • 數據結構化
    • 數據的共享性高
    • 冗餘度低且易擴充
    • 獨立性、數據有數據庫管理系通通一管理控制
  • 物理獨立性:數據結構

    指用戶的應用程序和數據庫中的數據的物理存儲是相互獨立的閉包

  • 邏輯獨立性:併發

    指用戶的應用程序對數據庫的邏輯結構是獨立的。數據庫設計

  • 數據庫管理系統(DBMS)

    提供 數據的安全性保護、完整性檢查、併發控制、數據庫恢復函數

  • 實體:
    客觀存在並能夠相互區別的事件
  • 實體型:
    用實體名及其屬性名集合來抽象和刻畫同類實體
  • 實體集
    同一類型實體的集合成爲實體集學習

  • 關係模型:

  • 由關係數據結構、關係操做集合和關係完整性約束三部分組成。
  • 數據庫系統採用關係模型做爲數據的組織方式。優化

關係:一個關係對應一般說就是一張表

關係模式:關係名(table_name)(屬性1,屬性2,屬性3。。。。)

屬性:表中的一列即爲一個屬性

域:屬性的取值範圍;

元組:表中的一行即爲一個元組;

主碼:表中的某個屬性組,它能夠唯一肯定一個元組;

份量:元組中的一個屬性值;

  • 關係完整性

  • 實體完整性

    屬性A是基本關係R的主屬性,則A不能取空值。

  • 參照完整性

    若F是R的外碼,它與關係S的主碼相對應,則對於R中的每一個元組在F上的值必須爲:空值,或者S中某個元組的主碼值。

  • 用戶定義的完整性

關係數據庫

關係

  • 域:
    是一組具備相同數據類型的集合
  • 笛卡爾積:
    是域上的一種集合運算
  • 元組:
    笛卡爾積的每個元素
    ***
  • 全碼:
    全部屬性都是候選碼,稱爲全碼
  • 候選碼:
    能惟一標識一個元組的某一個屬性組,學生(姓名, 學號, 成績) 則姓名和學號都是候選碼
  • 主屬性:
    候選碼的各屬性
  • 主碼:
    候選碼中選定一個做爲主碼

鏈接

  • 等值鏈接

    從兩個關係的廣義笛卡爾積中選取A,B屬性值相等的那些元組出來。

  • 天然鏈接

    兩個關係中比較的份量必須是相同的屬性值,就是把 R 和 S中相同的部分保留下來,並要在結果總把重複的一列去掉。

  • 外鏈接

    把在天然鏈接中捨棄了的元組也保存到結果關係中,而其餘的屬性值填NULL

  • 左/右外鏈接:

    把天然鏈接中 左/右關係 R / S 捨棄的元組保留下來

關係代數

  • 選擇
  • 投影 where
  • 鏈接
  • R / S = T, T包含在R,但不在S中的元組,且 T 元組與 S 元組的組合都在 R 中。

SQL

級聯、限制

把限制詞放在語句的後面
cascade (級聯) 表示在刪除模式的同時,把模式下定義的對象也一併刪除
restrict (限制) 表示只有當沒有下屬對象時才能夠執行刪除語句,不然拒絕

數據類型

模式

  • 數據庫系統的三級模式結構由外模式、模式和內模式組成。
  • 模式的基本對象有:表、視圖、索引

    也稱邏輯模式,是數據庫中去啊你數據的邏輯飢餓哦股和特徵的描述,是全部用戶的公共數據視圖。

  • 外模式:模式與外模式映射保證邏輯獨立性

    它是數據用戶能看到和使用的局部數據和邏輯結構和特徵的描述,是數據庫用戶的數據視圖,是與某一應用有關的數據的邏輯關係。

  • 內模式:模式與內模式映射保證物理獨立性

    一個數據庫只有一個內模式,是數據物理結構和存儲方式的描述,是數據在數據庫的組織方式。

create schema <模式名> authorization <用戶名>;

索引

unique () 每個索引值只對應惟一的數據記錄
cluster ()
create unique index Stusname on Student(Sname);

查詢

LOWER(Sdept)

大寫變小寫

select sname,2004-sage from Student;

select sname,'Year of Birh:',2004 - sage,LOWER(Sdept) from Student;
  • 經過制定別名來改變查詢結果的列標題。
select sname NAME,'Year of Birh:'BIRTH,2004 - sage BIRTHDAY,LOWER(Sdept) DEPARTMENT from Student;
  • 消除取值重複的行
select distinct sno from SC;
  • 肯定範圍between and
select sname,sdept,sage from student where sage (not) between 20 and 23;
  • 肯定範圍in
select sname,ssex from student where sdept in('cs','ma','is');
  • 字符匹配like
  • 通配符:

% 表明任意長度
_ 表明單個字符 一個漢字兩個字符
/ 是轉義字符

select * from student where sname like '劉%';
  • 空值查詢IS NULL
select sno,cno from sc where grade is (not) null;

ORDER BY

對查詢結果進行升序、降序排列
升序: asc
降序:desc

select sno,grade from sc where cno = '3' order by grade desc;

GROUP BY

將查詢結果分組
````
select cno,count(sno) as 數量 from sc group by cno;

select 圖書分類,count(圖書編號) as 圖書數量 from 圖書採購表 group by 圖書分類') ;

###having
對分組結果進行篩選

/查詢修了2門以上課程的學生/
select sno from sc group by sno having count(*)>2;

##鏈接查詢

① 查詢編號爲300的客戶經過的代理商的姓名和地址。
select 代理商.姓名,代理商.地址 from 代理商,客戶
where 客戶.客戶編號=300 and 客戶.代理商編號=代理商.代理商編號;

##嵌套查詢

2.嵌套查詢
/
① 查詢與「劉晨」在同一個系學習的學生。
select
from 學生信息
where 專業 in(
select 專業 from 學生信息 where 姓名 = '劉晨')

② 查詢選修了課程名爲「操做系統」的學生。
select 學生信息.* from 學生信息,課程信息
where 學生信息.學號
in(select 成績信息.學號 from 成績信息 where 成績信息.課程序號
in(select 課程信息.課程序號 from 課程信息 where 課程信息.課程名稱 = '操做系統'));
```

數據庫安全

三類安全性問題:
技術安全,管理安全,政策法律安全

存取控制

定義用戶權限,並將用戶權限登記到數據字典中
合法權限檢查

自主存取權限

定義各個用戶對不一樣數據的存取權限,當用戶訪問數據時,首先檢查用戶的存取權限,防止不合法的用戶對數據庫的存取

強制存取控制方法

每一個數據對象被強制地標以必定的密級,每一個用戶也被強制地授予某一個級別的許可證,系統規定只有某一許可證級別的用戶才能存取某一級別的數據對象。

審計

審計功能把用戶對數據庫的全部操做自動記錄下載放入審計日誌中。DBA能夠利用審計跟蹤的信息,重現致使數據庫先有情況的一系列事件,找出非法存取數據的人、事件和內容等。

數據加密

替換法:把明文字符換位密文字符
置換髮:把明文字符從新排序
DES (數據加密標準) 祕鑰加密技術 = 替換法 + 置換法

關係數據理論

函數依賴

平凡函數依賴 & 非平凡函數依賴

  • 一對一的關係 X 中有屬性值相同的元組,則對應的 Y 中的屬性值也要相等,則稱:X 函數決定 Y ,Y 函數依賴於X。
    X稱爲決定屬性組,或決定因素。
  • 若是 Y 是X 的子集,則 X -> Y 爲平凡函數依賴。

徹底函數依賴 & 部分函數依賴

  • 若是 X -> Y,但對於X的任何一個真子集 都不能函數肯定Y,則對X徹底函數依賴
  • X->Y,可是Y不函數決定於X,則爲部分函數依賴。
  • 傳遞函數依賴

    • X ->Y, Y->Z . X->Z
  • 多值依賴

    • X -> -> Y

範式

三範式是爲了不數據冗餘。

第一範式

就是每個列(屬性)只有一個,沒有重複。

第二範式

每一個非主屬性徹底依賴於主鍵
反例: A -> C, B -> C ,存在部分函數依賴
知足第一範式的前提下,消除部分函數依賴(拆分爲兩個表)。

第三範式

每一個非主屬性不依賴於其它非主屬性
消除部分和傳遞函數依賴

BC範式

  • BC範式:關係模式R屬於第一範式,且每一個屬性都不傳遞依賴於鍵碼。
  • BC範式是第三範式的加強版,不過也有人說是直接從1NF發展過來的,即每一個屬性,包括主屬性或非主屬性,都徹底依賴於候選鍵,而且不存在傳遞依賴狀況。

數據依賴的公理系統

Armstrong公理系統

  • 自反性
  • 增廣性
  • 傳遞性

    求X關於函數依賴集F的閉包

    求屬性集 X (X是U的真子集) 關於U 上的函數依賴 F 的壁報X(F)+;
    *** 例子
    U = {A,B,C,D,E},F = {AB-->C,B-->D,C-->E,EC-->B,AC-->B}求(AB)f+;
    解**:
    設:X(0) = AB;
    X(1):找到左邊A,B或AB的函數依賴,獲得AB-->C,B-->D。因而X(1) = AB U CD = ABCD;
    ......比較上下兩次迭代(如:X(0),X(1))是否相等,若是不等則並進來
    繼續,直到 上下兩次迭代相等爲止。

最小函數依賴集

A --> B ,B --> C ,A --> C
則最小函數依賴集爲:A --> B,B --> C;

數據庫設計

三分技術,七分管理,十二分基礎數據

數據庫設計的基本步驟

  • 需求分析
  • 概念結構設計
  • 邏輯結構結構設計
  • 物理結構設計
  • 數據庫實施
  • 數據庫運行和維護

查詢處理和查詢優化

  • 總代價 = I/O 代價 + CPU代價 + 內存代價 + 通訊代價
  • 代數優化
  • 先作選擇操做再作其餘操做

數據庫恢復技術

事務

  • 事務是用戶一個完整的操做,是不可分割的工做單位。
  • 事務的特性
    能夠聯想一下印象筆記的筆記同步

    ACID特性(原子性、一致性、隔離性、持續性)
    • 原子性:事務是最小的邏輯工做單位,要麼作完一個事務,要麼不進行事務
    • 一致性:事務執行後數據庫必須是從一個一致性的狀態變爲另外一個一致性的狀態的
    • 隔離性:一個事務的執行不能被其餘事務干擾,事務之間隔離。
    • 持續性(永久性) :事務提交後對數據庫中數據的影響是永久性的。

併發控制

能夠聯想一下印象筆記的多人協做就是多人協做,對同一份筆記進項修改。

  • 併發操做所帶來的數據不一致性主要包括:
  • 丟失修改
  • 不可重複讀
  • 讀「髒」數據

封鎖

能夠聯想一下印象筆記的

  • 排它鎖 X鎖 (寫鎖) :
  • 共享鎖 S鎖 (讀鎖) :
  • 活鎖:一直在等待上一個事務釋放鎖
  • 活鎖的預防: 先來先服務
  • 死鎖:多個事務各自佔有部分資源等待另外一部分資源,資源需求出現迴路,致使事務停頓得不到執行
    兩我的都要筆和紙來辦事,一我的拿着筆等紙,一我的拿着紙等筆,誰都不肯說本身完成了任務。
  • 死鎖的預防: 一次封鎖法 + 順序封鎖法
相關文章
相關標籤/搜索