第一章
1. 試說明資料、資料庫、資料庫管理系統和資料庫系統的概念。
答:資料是資料庫中儲存的基本物件,資料庫是存放資料的場所,資料庫管理系統是管理資料庫資料以及其功能的系統軟體,資料庫系統是由資料庫、資料庫管理系統、資料庫管理員和資料庫應用程式共同構成的系統。
5. 比較用檔案管理和用資料庫管理資料的主要區別。
答:檔案系統不能提供資料的獨立性,也不能提供資料共享、安全性等功能,這些需要客戶端程式設計實現,而資料庫管理系統很方便的實現這些功能。
6. 在資料庫管理方式中,應用程式是否需要關心資料的儲存位置和儲存結構?為什 麼?
答:不需要,這些都由資料庫管理系統來維護。
7. 在資料庫系統中,資料庫的作用是什麼?
答:是儲存資料的倉庫,用來儲存資料。
8. 在資料庫系統中,應用程式可以不透過資料庫管理系統而直接訪問資料檔案嗎?
答:不可以。
10. 資料庫系統由哪幾部分組成,每一部分在資料庫系統中的作用大致是什麼?
答:包括3部分:資料庫、資料庫管理系統和應用程式。資料庫是資料的彙集,以一定的組織形式儲存在儲存介質上;資料庫管理系統是管理資料庫的系統軟體,可以實現資料庫的各種功能;應用程式專指以資料庫資料為基礎的程式。
第二章
3. 實體之間的聯絡有幾種?分別是哪些?請為每一種聯絡舉出一個例子。
答:三種:1:1;1:n;m:n;示例:老闆和公司,公司和員工,經理和員工。
5. 指明下列實體間聯絡的種類:
(1)教研室和教師(··一個教師只屬於一個教研室, 一個教研室可有多名教師)。 答:一對多
(2)商店和顧客。答:多對多
(3)國家和首都。答:一對一
6. 解釋關係模型中的主碼、外碼、主屬性、非主屬性的概念,並說明主碼、外碼的作用。
答:主碼是用於唯一確定表中一個元組的一個屬性或最小的屬性組。用於實現實體完整性。
外碼用於實現資料之間的關聯關係。
主屬性:候選鍵所包含的屬性。
非屬性:主屬性之外的其他屬性。
7. 指出下列關係模式的主碼:
(1)考試情況(課程號,考試性質,考試日期,考試地點)。假設一門課程在不同的日期可以有多次考試,但在同一天只能考一次。多門不同的課程可以同時進行考試。
答:課程號和考試日期
(2) 教師授課(教師號,課程號,授課時數,學年,學期)。假設一名教師在同一個學年和 學期可以講授多門課程,也可以在不同學年和學期多次講授同一門課程,對每門課程的講授 都有一個授課時數。
答:教師號、課程號、學年
(3) 圖書借閱(書號,讀者號,借書日期,還書日期)。假設一個讀者可以在不同的日期多 次借閱同一本書, 一個讀者可以同時借閱多本不同的圖書, 一本書可以在不同的時間借給不 同的讀者。但一個讀者不能在同一天對同一本書借閱多次。
答:書號、讀者、借書日期
- 設有如下兩個關係模式,試指出每個關係模式的主碼、外碼,並說明外碼的引用關係。 產品表(產品號,產品名稱,產品價格,生產日期),其中產品名稱有重複。銷售表(產品號,銷售時間,銷售數量),假設可同時銷售多種產品,但同一產品在 同一時間只銷售一次。
答:產品的主碼:產品號,無外碼。銷售的主碼:產品號和銷售時間,產品號為外碼。
9. 關係模型的資料完整性包含哪些內容?分別說明每一種完整性的作用。
答:實體完整性、參照完整性和使用者定義完整性。
實體完整性:保證表中的不儲存相同的資料,也不儲存無意義的資料。
參照完整性:用於描述實體之間的聯絡。
使用者定義完整性:限定屬性的取值範圍,保證資料庫中儲存的值與現實世界相符。
10. 資料庫系統包含哪三級模式?試分別說明每一級模式的作用?
答:外模式、模式、內模式。
外模式是對現實系統中使用者感興趣的整體資料結構的區域性描述,用於滿足不同使用者對資料的需求。
模式是資料庫中全體資料的邏輯結構和特徵的描述,滿足所有使用者對資料的需求。
內模式:對整個資料庫的底層表示,描述了資料的儲存位置和儲存方式。
11. 資料庫系統的兩級映像的功能是什麼?它帶來了哪些好處?
答:外模式/模式對映和模式/內模式映像。前者保證了當前模式發生變化時可以保證外模式不變,從而時使用者的應用程式不需要修改。後者保證了當內模式發生變化,比如儲存位置或儲存檔名改變,可以保證模式不變,從而使使用者不需要知道這些變化。
12. 資料庫三級模式劃分的優點是什麼?它能帶來哪些資料獨立性?
答:使使用者可以在邏輯層處理資料, 不需要關心具體的物理細節,同時當內模式或模式發生變化時,可以透過模式之間的映像關係,保持外模式不變,從而避免了修改應用程式,帶來了資料的邏輯獨立性和物理獨立性。
第三章
10寫出建立如下三張表的SQL 語句,要求在定義表的同時定義資料的完整性約束。
答:
create table 圖書表{
書號 nchar(6) primary key, 書名 nvarchar(30) not null,
第一作者 char(10) not null, 出版日期 smalldatetime,
價格 numeric(4, 1)
}
Create table 書店表{
書店編號 nchar(6) primary key, 店名 nvarchar(30) not null,
電話 char(8) check (電話 like`[0-9][0-9][0-9][0-9][0-9][0-9][0-9]
地址 varchar(40),
郵政編碼 char(6)
}
Create table 圖書銷售表{
書名 nchar(6) not null,
書店編號 nchar(6) not null,
銷售日期 smalldatetime not null;
銷售數量 smalldatetime check(銷售數量 >= 1);
}
11為“圖書表”新增“印刷數量”列,型別為整數,同時新增約束,要求此列的取值 要大於等於1000。
答:Alter table 圖書表
Add 印刷數量 int check(印刷數量 >= 1000)
12刪除“書店表”中的“郵政編碼”列。
答:alter table 書店名
Drop column 郵政編碼
- 將“圖書銷售表”中的“銷售數量”列的資料型別改為整型。
答:alter table 圖書銷售表
Alter column 銷售數量 int