數(shù)據(jù)庫知識點總結(jié)

實體-聯(lián)系模型

基本概念

  • 實體和屬性

實體是客觀存在并且可以相互區(qū)分的任何事物
屬性是實體所代表事物具有的某種特性
每個屬性都有一定的取值范圍力麸,成為該屬性的值域

  • 實體集和碼

實體集是具有相同屬性的實體的集合
實體的值是該實體諸屬性值的列表
實體集的值是該實體集中所有實體值的集合
其值可以唯一確定實體集中每個實體的屬性集稱為該實體集的超碼
那些其真子集都不是超碼的極小超碼稱為候選碼
主碼是數(shù)據(jù)庫設(shè)計者選中的,是用來區(qū)分同一實體集中不同實體的候選碼

  • 屬性分類

屬性大部分都是簡單的不能劃分成更小的結(jié)構(gòu)育韩、單值的只能取單個值克蚂、基本的不能由其他屬性推導(dǎo)出
復(fù)合屬性與簡單屬性對應(yīng)是可以劃分成更小部分的屬性
多值屬性對應(yīng)單值屬性是特定的實體在該屬性上可以取多個值的屬性
派生屬性對應(yīng)基本屬性的值可以從其他相關(guān)屬性或?qū)嶓w計算得到,因此又稱為計算屬性

  • 聯(lián)系與聯(lián)系集

聯(lián)系是多個實體之間的相互關(guān)系
聯(lián)系集是相同的類型聯(lián)系的集合
實體在聯(lián)系中的作用稱為實體的角色

  • 聯(lián)系的類型

聯(lián)系的類型又稱為聯(lián)系的函數(shù)性映射函數(shù)
一對一聯(lián)系E2與E1中的每個實體最多與另一個實體集中的一個相互關(guān)聯(lián)
一對多聯(lián)系(1:n聯(lián)系)
多對一聯(lián)系(n:1聯(lián)系)
多對多聯(lián)系(m:n聯(lián)系)

  • 實體集與參與類型

如果實體集中的每個實體都必須參與聯(lián)系R筋讨,則稱實體集對聯(lián)系R的參與是強制的埃叭,或全部參與,否則是隨意的悉罕,或部分參與

  • 聯(lián)系的屬性

聯(lián)系也可以包含屬性赤屋,這種情況多出現(xiàn)在多對多聯(lián)系中

實體聯(lián)系圖

實體-聯(lián)系模型用實體-聯(lián)系圖(E-R圖)對現(xiàn)實世界建立概念模型

  • E-R圖包含如下成分
  1. 橢圓表示屬性,屬性寫在框內(nèi)
  2. 矩形表示實體集蛮粮,實體集名寫在框內(nèi)
  3. 菱形框表示聯(lián)系益缎,聯(lián)系名寫在框內(nèi)

弱實體集

一般地,如果一個實體集的任何屬性集都不足以形成該實體集的碼然想,則稱該實體集為弱實體集,相反的欣范,存在碼的實體集稱為強實體集
每個弱實體必須存在依賴于一個強實體
弱實體集必須與另一個稱為標(biāo)識實體集屬主實體集強實體集相關(guān)聯(lián)才有意義
將弱實體集與其標(biāo)識實體集相關(guān)聯(lián)的聯(lián)系稱為標(biāo)識性聯(lián)系
分辨符变泄、部分碼

關(guān)系數(shù)據(jù)模型

關(guān)系數(shù)據(jù)庫結(jié)構(gòu)

  • 關(guān)系

是具有相同類型的值的集合,域中的元素個數(shù)為該域的基數(shù)恼琼,記作|D|
n個域的笛卡爾集的每個元素稱為一個n-元組(簡稱元組)叉讥,第i個元素為第i個分量
基數(shù)為|D1| * |D2| * ... * |Dn|
域上的關(guān)系是笛卡爾積的任意字集
在關(guān)系數(shù)據(jù)庫中讥邻,關(guān)系通常用關(guān)系名命名,并被看作一個二維表
表的每一列對應(yīng)于一個分量。列通常是命名的突琳,稱為屬性
表的第一行是表頭,給出各列的屬性名
關(guān)系的每一個屬性都必須是原子的

  • 關(guān)系模式

