- 參照關系的外碼並不一定要與被參照關系的主碼同名。✔
- 一個表中最多只能有一個主鍵,多個外鍵。✔
- 設有關系SC(Sno, Cno, Grade),遵照實體完整性規則,【Sno與Cno都不能取空值】✔
- 假設W=R ∞ S,且W、R和S的元組個數分別為p, m和n,則三者之間滿足【p <= m × n】
- R為4元關系R(A, B, C, D),S為3元關系S(B, C, D),R × S 構成的結果集為【7】元關系
- 集合R與S的交可以用關系代數的5種基本運算表示為【R-(R-S)】
- 數據字典中存放的是【數據庫體系結構的描述】
- 索引【可以根據需要在基本表上建立一個或多個索引,從而提高系統的查詢效率】
- 在數據庫的物理結構中,將具有相同值的元組集合放在連續的物理塊的存儲方法稱之為【聚簇索引】
- 數據庫中建立索引的目的是為了【加快存取速度】
- WHERE子句的條件表達式中,可以匹配0個或多個字符的通配符是【%】
- 對由SELECT-FROM-WHERE-GROUP-ORDER組成的S語句,其在被DBMS處理時,各個子句的執行次序是:【FROM-WHERE-GROUP-SELECT-ORDER】
- 采用SELECT查詢語句對關系進行查詢操作,若要求查詢結果中不能出現重復元組,可以在SELECT子句后增加保留字:【DISINCT】
- 數據模型的三要素(數據結構、數據操作和數據約束)中,數據的約束條件規定數據以及聯系的【制約規則】
- 有12個實體類型,並且存在15個不同的二元聯系,其中4個是1:1聯系類型,5個是1:N聯系類型,6個M:N聯系類型,根據轉換規則,這個E-R圖轉換為關系模式至少有:【18個】
解析:12個對應12個關系,6個M:N又會產生6個中間關系表,所以總共要轉換為(12+6=18)個 - 在數據庫技術中,未提交的隨后被撤銷了的數據,稱之為【臟數據】
- 嵌入式SQL的預處理方式,是指【把嵌入的SQL語句處理成函數調用形式】
- 若系統在運行過程中,由於某種硬件故障,使存儲在外存上的數據部分損失或全部損失,這種情況稱之為【介質故障】
- 若事務T獲得數據項Q上的排他鎖,則T對Q【既可以讀又可以寫】
- 實現參照完整性約束的語句【FOREIGN KEY 和 REFERENCES】
- 在需求分析階段,數據字典是對系統中【數據的描述】
- 對數據對象施加封鎖,避免死鎖的方法沒有采用以下【先來先服務】策略
- 在數據庫系統中,對存取權限的定義稱為【授權】
- 將SQL嵌入到主語言使用時,必須區分SQL語句和主語句,通過在所有的SQL語句前面添加【EXEC SQL】
- 數據庫設計人員與用戶之間溝通信息的橋梁是【實體聯系圖】
- 並發操作可能帶來以下的數據不一致性【丟失修改、不可重復讀、臟讀】
- 數據庫物理設計完成以后,進入數據庫實施階段,【建立庫結構】一般不屬於實施階段的工作。
- 在DBS中,日志文件的作用【數據庫故障的恢復】
- 若系統中存在一個等待事務集{T0, T1, T2, ..., Tn},其中T0正等待被T1鎖住的數據項A1,T1正等待被T2鎖住的數據項A2以此類推則系統處於【死鎖】的工作狀態
- 數據模型的發展經歷了【層次模型】【關系模型】【網狀模型】和【面向對象模型】等階段
- 數據庫數據具有【永久存儲】、【有組織】和【可共享】三個基本特點
- 審計一般可以分為【用戶級】審計和【系統級】審計
- 觸發器是實現數據庫【完整性】的一個重要方法
- 使用SQL語言的SELECT語句進行分組查詢時,如果要對分組進行篩選,則應該使用【HAVING】子句
- 游標是系統為用戶開設的一個【數據緩沖區】
- 防止未經授權的用戶惡意地存取DB中地數據,這是DBS的【安全性】控制機制要解決的問題
- 事務一旦提交,對數據庫的修改就是永遠的 =》持久性
- 層次型、網狀型和關系型數據庫划分原則是【數據之間的聯系】
- 在數據庫中存儲的是【數據以及數據之間的聯系】
- 數據的物理獨立性指的是【用戶的應用程序與數據庫存儲在磁盤上中的數據相互獨立】
- 現實世界的事物反映到人的頭腦中經過思維加工成數據。這一過程要經過三個領域:【現實世界】【信息世界】【機器世界】
- 【數據結構】是數據系統的靜態特性的描述,【數據操作】是數據庫系統的動態特性的描述。
- 關系模型的一個特點是:【實體以及實體之間的聯系都可以使用相同的結構類型來表示】
- 【數據模型】是對現實世界數據特征的抽象。
- DBMS是一個位於OS和用戶的應用之間的【系統軟件】
- 在關系模式中有三類完整性約束,任何關系必須滿足其中兩種完整性約束條件【實體完整性】【參照完整性】
- 數據庫應用程序的編寫是基於三級模式結構中的【外模式】
- 以下屬於信息世界的模型,且實際上是現實世界到機器世界中的一個中間層次的是【概念模型】
- 數據模型的三要素中,數據的約束條件規定數據及其聯系的【制約規則】
數據模型的概念和主要組成
數據模型(Data Model)是數據特征的抽象,它從抽象層次上描述了系統的靜態特征、動態行為和約束條件,為數據庫系統的信息表示與操作提供一個抽象的框架。
數據模型所描述的內容包括三個部分:數據結構、數據操作、數據約束。
1、數據結構:數據模型中的數據結構主要描述數據的類型、內容、性質以及數據間的聯系等。數據結構是數據模型的基礎,數據操作和約束都建立在數據結構上。不同的數據結構具有不同的操作和約束。
2、數據操作:數據模型中數據操作主要描述在相應的數據結構上的操作類型和操作方式。
3、數據約束:數據模型中的數據約束主要描述數據結構內數據間的語法、詞義聯系、它們之間的制約和依存關系,以及數據動態變化的規則,以保證數據的正確、有效和相容。
什么叫數據獨立性?什么是物理獨立性和邏輯獨立性?為什么數據庫具有數據獨立性?
數據獨立性是指【數據描述】與【使用這些數據的應用程序相互分離】。包括數據的物理獨立性和邏輯獨立性。 數據的物理獨立性
試闡述關系模型的概念
1.關系:一個關系對應一張二維表,但不是所有二維表都對應關系。
2.屬性:表中的一列即為一個屬性。
3.域:屬性的取值范圍。
4.元組:表中的一行。
5.主碼:能唯一標識表中一條元組的屬性或屬性集合。
6.分量:元組中的一個屬性值。
7.關系模式:對關系的描述。
2.屬性:表中的一列即為一個屬性。
3.域:屬性的取值范圍。
4.元組:表中的一行。
5.主碼:能唯一標識表中一條元組的屬性或屬性集合。
6.分量:元組中的一個屬性值。
7.關系模式:對關系的描述。
數據庫的三級模式結構,並說明這種結構的優點
什么是基本表、視圖,兩者的聯系和區別是什么?視圖的優點是什么?
基本表:本身獨立存在的表,在SQL中一個關系對應一個表。
視圖:從一個或幾個基本表中導出的表。視圖本身不存在獨立存儲在數據庫中,是虛表,在DB中只存放視圖的定義而不存放視圖對應的數據,這些數據仍在基本表中。
用戶可以在基本表\視圖之上定義視圖。
視圖:從一個或幾個基本表中導出的表。視圖本身不存在獨立存儲在數據庫中,是虛表,在DB中只存放視圖的定義而不存放視圖對應的數據,這些數據仍在基本表中。
用戶可以在基本表\視圖之上定義視圖。
哪類視圖可以更新?哪類視圖不可以更新?
* 可以更新的是:視圖的屬性來自基本表的行列子集視圖
* 不可更新的是:視圖的屬性來自集合函數、表達式
* 不可更新的是:視圖的屬性來自集合函數、表達式
自然連接和等值連接區別
1.等值連接中不要求屬性值完全相同,自然連接要求兩個關系中進行比較的必須是相同的屬性組(屬性名可以不同)但必須要有相同的值域。 2.等值連接不將重復屬性去掉,而自然連接去掉重復屬性,**自然連接是去掉重復列的等值連接**。
綜合應用題
設有一個數據庫,包括如下關系模式:
部門(部門編號, 部門名稱, 辦公地點, 部門電話) 教工(教工編號, 部門編號, 姓名, 性別, 出生日期, 職稱, 文化程度, 婚否, 基本工資, 家庭電話) 任課(教工編號, 課程編號, 上課班級, 上課時間, 上課地點) 課程(課程編號, 課程名稱, 學分)
用關系代數完成以下查詢
1)查詢所有女教工的姓名、家庭電話
2)查詢部門名稱為“外語系”的所有女教師的姓名和家庭電話
3)查詢教工編號為“126”的教師的任課情況,要求輸出:姓名、課程名稱、上課時間、上課地點。
編寫SQL語句實現相應功能
1)在“課程”表中插入一條記錄(課程號:A256, 課程名稱:高等數學,學分:4.5)。
INSERT INTO 課程(課程編號, 課程名稱, 學分)
VALUES("A256", "高等數學", 4.5);
2)查詢所有文化程度為碩士的女教工的教工編號、姓名、出生日期,並按出生日期升序排列
SELECT 教工編號, 姓名, 出生日期
FROM 教工
WHERE 文化程度 = '碩士' AND 姓名 = '女'
ORDER BY 出生日期 ASC
3)查詢計算學校教工總人數
SELECT COUNT(*)
FROM 教工;
4)將部門名稱“計算機系”修改為“計算機學院”
UPDATE 部門
SET 部門名稱 = '計算機學院'
WHERE 部門名稱 = '計算機系';
5)把查詢和刪除“課程”表數據的權限授予用戶U2
GRANT SELECT, DELETE ON 課程 TO U2;
6)創建一個所有教師任課信息的名為“teach”的視圖,包括下列屬性:姓名、課程名稱、上課班級、上課時間、上課地點。
CREATE VIWE teach(姓名, 課程名稱, 上課班級, 上課時間, 上課地點)
AS
SELECT 姓名, 課程名稱, 上課班級, 上課時間, 上課地點
FROM 教工, 任課,
WHERE 教工.教工編號 = 任課.教工編號;
7)查詢各位教師任課門數,輸出:教師編號、教師名稱、任課門數
// 第一種
SELECT 教師.教師編號, 教師.教師名稱, tmp.任課門數
FROM 教師, (
SELECT 教工編號, COUNT(*) AS 任課門數
FROM 任課
GROUP BY 教工編號
) AS tmp
WHERE 教師.教工編號 = tmp.教工編號;
// 第二種
SELECT 教師編號, 教師名稱, COUNT(教師編號) AS 任課門數
FROM 教工, 任課
WHERE 教工.教工編號 = 任課.教工編號
GROUP BY 教工編號;