例1:
現有如下關系模式:R(教師號,姓名,部門號,部門名稱,科研項目編號,項目名稱,項目經費,擔任工作,完成時間)每名教師可以參加多項科研項目,每個項目可以有多名教師參加,教師參加科研工作包括擔任工作及他完成所擔任部分的完成時間。 (1)根據上述條件,寫出關系模式R的關鍵碼。 (2)R最高屬於第幾范式,為什么? (3)將R規范到3NF。
由關系模式可以得出(肉眼憑經驗看出):
候選碼:(教師號,部門號,科研項目編號)
(教師號)→(姓名)
(部門號)→(部門名稱)
(科研項目編號)→項目名稱
(科研項目編號)→項目經費
由題目描述可以得出:
(教師號,科研項目編號)→(擔任工作)
(教師號,科研項目編號)→(完成時間)
(1)肉眼看出候選碼就是(教師號,部門號,科研項目編號)
(2)第一范式,存在姓名依賴於教師號,而擔任工作依賴於教師號和科研項目編號,這是個非主屬性對碼的部分函數依賴
(3)
教師(教師號,姓名)
部門(部門號,部門名稱)
科研項目(科研項目編號,項目名稱,項目經費)
教師科研情況(教師號,科研項目編號,擔任工作,完成時間)
例2:
現有關系模式如下:
借閱(圖書編號,書名,作者名,出版社,讀者編號,讀者姓名,借閱日期,歸還日期)
(1)讀者編號是候選碼嗎請說明理由。
(2)寫出該關系模式的主碼。
(3)該關系模式中是否存在部分函數依賴如果存在,請寫出兩個。
(4)該關系模式最高滿足第幾范式並說明理由。
(5)如何分解該關系模式,使得分解后的關系模式均滿足第三范式(3NF)
由關系模式可以得出:
候選碼:(圖書編號,讀者編號,借閱日期)
(圖書編號)→(書名)
(圖書編號)→(作者名)
(圖書編號)→(出版社)
(讀者編號)→(讀者姓名)
歸還日期不能依賴於借閱日期
(1)不是,讀者編號只能決定書名、作者名、出版社,不能決定所有的屬性,因此該關系模式不能完全依賴於讀者編號。
(2)(圖書編號,讀者編號,借閱日期)
(3)偶上邊寫了5個XDDD
(4)第一范式,因為存在非主屬性對碼的部分函數依賴,比如(圖書編號,讀者編號,借閱日期)→(書名),而(圖書編號)→(書名)。
(5)
圖書(圖書編號書名,作者名,出版社)
讀者(讀者編號,讀者姓名)
借閱記錄(圖書編號,讀者編號,借閱日期,歸還日期)
為什么沒有(借閱日期)→(歸還日期)呢?
因為一個借閱日期告訴我們,我們只知道借了某個東西以后需要歸還,但沒有具體時間,想什么時候還是未知的,因此不能決定。
為什么會有(圖書編號,讀者編號,借閱日期)→(歸還日期)呢?
這就得怪題目不嚴謹了!明明借了一本書只要在規定時間內的某一天還就可以了,這也是不能預測的某一天,除非已經有了規定:該書必須在哪天還,或者說這里的歸還日期指的是最后的歸還日期,也就是deadline,截止日期,哈哈哈那就是咋們中華文化廣大精神了,咋們在圖書館借了某本書后確實是有個成文的規定,在規定時間還,這樣想的話就比較合理,但是題目中真的沒有任何描述,所以真的很不嚴謹。
例3:
現有如下關系模式,用於記錄學生參加競賽信息:
參加競賽(競賽編號,競賽名稱,競賽組織者,競賽開始日期,學號,學生姓名,獲獎等級)
若有以下規定,
(1)所有競賽的編號是唯一的;
(2)一名學生可以在不同日期參加不同的競賽,但在同一日期只能參加一個競賽;一個競賽可有多名學生參加;
(3)每名學生參加一次競賽,會獲得一個不同等級的獎項。
請完成如下問題:
1)請寫出該關系模式的碼。(5分)
2)該關系模式滿足第幾范式?請說明理由。 (5分)
3)請給出關系模式的一個有效分解,使得分解后的關系模式均滿足第三范式? (5分)
由關系模式可以得出:
候選碼:(競賽編號,學號)
(競賽編號)→(競賽名稱)
(競賽編號)→(競賽組織者)
(競賽編號)→(競賽開始日期)
(學號)→(學生姓名)
獲獎等級沒法肉眼判斷。。
由題目規定可以得出:
(學號,競賽開始日期)→(競賽編號)
(學號)→(競賽編號)
(學號,競賽編號)→(獲獎等級)
1)(競賽編號,學號)
2)第一范式,因為該關系模式中存在非主屬性對碼的部分函數依賴,比如(學號,競賽編號)→(獲獎等級)、(競賽編號)→(競賽組織者)
競賽(競賽編號,競賽名稱,競賽組織者,競賽開始日期)
學生(學號,學生姓名)
參賽信息(學號,競賽編號,獲獎等級)