粗略的說霎迫,關(guān)系模式概念對應(yīng)于程序設(shè)計語言中的類型概念爽室,它是型,定義關(guān)系的結(jié)構(gòu)
我們把關(guān)系模式簡記為R(A1,A2,...,An)R是關(guān)系名已维,A是屬性名
關(guān)系的型用關(guān)系模式刻畫行嗤,關(guān)系的值即關(guān)系在某一時刻的快照,又稱為關(guān)系實例
關(guān)系數(shù)據(jù)庫模式由若干域的定義和一組定義在這些域上的關(guān)系模式組成
關(guān)系數(shù)據(jù)庫的值就是這些關(guān)系模式對應(yīng)的關(guān)系在某一時刻的值

  • 關(guān)系的碼

主碼用于表示由多個碼中選出的作為唯一識別關(guān)系元組的碼垛耳,而所有的碼又稱候選碼栅屏。碼中的屬性稱為主屬性飘千,不在任何碼中的屬性稱為非主屬性

從E-R數(shù)據(jù)庫到關(guān)系模型

基本E-R圖的轉(zhuǎn)換

  • 屬性處理
  1. 派生屬性:忽略
  2. 復(fù)合屬性:忽略復(fù)合屬性本省,直接考慮它的成分屬性
  3. 多值屬性:

如果多值屬性m是實體集E的屬性栈雳,k是E的主碼护奈,則關(guān)系Rm的屬性由m和K組成
多主碼時由m和K1、K2...Kn組成

  • 將基本E-R圖轉(zhuǎn)換成關(guān)系模式
  1. 每個強實體集用一個關(guān)系表示
  2. 每個弱實體集用一個關(guān)系表示
  3. 每個集合用一個關(guān)系表示哥纫,但是若實體集于其標(biāo)識實體集之間的存在依賴聯(lián)系將被忽略
  4. 如果兩個關(guān)系具有相同的碼逆济,則可以合并它們

關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL

  • SQL語言的特點
  1. 集多數(shù)數(shù)據(jù)庫語言于一身
  2. 高度非過程化
  3. 面向集合的操作方式
  4. 一種語法兩種使用方式
  5. 功能強大,語言簡潔

數(shù)據(jù)定義

  • SQl的數(shù)據(jù)類型

CHAR(n) VAECHAR(n) BIT(n) BIT VARYING(n) INT SMALLINT NUMERIC(p,d) DEC(p,d) FLOAT(n) REAL DATA TIME

  • 定義磺箕、修改和刪除基本表

1.創(chuàng)建基本表

CEARTE TABLE Teachers
(Tno CHAR(7) PRIMARY KEY,
Tname CHAR(10) NOT NULL,
Sex CHAR(2) CHECK (Sex='男' or Sex='女'),
Birthday DATE,
Title CHAR(6),
Dno CHAR(4),
FOREIGN KEY(Dno) REFERENCES Departments(Dno));

2.修改基本表

使用 ALTER TABLE語句修改基本表
向基本表中添加列:
ALTER TABLE <> ADD []<>
對于已存在的列修改缺省值:
ALTER TABLE Student ALTER Sex DEFAULT '女';
ALTER TABLE Student ALTER Sex DROP DEFAULT;
刪除已存在的列
ALTER TABLE Courses DROP Pno

3.刪除基本表

DROP TABLE <表名> {CASCADE|RESTRICT}

  • 建立和刪除索引

CREATE [UNIQUE][CLUSTER] INDEX <索引名>
DROP INDEX <索引名>

  • 模式定義和刪除

CREATE SCHEMA Supply_schema AUTHORRIZATION wangqiang;
DROP SCHEMA <模式名> CASCADE|RESTRICT

數(shù)據(jù)查詢

  • select語句的一般形式

