- 電子商務數據庫技術(第3版)
- 潘郁
- 1984字
- 2019-12-11 15:42:22
3.1.2 函數依賴和多值依賴
函數依賴反映了數據之間的內部聯系,它是進行關系分解時的指導和依據,也是本章的討論中心。
為了方便起見,我們假設R(A1,A2,A3,……,An)是一個關系模型,U={A1,A2,A3,……,An{是R的所有屬性集合,X、Y和Z分別表示R中的屬性子集。
如果X→Y,且Y不是X的子集,則稱X→Y是非平凡的函數依賴。我們討論的都是非平凡的函數依賴。
例如,在學生(學號,姓名,性別,系號,系負責人,課程名,成績)這一關系中,{學號{→{姓名{,{系號{→{系負責人{,{學號,課程名{→{成績{。
數依賴,記
設有一個“配件-供應商-庫存”關系如下:
在該關系中,{配件編號,供應商名稱{是關系的主關鍵字。因為配件編號能唯一確定一種配件的名稱及其規格,所以屬性“配件名稱”“規格”部分函數依賴于主關鍵字{配件編號,供應商名稱{;由于一種配件可以由多家供應商供貨,而不同的供應商所提供的價格是不一樣的,所以只有知道了配件編號和供應商名稱才能確定配件價格,因此,“價格”完全函數依賴于主關鍵字{配件編號,供應商名稱{。同樣,“庫存量”完全函數依賴于主關鍵字{配件編號,供應商名稱{。
另外,“庫存占用資金”等于“價格”與“庫存量”的乘積,所以“庫存占用資金”函數依賴于價格和庫存量,這樣“庫存占用資金”則傳遞函數依賴于{配件編號,供應商名稱{這個主關鍵字。
前面已經介紹過“關鍵字”的概念,介紹了函數依賴的概念后,我們就可以給“關鍵字”進行精確的定義。
(1)候選關鍵字(候選碼)。
包含在任意一個候選關鍵字中的屬性,稱為主屬性。不包含在任何候選關鍵字中的屬性,稱為非主屬性。
在極端情況下,若關系的全部屬性作為關鍵字,則稱為完全關鍵字。此時關系中沒有非主屬性。
候選關鍵字具有標識的唯一性和無冗余性兩個性質。
①標識的唯一性:對于R中的每一元組,K的值確定后,該元組就確定了。
②無冗余性:當K是屬性集合時,K的任何一個部分都不能標識該元組。
(2)外關鍵字(外碼)。
主關鍵字和外關鍵字提供了表示關系之間聯系的手段。
設有“職工”關系如下:
設有“部門”關系如下:
在“職工”關系中,“部門編號”不是它的關鍵字,但“部門編號”是“部門”關系的主關鍵字,所以,“部門編號”是“職工”關系的外關鍵字。
屬性之間的關系中除了函數依賴,還有多值依賴。與函數依賴相比,多值依賴不太直觀,較難理解。關系模式中如果存在多值依賴,則和函數依賴一樣也會造成數據冗余,導致數據操作異常。
例如,某單位的供應部門直接將各工程所需要的物資從供應商的倉庫發往工程所在地,為了規劃運輸方案,我們可以定義以下的關系來存儲所有零件的可能的運輸源和目的地。
這個關系模式的關鍵字為{物資名,工程名稱,供應商名{,其中除了有函數依賴關系{工程名稱{→{工程地址{,{供應商名{→{供應商地址{,還有多值依賴{物資名{→→{工程名稱,工程地址{,{物資名{→→{供應商名,供應商地址{。因為這一關系中,一種物資可以被多個工程使用,與該物資由誰提供無關;同樣,一種物資可以由多個供應商提供,與哪些工程使用該物資無關。可以看出,由于多值依賴的存在,這個關系有冗余。
另外,很明顯,關系模式中至少有3個屬性才有可能存在多值依賴。函數依賴可以看成是多值依賴的一種特殊情況,即函數依賴一定是多值依賴;而多值依賴是函數依賴的概括,即存在多值依賴的關系時,不一定存在函數依賴關系。