2010年上半年5月份系統分析師上午試題答案(分析與解答)之六

(43)
參考答案:B
(44)
參考答案:C
(45)
試題分析:
1NF:每個屬性不可重複不可再分
2NF:消除非主屬性對關鍵字的部分依賴
3NF:消除非主屬性對關鍵字的傳遞依賴
BCNF:在2NF、3NF的基礎上消除主屬性對關鍵字的部分、依賴傳遞
詳解:
設計範式(範式,資料庫設計範式,資料庫的設計範式)是符合某一種級别的關系模式的集合。
構造資料庫必須遵循一定的規則。在關系資料庫中,這種規則就是範式。
關系資料庫中的關系必須滿足一定的要求,即滿足不同的範式。目前關系資料庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、第四範式(4NF)、第五範式(5NF)和第六範式(6NF)。滿足最低要求的範式是第一範式(1NF)。
在第一範式的基礎上進一步滿足更多要求的稱為第二範式(2NF),其餘範式以次類推。一般說來,資料庫隻需滿足第三範式(3NF)就行了。
在建立一個資料庫的過程中,範化是将其轉化為一些表的過程,這種方法可以使從資料庫得到的結果更加明确。這樣可能使資料庫産生重複資料,進而導緻建立多餘的表。範化是在識别資料庫中的資料元素、關系,以及定義所需的表和各表中的項目這些初始工作之後的一個細化的過程。
(物品名稱,購買顧客,物品價格)
如果上面這個表用于儲存物品的價格,而你想要删除其中的一個顧客,這時你就必須同時删除一個價格。範化就是要解決這個問題,你可以将這個表化為兩個表,一個用于存儲每個顧客和他所買物品的資訊,另一個用于存儲每件産品和其價格的資訊,這樣對其中一個表做添加或删除操作就不會影響另一個表。
1 第一範式(1NF)
在任何一個關系資料庫中,第一範式(1NF)是對關系模式的基本要求,不滿足第一範式(1NF)的資料庫就不是關系資料庫。
所謂第一範式(1NF)是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。
例:以下兩種不滿足1NF
① 學号 姓名 所選課程1 所選課程詳情1 所選課程2 所選課程詳情2
② 部門編号部門名稱 員工資訊
員工号 員工姓名 員工性别
如果出現重複的屬性,就可能需要定義一個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關系。
在第一範式(1NF)中表的每一行隻包含一個執行個體的資訊。
例子中的員工資訊,不能将員工資訊都放在一列中顯示,也不能将其中的兩列或多列在一列中顯示;需要單建一個員工資訊表,且每一行隻表示一個員工的資訊,一個員工的資訊在表中隻出現一次。
簡而言之,第一範式就是無重複(不可分割)的列。
2 第二範式(2NF)
第二範式(2NF)是在第一範式(1NF)的基礎上建立起來的,即滿足第二範式(2NF)必須先滿足第一範式(1NF)。
第二範式(2NF)要求資料庫表中的每個執行個體或行必須可以被惟一地區分。
為實作區分通常需要為表加上一個列,以存儲各個執行個體的惟一辨別。如圖員工資訊表中會加上員工編号(id)列,因為每個員工的員工編号是惟一的,是以每個員工可以被惟一區分。這個惟一屬性列被稱為主關鍵字或主鍵、主碼。
第二範式(2NF)要求實體的屬性完全依賴于主關鍵字。
所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實作區分通常需要為表加上一個列,以存儲各個執行個體的惟一辨別。
例:以下關系不符合2NF
選課關系表SelectCourse(學号, 姓名, 年齡, 課程名稱, 成績, 學分),
關鍵字為組合關鍵字(學号, 課程名稱),因為存在如下決定關系:
(學号, 課程名稱) → (姓名, 年齡, 成績, 學分)
這個資料庫表不滿足第二範式,因為存在如下決定關系:
(課程名稱) → (學分) (部分依賴)
(學号) → (姓名, 年齡) (部分依賴)
由于不符合2NF,這個選課關系表會存在如下問題:
(1) 資料備援:
同一門課程由n個學生選修,"學分"就重複n-1次;同一個學生選修了m門課程,姓名和年齡就重複了m-1次。
(2) 更新異常:
若調整了某門課程的學分,資料表中所有行的"學分"值都要更新,否則會出現同一門課程學分不同的情況。
(3) 插入異常:
假設要開設一門新的課程,暫時還沒有人選修。這樣,由于還沒有"學号"關鍵字,課程名稱和學分也無法記錄入資料庫。
(4) 删除異常:
假設一批學生已經完成課程的選修,這些選修記錄就應該從資料庫表中删除。但是,與此同時,課程名稱和學分資訊也被删除了。很顯然,這也會導緻插入異常。
把選課關系表SelectCourse改為如下三個表:
學生:Student(學号, 姓名, 年齡);
課程:Course(課程名稱, 學分);
選課關系:SelectCourse(學号, 課程名稱, 成績)。
非主屬性隻依賴關鍵字中的部分主屬性,對其進行資料操作時,有可能使得關鍵字中未被依賴的那部分主屬性極其相關資訊丢失或出現錯誤,進而導緻更新、插入、删除異常等。
符合第二範式的資料庫表,消除了資料備援、更新異常、插入異常和删除異常。
資料庫表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴,也即所有非關鍵字段都完全依賴于任意一組候選關鍵字。
簡而言之,第二範式就是非主屬性非部分依賴于主關鍵字。
另外,所有單關鍵字的資料庫表都符合第二範式,因為不可能存在組合關鍵字。
3 第三範式(3NF)
滿足第三範式(3NF)必須先滿足第二範式(2NF)。
第三範式(3NF)要求一個資料庫表中不包含已在其它表中已包含的非主關鍵字資訊。
例如,存在一個部門資訊表,其中每個部門有部門編号(dept_id)、部門名稱、部門簡介等資訊。那麼在員工資訊表中列出部門編号後就不能再将部門名稱、部門簡介等與部門有關的資訊再加入員工資訊表中。如果不存在部門資訊表,則根據第三範式(3NF)也應該建構它,否則就會有大量的資料備援。
第三範式就是屬性不依賴于其它非主屬性。
例:
學生關系表Student(學号, 姓名, 年齡, 所在學院, 學院地點, 學院電話)
關鍵字為單一關鍵字"學号"
(學号) → (姓名, 年齡, 所在學院, 學院地點, 學院電話)
這個資料庫是符合2NF的,但是不符合3NF,因為存在如下決定關系:
(學号) → (所在學院) → (學院地點, 學院電話)
(學院地點,學院電話)不能直接由學生學号決定,而是由學院名稱決定的。
而學院名稱依賴于學号,是以出現了非主屬性對關鍵字(學号)的依賴傳遞,不符合3NF。
資料表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函數依賴則符合第三範式。所謂傳遞函數依賴,指的是如果存在"A → B → C"的決定關系,則C傳遞函數依賴于A。是以,滿足第三範式的資料庫表應該不存在如下依賴關系:
關鍵字段 → 非關鍵字段x → 非關鍵字段y
簡而言之,第三範式不存在非主屬性對關鍵字的傳遞依賴。
4、BCNF
在第三範式的基礎上。
3NF規定的是非主屬性對關鍵字的傳遞依賴,而BCNF進一步規定任一屬性(包括主屬性和非主屬性)對關鍵字都不存在傳遞依賴,且不存在主屬性對關鍵字的部分依賴(2NF規定為非主屬性對關鍵字的部分依賴)。
例:倉庫管理關系表StorehouseManage(倉庫ID, 存儲物品ID, 管理者ID, 數量)
且有一個管理者隻在一個倉庫工作;一個倉庫可以存儲多種物品,是以關鍵字為(倉庫ID, 存儲物品ID)和(管理者ID, 存儲物品ID)。
(倉庫ID, 存儲物品ID) →(管理者ID, 數量)
(管理者ID, 存儲物品ID) → (倉庫ID, 數量)
非主屬性“數量”,完全且直接依賴于兩個後選碼,是以符合2NF和3NF。
但是,由于存在如下決定關系,是以其不符合BCNF範式:
(倉庫ID) → (管理者ID)
(管理者ID) → (倉庫ID)
如果關系模式R(U,F)的所有屬性(包括主屬性和非主屬性)都不傳遞依賴于R的任何候選關鍵字,那麼稱關系R是屬于BCNF的。或是關系模式R,如果每個決定因素都包含關鍵字(而不是被關鍵字所包含),則為BCNF的關系模式。
把倉庫管理關系表分解為二個關系表:
倉庫管理:StorehouseManage(倉庫ID, 管理者ID);
倉庫:Storehouse(倉庫ID, 存儲物品ID, 數量)。
這樣的資料庫表是符合BCNF範式的,消除了删除異常、插入異常和更新異常。
如果關系模式R∈1NF,且所有的函數依賴X->Y(Y X),決定因素X都包含了R的一個候選碼,則稱R屬于BC範式,記做R ∈BCNF。
一個滿足BCNF範式的關系模式有:
所有非主屬性對每一個碼都是完全函數依賴。
所有的主屬性對每一個不包含它的碼,也是完全函數依賴
沒有任何屬性完全函數依賴于非碼的任一組屬性。
如果R ∈BCNF,則R ∈3NF。
BCNF排除了任何屬性對碼的傳遞與部分依賴。
簡而言之,如果每個決定因素都包含關鍵字(而不是被關鍵字所包含),則為BCNF的關系模式。
(倉庫ID, 存儲物品ID) →(管理者ID, 數量) 決定因素(倉庫ID, 存儲物品ID),為關鍵字(包含關鍵字);
倉庫ID->管理者ID,決定因素倉庫ID,為主屬性,非關鍵字,被關鍵字(倉庫ID, 存儲物品ID)所包含。
----------------------------------------------------------
(46)
試題分析:
段号0的基位址1598的含義是:
基位址1598意思是段号0在記憶體中的起始位址。
(0,1597)代表的含義是什麼呢?
0即段号,1597是位移量。也就是說(X,Y)X代表的是段号,Y代表位移量。
邏輯位址(0,1597)的實體位址是:
先找到0段号對應的基位址
實體位址=段号對應的基位址+偏移量
是以說:
Y的取值範圍是: 0<= Y <= (段長 - 1)
A C選項(0,1597)不對,1596大于段号0的段長600
D選項(4,1066)不對,1066大于段号4的段長960
(47)
柱面号為18的請求序列有3個,分别為:1,5,7
柱面号為25的請求序列有4個,分别為:2,3,8
柱面号為40的請求序列有2個,分别為:4,6
柱面号為45的請求序列有1個,分别為:9
根據排除法選擇B
(48)
2-8-3-5-7-1-4-6-9
先從22号柱面移動到25号柱面:25-22=3
先從25号柱面移動到18号柱面:25-18=7
先從18号柱面移動到40号柱面:40-18=22
先從40号柱面移動到45号柱面:45-40=5
累計移動3+7+22+5=37
是以平均移動臂的距離為37/9=4.11
【(25-22)+(25-18)+(40-18)+(45-40)】/9=37/9=4.11
參考答案:A