SELECT Cno,Cname,Period,Credit FROM Courses;

SELECT * FROM Courses;

SELECT 2016-year(Birthday) AS Age FROM Students;

SELECT DISTINCT 2016-year(Birthday) Age FROM Students;

SELECT Tname,Sex FROM Teachers WHERE Grade<60;

SELECT DISTINCT Sno FROM SC WHERE Grade<60;

SELECT Sname, Speciality FROM Students WHERE year(Birthday) BETWEEN 187 AND 1990;

SELECT Sname, Speciality FROM Students WHERE year(Birthday) NOT BETWEEN 187 AND 1990;

SELECT Sno,Sname FROM WHERE Speciality IN ('軟件工程','計算機科學(xué)與技術(shù)');

SELECT Sno,Sname FROM WHERE Speciality NOT IN ('軟件工程','計算機科學(xué)與技術(shù)');

SELECT Cname FROM Courses WHERE Cname LIKE '數(shù)據(jù)%'

SELECT Sno,Sname FROM Students WHERE LIKE '李__'

SELECT * FROM Courses WHERE Cname LIKE 'C_%' ESCAPE '';ESCAPE定義\為轉(zhuǎn)義字符

SELECT * FROM SC WHERE Grade IS NULL;

  • 排序和分組

將查詢結(jié)果排序:
ORDER BY <排序列> [ASC|DESC]{,<排序列>[ASC|DESC]}

  • 聚集函數(shù)

SELECT COUNT(*) FROM SC WHERE Cno='CS302';

SELECT MIN(Grade),AVG(Grade),MAX(Grade) FROM SC WHERE Cno='CS302';

  • 分組

SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;

SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>85;

  • 連接查詢

SELECT Cname,Grade FROM SC,Course WHERE SC.Cno=Courses.Cno AND Sno = '200605098';

SELECT Cname,Grade FROM SC,Course WHERE SC.Cno=Courses.Cno AND Cno='CS202' AND Grade>90;

SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,Course WHERE Students.Sno=SC.Sno AND SC.Cno=Course.Cno;

  • 嵌套查詢
  1. IN引出的子查詢
    SELECT Sno,Sname FROM Students WHERE Sex = '女' AND Speciality IN (
    SELECT Speciality FROM Students WHERE Sname ='王麗麗'
    );

  2. 集合的比較引出的子查詢
    SELECT Sno,Sname,Speciality,Birthday FROM Students WHERE Speciality <> '軟件工程' AND Birthday > ALL(
    SELECT Birthday FROM Students WHERE Speciality = '軟件工程'
    );

  3. 存在量詞引出的子查詢
    SELECT Sno,Sname FROM Students S WHERE EXISTS (
    SELECT * FROM SC WHERE Sno=S.Sno AND Cno = 'CS403');

數(shù)據(jù)更新

  • 插入單個元組

INSERT INTO Students VALUES(......);

INSERT INTO Students(......) VALUES(......);

  • 插入查詢結(jié)果

INSERT INTO Cardinf(Card-no,Name,Balance) SELECT Tno,Tname,100.00 FROM Teachers WHERE Dno ='IE';

  • 刪除

DELETE FROM Students WHERE Sno ='98757';

DELETE FROM Students;刪除所有記錄

DELETE FROM SC WHERE Sno IN (
SELECT Sno FROM Students WHERE Speciality = '計算機軟件于理論');

  • 修改

UPDATE Teachers SET Title = '副教授' WHERE Tno='B050041';

UPDATE SC SET Grade = Grade + 5 WHERE Grade < 60 AND Cno IN (
SELECT Cno FROM Courses WHERE Cname='軟件工程');

視圖

定義視圖和刪除視圖

  • 定義視圖

CREATE VIEW SE_Students AS SELECT Sno,Sname,Sex,Birthday,Dno FROM Students WHERE Speciality = '軟件工程' WITH CHECK OPTION;表示該視圖是可更新的

