《數據庫系統概念》第六版課後習題-第一章答案

//1.1
a. 建立一個數據庫系統需要更多的知識,錢,技能和時間;
b. 數據庫的複雜性可能會導致性能的降低。
//1.2
a. 在數據庫中創建一個對象需要使用DDL(數據定義語言)執行一個操作,而編程語言類型聲明只是在簡單的程序中一個抽象;

b. 數據庫DDL允許指定一致性約束,編程語言通常則不允許。這些約束包括域約束和參照完整性約束;

c. 數據庫DDL支持授權把不同的訪問權限賦予給不同的用戶,編程語言類型系統不支持這種保護(最好的情況下(或者說“編程語言類型系統能做到的做好的情況是”更恰當一點吧),可以保證一個類中的屬性不被其他類中的方法訪問);

d. 編程語言類型系統通常比SQL類型系統更加豐富。大多數數據庫只支持基礎類型,比如數字的不同類型和字符串,儘管有些數據庫支持複雜的類型比如說數組和對象;

e. 一個數據庫DDL注重類型的屬性的關係,而編程語言允許創建對象和對象的集合。

//1.3
a. 爲企業制定詳細的需求(這一步制定系統需求詳情文檔);

b. 制定一個包含所有恰當類型的數據和數據關係的模型;

c. 制定數據的完整性約束;

d. 設計物理層;

e. 對於每個要定期解決的已知問題(例如,任務由職員或Web用戶執行)定義用戶界面執行任務,並編寫必要的應用程序實現用戶界面;

f. 創建/初始化數據庫。
//1.4
a. 關於那些是學校的職工但是不是教員的人的信息;

b. 圖書館信息,包括其中的書籍,以及作家信息;

c. 賬號信息,包括大學的支付費用,學位信息,工資和其他種類的收支。
//1.5
 a. 數據冗餘和不一致。 這在某種程度上與元數據相關,但不是與未更新的實際視頻數據相關。 這裏關係很少,沒有一個可以導致冗餘。

b. 難以訪問數據。 如果就像今天的視頻共享網站那樣只通過幾個預定義的接口訪問視頻數據,這沒問題。 但是,如果組織需要根據特定搜索條件(不只是簡單的關鍵字查詢)查找視頻數據,如果元數據存儲在文件中,則在不編寫應用程序的情況下很難找到相關數據。 使用數據庫對於查找數據的任務非常重要。

c. 數據隔離。 由於數據不會經常更新,而是會新創建,因此數據隔離不是主要問題。即使是跟蹤誰看過哪些視頻(概念上)只是附加的任務,隔離仍然不是一個主要問題。但是,如果添加了授權,則可能存在對授權信息進行併發更新的一些問題。

d. 完整性問題。 除主鍵外,應用程序似乎不太可能存在嚴重的完整性約束。 如果數據是分佈式的,則在執行主鍵約束時可能存在問題。 完整性問題可能不是主要問題。

e. 原子性問題。 上傳視頻時,應以原子方式添加有關視頻和視頻的元數據,否則數據會出現不一致。 在發生故障時,需要一個底層的恢復機制來確保原子性。

f. 併發訪問異常。 只要數據不更新,就不太可能發生併發訪問異常。

g. 安全問題。當系統支持授權操作時會出現這個問題。
//1.6
Web中使用的查詢通過提供沒有特定語法的關鍵字列表來指定。 結果通常是URL的有序列表,以及有關URL內容的信息片段。 相反,數據庫查詢具有允許指定複雜查詢的特定語法。 在關係世界中,查詢的結果始終是一個表。
 //1.7
微信(用戶名、密碼、簡介……)、網易雲音樂(歌曲名、歌手、所屬專輯……)、王者榮耀(遊戲名、等級、擁有金幣數……)、淘寶(用戶名、密碼、購買訂單……)
//1.8
 a. 雖然兩個都是由一個相互關聯的數據的結合和一組用以訪問這些數據的程序組成的,但是文件處理系統通過物理訪問數據,而DBMS通過物理和邏輯訪問數據。

b. 在文件處理系統中,一個程序所寫的數據可能不能被另一個程序訪問。而DBMS中被授權的程序可以訪問存儲的邏輯數據,數據可以被多個程序訪問,減少數據的冗餘。

c. 文件處理系統被設定爲特定的程序訪問數據(如已編譯的程序),DBMS設計爲更靈活地訪問數據(如查詢)

d. 文件處理系統一般允許一個或多個程序同時訪問不同的數據文件,一個文件只有在兩個程序都只有只讀權限的時候纔可以同時被兩個程序併發訪問,而在DBMS中,允許多個用戶同時訪問相同的數據。
//1.9
 物理獨立性是指用戶的應用程序與磁盤上的數據庫中數據是相互獨立的。物理獨立性使應用程序與存儲在磁盤上的數據相分離,應用程序不依賴於物理模式,因此物理模式改變了他們也無需重寫。
