數據庫關係模式的函數依賴習題講解

這種問題直接看定義容易一臉懵逼,很難懂,舉例子很容易理解,所謂我們直接做題,做完這幾道題目相信你就會了。

注:這種類型的題目是 數據庫系統概論 課程的必考題。

例1

第一題會講解的非常詳細,請一定認真看,後面 3 道題作爲練習題,自己先做再參考答案。

設有關係模式 R(職工名,項目名,工資,部門名,部門經理)
如果規定,每個職工可參加多個項目,各領一份工資;每個項目只屬於一個部門管理;每個部門只有一個經理。

  1. 試寫出關係模式 R 的基本函數依賴和主碼。
  2. 說明 R 不是 2NF 模式的理由,並把 R 分解成 2NF 。
  3. 進而將 R 分解成 3NF ,並說明理由。

分析

依賴關係我們使用 → 表示,可以理解爲指向誰就代表可以推出誰,或者歸誰管。

比如在這裏,職工名和項目名合在一起可以推出工資是多少就可以表示爲:(職工名,項目名)→工資

再者,項目歸部門管,可以表示爲:項目名→部門名;部門歸部門經理管可以表示爲:部門名→部門經理

好了,到現在爲止我們就已經將第一問中的函數依賴寫出來了,我們再來捋一下:

  • 部門經理依賴於部門,也就是說要先確定部門才能確定部門經理,所以是依賴關係;
  • 而部門依賴於項目,要先確定項目才能確定部門;
  • 工資依賴於兩個屬性:職工名和項目名。

那麼主碼又是什麼呢?

主碼也叫主鍵,是指可以通過它唯一確定一條數據的這樣一個屬性。

比如學號就可以做主鍵,因爲一個學號對應一個學生。

那麼這裏的主鍵是什麼呢?

我們就要找通過誰可以唯一確定一條記錄,項目名肯定不行,因爲他和職工名一起纔可以確定工資,那職工名肯定也不行,但是把它們合在一起就可以了,這樣就可以確定唯一的一條記錄。

所以,主鍵爲(職工名,項目名)

所以答案就是:

函數依賴關係:
	(職工名,項目名)→工資
	項目名→部門名
	部門名→部門經理
	
主鍵爲(職工名,項目名)

來看第二問:說明 R 不是 2NF 模式的理由,並把 R 分解成 2NF 。

2NF 是什麼呢?

就是一種規範,他規定不能存在部分依賴,部分依賴是啥意思呢?就是我們只看依賴於主鍵的屬性,這裏有工資和部門名,但是他們兩個的區別是工資對應的全部的主鍵,也就是兩個值,但是部門名只依賴於項目名,少了一個,所以是部分依賴。

所以他存在了部分依賴就不是 2NF 模式了,那麼怎麼把它化成 2NF 呢?

一般我們只能通過分解的方式來消除,就是把一個關係拆成兩個關係:

R1(項目名,部門名,部門經理)
R2(職工名,項目名,工資)

這樣每個關係中就不存在部分依賴了。

來看第三問:進而將 R 分解成 3NF ,並說明理由。

那麼 3NF 又是啥,我們先來觀察上面那個 2NF 的關係,發現有一個關係R1(項目名,部門名,部門經理),他比較特殊,就是項目名→部門名部門名→部門經理,他是連續的,就是傳遞性的依賴關係,3NF 就是要去掉這種依賴關係。

那麼我們來去掉看看:

可以把 R1 再分成兩個關係:

R11(項目名,部門名)
R12(部門名,部門經理)

最後總結一下 2NF 和 3NF 的關係:

第一道題就講完了,大家一定要熟練掌握。

例2

設有關係模式R(A,B,C,D,E,F),其函數依賴集爲:
F={E→D,C→B,CE→F,B→A}。

請回答如下問題:

  • (1) 指出 R 的所有候選碼並說明原因;
  • (2) R 最高屬於第幾範式,爲什麼?
  • (3) 分解 R 爲 3NF。

第一問:
候選碼就是主碼,即可以作爲決定性因素的屬性,候選碼可以 → 所有的值,通俗地講就是隻能出現在箭頭的前面,不能出現在後面。

那這裏A、B、D、F四個屬性肯定是不行了,只有 C和E了,發現 CE 之間沒有依賴關係,並且CE→ABCDEF,所以CE就是候選碼。

第二問:
我們來看一下有沒有部分依賴,大家可以先自己想一下什麼是部分依賴。

這裏主鍵不是兩個嗎?我們要找的就是哪一個屬性只依賴於其中的一個主鍵,也就是隻依賴於 C 或者 E ,可以看到 B 和 D 都是部分依賴,同時 B 和 A 是傳遞依賴,就等同於 C→A,所以 A 也是 部分依賴於 C 。那他肯定就不符合 2NF 了,那最多就是 1NF 了。

第三問:
首先分解爲 2NF:模仿第一道題題目,把那個主鍵的單獨拿出來:R3(C,E,F)R1(E,D)R2(C,B,A),區分的依據就是看看有沒有依賴關係,有依賴關係就放一起。

然後我們化成 3NF ,就是去掉傳遞依賴,發現 R2 是傳遞依賴,所以把他化成R21(C,B)R22(B,A),這樣就有 4 個關係了,他們都是 3NF 模式的。

這道題就做完了。

例3

設有關係模式R(A,B,C,D,E),其函數依賴集爲F={A→B,CE→A,E→D}

請回答如下問題:

  • (1)指出 R 的所有候選碼,並說明理由;
  • (2)R 最高屬於第幾範式(在1NF~3NF範圍內),爲什麼?
  • (3)將 R 分解到 3NF。

1、候選碼:CE,因爲CE→ABCDE
2、可以看到 D 只依賴於 E,但是主鍵是 CE,所以 D 是部分依賴於 CE,那麼最高就是 1NF 了。
3、R1={C,E,A},R2={E,D},R3={A,B}

例4

設有一個記錄各個球隊隊員每場比賽進球數的關係模式
R(隊員編號,比賽場次,進球數,球隊名,隊長名)

如果規定,每個隊員只能屬於一個球隊,每個球隊只有一個隊長。
(1)試寫出關係模式 R 的基本函數依賴和主碼。
(2)說明 R 不是 2NF 模式的理由,並把 R 分解成 2NF 。
(3)進而將 R 分解成 3NF ,並說明理由。

這題就是把上面的 ABCD 變成真實的事物了,一起來看一下:

首先每一個隊員對應一個球隊:隊員編號→球隊名
然後每一個球隊對應一個隊長:球隊名→隊長名
進球數肯定是統計的某一個場次的某一個球員的進球數,所以球員和比賽場次對應進球數:(隊員編號,比賽場次)→進球數

根據我們的經驗,主鍵肯定是那個兩個的了對吧。

所以答案是:

關係模式R的基本函數依賴F如下
F = { 隊員編號→球隊名,球隊名→隊長名,(隊員編號,比賽場次)→進球數 }
其主鍵爲(隊員編號,比賽場次)。

第二問,他不是 2NF 因爲球隊名部分依賴於主鍵,可以分解爲:

R1={隊員編號,球隊名,隊長名}
R2={球隊名,比賽場次,進球數}

相信大家都已經猜到第三問了。

第三問:不是 3NF ,因爲有傳遞依賴。

可以化爲:

R11={隊員編號,球隊名},R12={球隊名,隊長名}

將 R 分解爲 R11,R12 後均爲 3NF 的關係模式。

這種題目期末必考,所以還是需要掌握的,但是這些題目僅僅還是入門,只是簡單的總結了一下這類題的解題方法,想更深入的理解關係的函數依賴還是要看書。

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