CREATE VIEW Student_Grade(Sno,Sname,Cname,Grade) AS SELECT S.Sno,Sname,Cname,Grade FROM Students S,SC,Courses C WHERE S.Sno=C.Sno AND C.Cno= SC.cno;

  • 刪除視圖

DROP VIEW <視圖名> [CASCADE|RESTRICT]

基于視圖的查詢

視圖是命名的導(dǎo)出表奖慌,從用戶角度講,查詢時使用視圖與使用基本表并無區(qū)別

基于視圖的更新

所有視圖都是直接或間接由基本表定義的松靡〖蛏基于視圖的更新最終要轉(zhuǎn)換成對定義視圖的基本表的更新。并不是所有視圖都可以更新雕欺。(●'?'●)

視圖的作用

  1. 使用視圖可以使一些查詢表達更加簡潔
  2. 視圖提供了一定程度的邏輯獨立性
  3. 視圖的安全保護作用
  4. 視圖使得用戶能夠以不同角度看待相同的數(shù)據(jù)

完整性與安全性

完整性概述

數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中的數(shù)據(jù)的正確性岛马、一致性和相容性。數(shù)據(jù)庫中的數(shù)據(jù)要成為有意義的信息屠列,必須滿足一定的語義約束條件啦逆。

  • 約束分類
  1. 類型(域)約束:說明給定類型的合法取值
  2. 屬性約束:說明屬性的合法值
  3. 關(guān)系約束:說明關(guān)系的合法取值
  4. 數(shù)據(jù)庫約束:說明數(shù)據(jù)庫的合法取值,通常涉及多個關(guān)系

實體完整性是一種關(guān)系約束笛洛,參照完整性是一種數(shù)據(jù)庫約束夏志,而用戶定義的完整性可以是上述四種約束的任何一種

靜態(tài)約束是關(guān)于數(shù)據(jù)庫正確狀態(tài)的約束
動態(tài)約束是數(shù)據(jù)庫從一種正確狀態(tài)轉(zhuǎn)移到另一種狀態(tài)的約束

  • DBMS對完整性的支持
  1. 說明和定義完整性約束條件的方法
  2. 完整性檢查機制
  3. 違約處理

實體完整性和參照完整性

實體完整性

  1. 每個關(guān)系應(yīng)該有一個主碼,每個元組的主碼值唯一確定該元組
  2. 主碼的任何屬性都不能取空值

參照完整性

1.參照完整性與E-R模型

如果是由E-R圖得到的苛让,則由聯(lián)系集轉(zhuǎn)換得到的每一個關(guān)系都存在參照完整性
如果來源是弱實體集沟蔑,包含外碼,外碼不能取空值

2.違反參照完整性的更新
3.保證參照完整性的措施

拒絕
級連

SQL中的參照完整性

SQL支持參照完整性狱杰。

用戶定義完整性

屬性約束

屬性上的約束是指屬性的取值必須來自其定義的值域

關(guān)系約束

關(guān)系約束說明關(guān)系的合法取值瘦材,常常涉及多個同一關(guān)系的多個屬性和/或多個屬性元組(否則可以看作屬性約束)

斷言與數(shù)據(jù)庫約束

斷言是一種命名約束,它表達了數(shù)據(jù)庫狀態(tài)必須滿足的邏輯條件仿畸。

觸發(fā)器

觸發(fā)器是特殊類型的儲存過程食棕,當(dāng)某個事件發(fā)生時它被自動執(zhí)行

  1. 指明什么事件發(fā)生和滿足什么條件執(zhí)行觸發(fā)器
  2. 指明觸發(fā)器執(zhí)行什么樣的動作
  • SQL中的觸發(fā)器

CREATE TRIGGER OverdraftTrigger
AFTER UPDATE OF Balance ON Account
REFERENCING NEW ROW AS nrow
FOR EACH ROW
WHEN(nrow.balance<0)
BEGIN ATOMIC
INSERT INTO Loan VALUEA(......);
END