//1.10
a. 數據定義。DBMS提供DDL供用戶定義數據庫的三級模式結構、兩級映像以及完整性約束和保密限制等約束。DDL主要用於建立、修改數據庫的庫結構。DDL所描述的庫結構僅僅給出了數據庫的框架,數據庫的框架信息被存放在數據字典中。當該職責不能履行時,數據庫就可能只是單純的起到保存字符串的作用,無法起到結構化數據的作用;

b. 數據操作。DBMS提供DML供用戶實現對數據的添加、刪除、更新、查詢等操作。當該職責不餓能履行時,數據庫無法執行上述操作;

c. 數據庫的運行管理。數據庫的運行管理功能使DBMS的運行控制、管理功能,包括多用戶環境下的併發控制、安全性檢查和存取權限控制、完整性檢查和執行、運行日誌的組織管理、失誤的管理和自動恢復,即保證事務的原子性。這些功能保證了數據庫系統的正常運行。當該職責無法履行時,數據庫無法進行上述等重要功能;

d. 數據組織、存儲與管理。DBMS要分類組織、存儲和管理各種數據,包括數據字典、用戶數據、存取路徑等,需確定以何種文件結構和存取方式在存儲級上組織這些數據,如何實現數據之間的聯繫。數據組織和存儲的基本目標時提高存儲空間利用率,選擇合適的存取方法提高存取效率。當該職責無法履行時,數據庫無法進行上述等重要功能;

e. 數據庫的保護。數據庫中的數據是信息社會的戰略資源,數據的保護至關重要。DBMS對數據庫的保護通過四個方面來實現:數據庫的回覆、數據庫的併發控制、數據庫的完整性控制、數據庫安全性控制。DBMS的其他保護功能還有系統緩衝區的管理以及數據存儲的某些自適應調節機制等。當該職責無法履行時,數據庫無法完成數據安全性保護的功能;

f. 數據庫的維護。這一部分包括數據庫的數據載入、轉換、存儲、數據庫的重組合重構以及性能監控等功能,這些功能分別由各個使用程序來完成。當該職責無法履行時,數據庫無法進行上述等重要功能。

 //1.11
a. 使用SQL可以定義對數據操作的規範,而使用C或C++的函數庫會很麻煩,這使得程序員需要了解更多的知識,並且進行的操作更多更復雜,使得工作更加繁瑣;

b. 使用SQL而不是C或者C++可以使移植更加方便,解決了不同編程語言之間的隔離問題。
//1.12
 a. 數據大量冗餘,相同的信息出現次數太多(如depart_name: Comp.Sci,building:Taylor出現了三次,但其實包含的內容是一樣的),浪費空間;

b. 同一數據出現在表的多處地方,當數據需要改動時,需要改動的地方較多;

c. 院系信息依賴於教員存在,當一個院系的所有教員被刪除時,在表中就無法保存院系信息,這顯然是不合理的。
//1.13
a. 模式定義。DBA通過用DDL書寫的一系列定義來創建最初的數據庫模式。

b. 存儲結構和存取方法定義。

c. 模式及物理組織的修改。由數據庫管理員對模式和物理組織進行修改,以反映機構的需求變化,或爲提高性能選擇不同的物理組織。

d. 數據訪問授權。通過授予不同類型的權限,數據庫管理員可以規定不同的用戶各自可以訪問的數據庫的部分。授權信息保存在一個特殊的系統結構中,一旦系統中有訪問數據要求,數據庫系統就去查閱這些信息。

e. 日常維護。數據庫管理員的日常維護活動有:定期備份數據庫,或者在磁帶上或者遠程服務器上,以防止像洪水之類的災難發生時數據丟失;確保正常運轉時所需的空餘磁盤空間,並且在需要時升級磁盤空間;監視數據庫的運行,並確保數據的性能不因一些用戶提交了花費時間較多的任務就下降很多。
//1.14
: 在兩層體系結構中,應用程序駐留在客戶機上,通過查詢語言表達式來調用服務器上的數據庫系統功能。而在一個三層體系結構中,客戶機只作爲一個前端並且不包含任何直接的數據庫調用。客戶端通常通過一個表單界面與應用服務器進行通信。而應用服務器與數據庫系統通信與訪問數據。對Web應用來說,顯然使三層體系結構更好。因爲Web應用的訪問量很大,客戶機直接通過查詢語言與數據庫系統進行交互可能會出現阻塞(訪問量太大),數據更新不及時(高併發引起),數據丟失(大數據量)等問題,通過一個應用服務器,我們可以進行負載均衡、分發等設置,由此來緩解數據庫系統的壓力。
//1.15
a. 用戶信息表,包含用戶id、密碼、姓名、生日等信息;

b. 羣組信息表,包含羣組的名稱、創建信息、介紹信息、參與人id等等;

c. 活動信息表,包含公共活動的介紹、時間等信息

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章