- 數據庫系統的基本特征: 【數據共享性、獨立性和冗余度小】
- 【DBS】包括【DB】和【DBMS】
- 關系代數 【R-(R-S) = R∩S】
- 自然連接是構成新關系的有效方法。當關系R和S使用自然連接時,要求R和S含有一個或多個共有的【屬性】
- 現實世界到機器世界的一個中間層次是【關系模型】
- 關系代數5種基本運算: 【並、差、選擇、投影、笛卡爾積】
- 設有關系模式R(A,B,C)和S(C,D)。
與SQL語句【SELECT A,B,D FROM R,S WHERE R.C = S.C】等價的關系代數形式:
- SQL的視圖是從【基本表或視圖】中導出來的
- SQL中【BETWEEN 18 AND 30】 ===> 【包括18歲和30歲】
- 允許取空值但不允許出現重復值的約束時【UNIQUE】
- 數據庫的完整性指數據的【正確性】和【相容性】
- SQL的【GRANT】和【REVOKE】主要用來維護DB的【安全性】
- 在DB涉及中【數據流圖(DFD)】和【數據字典(DD)】主要用來描述結構化方法中的【需求分析】階段的工具
- 從E-R模型關系向關系模型轉換時,一個M:N聯系轉換為關系模式時,該關系模式的碼是【M端實體碼與N端實體碼組合】
- SQL中的集合處理方式與宿主語言單記錄的處理方式之間用【游標】來協調
- 當講局部E-R圖集成為全局E-R圖時,如果同一對象在一個局部E-R圖中作為實體,而在另一個局部E-R圖中作為屬性,這種現象稱之為:【結構沖突】
- 關系數據庫范式並不是越高越好需要符合以下幾點:
- 關系滿足的范式越高,則更新操作的代價就越低;
- 關系滿足的范式越高,則查詢操作的代價就越高;
- 關系模型和網狀模型的數據結構分別是【二維表】和【有向圖】
- 數據模型是有【數據結構】【數據操作】和【完整性約束】三個部分組成的
- 關系數據語言可分為三類:【SQL語言】【關系代數語言】和【關系演算語言】
- 刪除基本表用【DROP】語句,刪除基本表的元素【DELETE】語句
- 規范化數據庫設計可以划分為如下6個設計階段:
【需求分析階段】【概念結構設計】【邏輯結構設計】【物理結構設計】【數據庫實施階段】【數據庫運行】和【維護階段】 - 事務特性(ACID): 【Atomic - 原子性】【Consistency - 一致性】【Isolation - 隔離性】【Durability - 持久性】
- 當對視圖進行UPDATE、INSERT和DELETE操作時,為了保證被操作的行滿足視圖定義中子查詢語句的謂詞條件,應該在視圖定義語句中使用可選擇項【WITCH CHECK OPTION】
- SQL中,表有三種【視圖】【基本表】和【虛表】
- 在函數依賴的范疇內【BC范式】達到了最高的規范化程度。
- 在DBMS的規范化理論中,執行“分解”操作必須遵守:保持原有的函數依賴和【無損連接】
- 在DB中存儲的內容是【數據以及數據之間的聯系】
- ★在DB中,產生數據不一致的根本原因【數據冗余】
由於數據冗余,有時修改數據時,一部分數據修改,而另一部分沒有修改,造成同一種數據有多個值,產生數據不一致。
- SQL語言中“視圖(VIEW)”對應DB系統三級模式結構中的【外模式】
- SQL的GRANT和REVOKE語句主要用來維護DB的【安全性】
- 各種范式之間的包含關系正確的是【4NF ∈ BCNF ∈ 3NF ∈ 2NF ∈ 1NF】
- 數據庫的【完整性】是指數據的【正確性】和【相容性】
- 一個事務執行過程中,其正在訪問的數據被其他事務所修改,導致處理結果不正確,這是由於違背了事務的【隔離性-Isolation】而引起的
- 當局部E-R圖集成為全局E-R圖時,如果同一對象在一個局部E-R圖中作為實體,而在另一個局部E-R圖中作為屬性,則這種現象稱為【結構沖突】
- 關系代數是一種關系操作語言,其操作對象和操作結果均是【關系】
- 為一個基本表增加列和完整性約束條件時,應該使用SQL語句的【ALTER TABLE】
- DBS的特點是【數據共享】【數據獨立】【減少數據冗余】【避免數據不一致】【加強數據保護】
- 關系數據庫中,實現表與表之間的聯系是通過【參照完整性規則】
- 設關系R有K1個元組,關系S有K2個元組,則關系R和S進行笛卡爾積操作后的結果關系中元素的數目是【K1 * K2】
- 對關系的完整性約束通過包括【實體完整性、參照完整性、用戶自定義完整性】三種
- 建立視圖命令是【CREATE VIEW】
- 數據庫的完整性是指數據的【正確性】和【相容性】
- 應用DB的主要目的是【共享數據問題】
- 一個事務中諸操作要么全做,要么都不做,這是事務的【原子性】特征
- 采用數據庫鏡像技術,主要是為了有效解決【介質故障】的問題
- 若事務T對數據R已經加上S鎖🔒,則對數據R【可以加S鎖不能加X鎖】
- 設有兩個事務T1、T2其並發操作如圖,該操作【讀“臟”數據】
- DB常用的數據模型有【關系模型】【層次模型】【網狀模型】
- DBS的核心是【DBMS】
- DBS中的故障分類為:【事務內部故障】【計算機病毒】【系統故障】【介質故障】
- 在DB概念結構設計中,各分E-R模型之間的沖突主要有:【屬性沖突】【結構沖突】【命名沖突】
- 二級封鎖協議除了可以防止【丟失修改】也可以防止【讀“臟”數據】
什么是數據庫?
答: 數據庫是長期存儲在計算機內、有組織的、可共享的數據集合。
數據庫是按某種數據模型進行組織的、存放在外存儲器上,且可以被多個用戶同時使用。
因此,數據庫具有較小的冗余度、較高的數據庫獨立性和易擴展性。
數據庫是按某種數據模型進行組織的、存放在外存儲器上,且可以被多個用戶同時使用。
因此,數據庫具有較小的冗余度、較高的數據庫獨立性和易擴展性。
DBMS的主要功能
答: DBMS是位於OS與用戶之間的一個數據管理軟件,功能包括以下方面:
1. 數據定義功能。DBMS提供DDL用於數據庫的定義。
2. 數據操作功能。DBMS提供DML用於數據庫的基本操作:查詢、插入、修改、刪除。
3. 數據庫的運行管理。包括開發控制,安全性檢查,完整性約束條件的檢查和執行,數據庫的內容維護等。
4. 數據庫的建立和維護功能。包括數據庫初始數據的輸入以及轉換,數據庫的轉儲與恢復,數據庫的重組功能和性能的檢視與分析功能等。
1. 數據定義功能。DBMS提供DDL用於數據庫的定義。
2. 數據操作功能。DBMS提供DML用於數據庫的基本操作:查詢、插入、修改、刪除。
3. 數據庫的運行管理。包括開發控制,安全性檢查,完整性約束條件的檢查和執行,數據庫的內容維護等。
4. 數據庫的建立和維護功能。包括數據庫初始數據的輸入以及轉換,數據庫的轉儲與恢復,數據庫的重組功能和性能的檢視與分析功能等。
DBA的職責
1) 參與數據庫設計,決定DB的結構和內容;
2) 定義數據的安全性、完整性,負責分配用戶對DB的使用權限和口令管理;
3) 監督控制DB的使用和運行,改進和重新構造DBS;
4) 幫助終端用戶使用DB;
2) 定義數據的安全性、完整性,負責分配用戶對DB的使用權限和口令管理;
3) 監督控制DB的使用和運行,改進和重新構造DBS;
4) 幫助終端用戶使用DB;
數據庫系統中三層模式結構?采用三層模式結構有什么好處?
DBS的三級模式是對數據的三個抽象級別,將數據的具體組織留給DBMS管理,使用戶能夠邏輯地抽象地處理數據而不必關系
數據在計算機中地具體表示和存儲方式。
DBMS在三級模式之間提供兩層映像:
外模式/模擬:保證數據庫的邏輯獨立性
模式/內模式:保證數據庫的物理獨立性
數據在計算機中地具體表示和存儲方式。
DBMS在三級模式之間提供兩層映像:
外模式/模擬:保證數據庫的邏輯獨立性
模式/內模式:保證數據庫的物理獨立性
什么是數據庫的安全性? DBMS的安全性措施
(1)數據庫的安全性: 保護DB以防止不合法使用所造成的數據泄露、更改或破壞。
(2)DBMS通過以下方法保證DB的安全:
① 通過定義【用戶標識】對身份進行鑒定。
② 通過定義【用戶訪問權限】進行權限管控。
③ 通過定義【視圖】屏蔽掉用戶不能訪問的數據。
④ 通過【數據加密】和【審計】功能來保護DB中的安全性。
(2)DBMS通過以下方法保證DB的安全:
① 通過定義【用戶標識】對身份進行鑒定。
② 通過定義【用戶訪問權限】進行權限管控。
③ 通過定義【視圖】屏蔽掉用戶不能訪問的數據。
④ 通過【數據加密】和【審計】功能來保護DB中的安全性。
在DB設計過程中將E-R模型轉換為關系數據模型的轉換原則是什么?
① 1:1關系:將兩個實體轉換為兩個關系模式,然后再任意一個關系模式中加入另一個關系模式的鍵和聯系類型的屬性。
② 1:N關系:將兩個實體分別轉換為兩個關系模式,將在N端實體轉換的關系模式中加如1端實體轉換的關系模式的鍵和聯系類型的屬性。
③ M:N關系: 將兩個實體分別轉換為兩個關系模式,然后將聯系類型轉換為第三個關系模式,其屬性由兩端實體的鍵和聯系類型的屬性構建。
② 1:N關系:將兩個實體分別轉換為兩個關系模式,將在N端實體轉換的關系模式中加如1端實體轉換的關系模式的鍵和聯系類型的屬性。
③ M:N關系: 將兩個實體分別轉換為兩個關系模式,然后將聯系類型轉換為第三個關系模式,其屬性由兩端實體的鍵和聯系類型的屬性構建。
DB綜合題01
- Table - Student
|列名|說明|數據類型|約束|
|:--|:--|:--|:--|:--|
|Sno|學號|字符(8)|主鍵|
|Sname|姓名|字符(12)|非空,唯一|
|Ssex|性別|字符(2)|取'男'或'女',默認值'男'|
|Sage|年齡|整型|取值15~36,默認值22|
|Sdept|院系|字符(20)|默認'計算機系'|
- Table - Course
|列名|說明|數據類型|約束|
|:--|:--|:--|:--|:--|
|Cno|課程號|字符(8)|主鍵|
|Cname|課程名|字符(8)|非空|
|Teacher|教師名|字符(10)|唯一|
- Table - SC
|列名|說明|數據類型|約束|
|:--|:--|:--|:--|:--|
|Sno|學號|字符(8)|主鍵,參照Student表,級聯更新和刪除|
|Cno|課程號|字符(8)|主鍵,參照Course表,級聯更新,拒絕刪除|
|Grade|成績|短整型|取值 0 ~ 100|
關系代數表達式表述下列問題
1)檢索選修了課程號為C5的學生學號、年齡和院系;
2)檢索選修了教師為“李華”所授課程的學生姓名和學號;
編寫SQL語句
1) 創建Student表的SQL語句
CREATE TABLE Student
(
Sno CHAR(8) PRIMARY KEY,
Sname CHAR(12) NOT NULL UNIQUE,
Ssex CHAR(2) CHECK(Ssex IN ('男','女')) DEFAULT '男',
Sage INT CHECK(Sage >= 15 AND Sage <= 36) DEFAULT 22,
Sdept CHAR(20) DEFAULT '計算機系'
);
2)檢索課程名以"DB_"開頭,且倒數第3個字符為K的課程情況
SELECT *
FROM Course
WHERE Cname LIKE 'DB\_%k__' ESCAPE '\';
3)向學生選修課程表中插入元組“學生S10選修課程號C4”
INSERT INTO SC(Sno,Cno)
VALUES('S10','C4');
4)刪除選課成績在55分以下的學生記錄
DELETE FROM Student
WHERE Sno IN(
SELECT Sno
FROM SC
WHERE Sgrade < 55
);
5)把“高等數學”課程成績提高8%
UPDATE SC
SET Grade = Grade + (Grade * 0.08)
WHERE Cno IN(
SELECT Cno
FROM Course
WHERE Cname = '高等數學'
);
6)找出女同學的每一年齡組(超過3人)有多少人?要求查詢結果按人數降序排列
SELECT COUNT(Sno),Sage
FROM Student
WHERE Ssex = '女'
GROUP BY Sage
HAVING COUNT(Sno) > 3
ORDER BY Sage DESC;
7) ★定義視圖S_age,其中包括學生學號以及每個學生選修課程的門數(要求成績非空和平均成績)
CREATE VIEW S_age(Sno, Cno_num, Avg_grade)
AS
SELECT Sno,COUNT(Cno),AVG(Grade)
FROM SC
WHERE Grade IS NOT NULL
GROUP BY Sno;
8)在Course表中增加一個類型為char(10)的職稱(pro)列
ALTER TABLE Course
ADD COLUMN pro CHAR(10);
DB綜合體02
- Table - Student
列名 | 說明 | 數據類型 | 約束 |
---|---|---|---|
Sno | 學號 | 字符(8) | 主鍵 |
Sname | 姓名 | 字符(12) | 非空,唯一 |
Ssex | 性別 | 字符(2) | 取'男'或'女',默認值為'女' |
Sage | 年齡 | 整型 | 取值16~40,默認值為21 |
Sdept | 院系 | 字符(20) | 默認'電子系' |
- Table - Course
列名 | 說明 | 數據類型 | 約束 |
---|---|---|---|
Cno | 課程號 | 字符(8) | 主鍵 |
Cname | 課程名 | 字符(8) | 非空 |
Teacher | 教師名 | 字符(10) | 唯一 |
- Table - SC
列名 | 說明 | 數據類型 | 約束 |
---|---|---|---|
Sno | 學號 | 字符(8) | 主鍵 |
Cno | 課程號 | 字符(8) | 主鍵 |
Grade | 成績 | 短整型 | 取值0~100 |
1)檢索選修了教師'王敏'所教授課程的學生姓名和學號;
2)檢索選修了課程號為C3或者C5的學生學號和成績;
3) 用SQL語句建立Student表
CREATE TABLE Student
(
Sno CHAR(8) PRIMARY KEY,
Sname CHAR(12) NOT NULL UNIQUE,
Ssex CHAR(2) CHECK(Ssex IN ('男','女')) DEFAULT '女',
Sage INT CHECK(Sage >= 16 AND Sage <= 40) DEFAULT 21,
Sdept CHAR(20) DEFAULT '電子系'
);
4) 檢索姓“李”且倒數第2個字為“華”或“濤”字的學生的姓名和學號
SELECT Sname, Sno
FROM Student
WHERE Sname
WHERE Sname LIKE '李%[華濤]__';
// WHERE Sname LIKE '李%華__' OR '李%濤__';
5)向學生選修課程表中插入元組“學生S6選修課程號C2”
INSERT INTO SC(Sno, Cno)
VALUES('S6', 'C2');
6)刪除選課成績在60分以下的學生記錄
DELETE FROM Student
WHERE Sno IN
(
SELECT Sno
FROM SC
WHERE Grade < 60
);
// 或
DELETE FROM Student
WHERE Student.Sno = SC.Sno AND SC.Grade < 60;
7)把“大學英語”課程成績提高5%
// version 1
UPDATE SC
SET Grade = Grade * 1.05
WHERE
SC.Cno = Course.CNO AND Course.Cname = '大學英語'
// version 2
UPDATE SC
SET Grade = Grade * 1.05
WHERE Cno IN (
SELECT Cno
FROM Course
WHERE Course.Cname = '大學英語'
);
8)求出男同學的每一年齡組(超過4人)有多少人?要求查詢結果按人數降序排列
SELECT Sage, COUNT(Sno) AS Stu_num
FROM Student
WHERE Ssex = '男'
GROUP BY Sage
HAVING COUNT(Sno) > 4
ORDER BY Stu_num DESC;
9)定義視圖S_age,其中包括學生學號以及每個學生選修課程的門數(成績非空)和平均成績
CREATE VIEW S_age(Sno, Total_course, Avg_grade)
AS
SELECT Sno, COUNT(Course), AVG(Grade)
FROM SC
WHERE Grade IS NOT NULL
GROUP BY Sno
10)在S表中刪除院系字段列
ALTER TABLE Student
DROP COLUMN Sdept
綜合應用題
某高校教務處教務管理需要如下信息:
教師:教師編號、姓名、性別、職務、職稱、電話、E-mail 學生:學號、姓名、性別、年齡、所學專業、籍貫 課程:課程號、課程名、開課學期、所屬類別 院系:系名、系主任、辦公地點、辦公電話
實體之間聯系如下
1. 一個系可以有多個學生,一個學生可選修多門課程,而一門課程可以為多個學生選修; 2. 一個系可以有多個教師,一個教師只能在一個系工作 3. 一個教師可以講授多門課程,一門課程可以為多個教師講授
1)根據院系、教師、課程、學生等實體,設計該教務管理系統局部E-R模型;
2)將E-R圖轉換為關系模型結構,並用下划線標明各個關系中的主關鍵字;
教師(教師編號,姓名,性別,職務,職稱,電話,E-mail) 學生(學號,姓名,性別,年齡,所學專業,籍貫) 課程(課程號,課程名,開課學期,所屬類別) 院系(系名,系主任,辦公地點,辦公電話) 選課(學號,課程號,成績,學分)