安全性概述

  • 數(shù)據(jù)庫安全保護的多層面
  1. 物理層
  2. 人際層
  3. 網(wǎng)絡(luò)層
  4. 數(shù)據(jù)庫系統(tǒng)層
  5. 操作系統(tǒng)層
  • 數(shù)據(jù)庫安全保護的任務(wù)
  1. 未經(jīng)授權(quán)讀區(qū)數(shù)據(jù)(竊取信息)
  2. 未經(jīng)授權(quán)修改數(shù)據(jù)
  3. 未經(jīng)授權(quán)刪除數(shù)據(jù)

保護數(shù)據(jù)設(shè)計以下幾個任務(wù)

  1. 防止對數(shù)據(jù)的未經(jīng)過授權(quán)的存取,確保敏感信息沒有被不“需要知道”這些信息的人訪問的到
  2. 防止未經(jīng)過授權(quán)的人員刪除和修改數(shù)據(jù)
  3. 監(jiān)視對數(shù)據(jù)的訪問和更改等使用情況

SQL的授權(quán)

授權(quán)與收回

  • 授權(quán)語句

GRANT SELECT ON Students TO PUBLIC;

GRANT ALL PRIVILEGES ON Students TO U1;

GRANT ALL PRIVILEGES ON Students,Courses TO U1,U2 WITH GRANT OPTION;

GRANT INSERT,UPDATE(Grade) ON TABLE SC TO U3;

  • 收回權(quán)限

REVOKE <權(quán)限列表> ON <對象名> FROM <用戶/角色列表> {CASCADE|RESTRICT}

SQL對角色的支持

  • 創(chuàng)建角色和角色授權(quán)

CREATE ROLE <角色名>

GRANT ALL PRIVILEGES ON Account,Loan,Depositor,Borrower TO Teller;

  • 使用角色授權(quán)

GRANT <角色列表> TO <用戶/角色列表>

GRANT Manager TO niuxianghui WITH ADMIN OPTION;

  • 收回授予角色的權(quán)限

可以像從用戶回收權(quán)限一樣错沽,使用REVOKE語句回收授予角色的授權(quán)

  • 收回角色

REVOKE <角色列表> FROM <用戶/角色列表> {CASCADE|RESTRICT}

其他安全措施

  1. 審計技術(shù)
  2. 數(shù)據(jù)加密

關(guān)系數(shù)據(jù)庫的設(shè)計理論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末簿晓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甥捺,更是在濱河造成了極大的恐慌抢蚀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镰禾,死亡現(xiàn)場離奇詭異皿曲,居然都是意外死亡唱逢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門屋休,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坞古,“玉大人,你說我怎么就攤上這事劫樟』痉悖” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵叠艳,是天一觀的道長奶陈。 經(jīng)常有香客問我,道長附较,這世上最難降的妖魔是什么吃粒? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮拒课,結(jié)果婚禮上徐勃,老公的妹妹穿的比我還像新娘。我一直安慰自己早像,他們只是感情好僻肖,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卢鹦,像睡著了一般臀脏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上法挨,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天谁榜,我揣著相機與錄音,去河邊找鬼凡纳。 笑死,一個胖子當(dāng)著我的面吹牛帝蒿,可吹牛的內(nèi)容都是我干的荐糜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼葛超,長吁一口氣:“原來是場噩夢啊……” “哼暴氏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绣张,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤答渔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后侥涵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沼撕,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡宋雏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了务豺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磨总。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖笼沥,靈堂內(nèi)的尸體忽然破棺而出蚪燕,到底是詐尸還是另有隱情,我是刑警寧澤奔浅,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布馆纳,位于F島的核電站,受9級特大地震影響汹桦,放射性物質(zhì)發(fā)生泄漏鲁驶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一营勤、第九天 我趴在偏房一處隱蔽的房頂上張望灵嫌。 院中可真熱鬧,春花似錦葛作、人聲如沸寿羞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绪穆。三九已至,卻和暖如春虱岂,著一層夾襖步出監(jiān)牢的瞬間玖院,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工第岖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留难菌,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓蔑滓,卻偏偏與公主長得像郊酒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子键袱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容