官术网_书友最值得收藏!

3.1.2 函數(shù)依賴和多值依賴

1.函數(shù)依賴

函數(shù)依賴反映了數(shù)據(jù)之間的內(nèi)部聯(lián)系,它是進(jìn)行關(guān)系分解時(shí)的指導(dǎo)和依據(jù),也是本章的討論中心。

為了方便起見,我們假設(shè)R(A1,A2,A3,……,An)是一個(gè)關(guān)系模型,U={A1,A2,A3,……,An{是R的所有屬性集合,X、Y和Z分別表示R中的屬性子集。

【定義1】若對(duì)于R中的X的任何一個(gè)具體值,Y僅有唯一的具體值與之對(duì)應(yīng),則稱R的屬性Y函數(shù)依賴于屬性X,記作X→Y, X稱為決定因素。

如果X→Y,且Y不是X的子集,則稱X→Y是非平凡的函數(shù)依賴。我們討論的都是非平凡的函數(shù)依賴。

例如,在學(xué)生(學(xué)號(hào),姓名,性別,系號(hào),系負(fù)責(zé)人,課程名,成績(jī))這一關(guān)系中,{學(xué)號(hào){→{姓名{,{系號(hào){→{系負(fù)責(zé)人{,{學(xué)號(hào),課程名{→{成績(jī){。

【定義2】在R中,如果屬性集Y函數(shù)依賴于屬性集X,且不與X的任何真子集函數(shù)依賴,則稱Y完全函數(shù)依賴于X,記】否則Y部分函數(shù)依賴于X,記上例所述的學(xué)生關(guān)系中,屬性“成績(jī)”完全函數(shù)依賴于屬性集{學(xué)號(hào),課程名{,而屬性“姓名”則部分函數(shù)依賴于屬性集{學(xué)號(hào),課程名{。

【定義3】在R中,對(duì)于屬性子集X、Y、Z,若

則稱Z對(duì)X傳遞函

數(shù)依賴,記設(shè)有一個(gè)“配件-供應(yīng)商-庫(kù)存”關(guān)系如下:

配件-供應(yīng)商-庫(kù)存(配件編號(hào),配件名稱,規(guī)格,供應(yīng)商名稱,供應(yīng)商地址,價(jià)格,庫(kù)存量,庫(kù)存占用資金)

在該關(guān)系中,{配件編號(hào),供應(yīng)商名稱{是關(guān)系的主關(guān)鍵字。因?yàn)榕浼幪?hào)能唯一確定一種配件的名稱及其規(guī)格,所以屬性“配件名稱”“規(guī)格”部分函數(shù)依賴于主關(guān)鍵字{配件編號(hào),供應(yīng)商名稱{;由于一種配件可以由多家供應(yīng)商供貨,而不同的供應(yīng)商所提供的價(jià)格是不一樣的,所以只有知道了配件編號(hào)和供應(yīng)商名稱才能確定配件價(jià)格,因此,“價(jià)格”完全函數(shù)依賴于主關(guān)鍵字{配件編號(hào),供應(yīng)商名稱{。同樣,“庫(kù)存量”完全函數(shù)依賴于主關(guān)鍵字{配件編號(hào),供應(yīng)商名稱{。

另外,“庫(kù)存占用資金”等于“價(jià)格”與“庫(kù)存量”的乘積,所以“庫(kù)存占用資金”函數(shù)依賴于價(jià)格和庫(kù)存量,這樣“庫(kù)存占用資金”則傳遞函數(shù)依賴于{配件編號(hào),供應(yīng)商名稱{這個(gè)主關(guān)鍵字。

2.關(guān)鍵字

前面已經(jīng)介紹過“關(guān)鍵字”的概念,介紹了函數(shù)依賴的概念后,我們就可以給“關(guān)鍵字”進(jìn)行精確的定義。

(1)候選關(guān)鍵字(候選碼)。

【定義4】在R中,設(shè)K是U的屬性或?qū)傩约稀H?img alt="" class="paralog" src="https://epubservercos.yuewen.com/CAA74B/15279430004147506/epubprivate/OEBPS/Images/figure_0051_0023.jpg?sign=1752483914-5fs3iPbMYehlHrisT3U7ATZ8eGFE7bZA-0-b6f4bfd281971fbc9bfd9e4bdd49be9c">則稱K是關(guān)系R的一個(gè)候選關(guān)鍵字。若R中有一個(gè)以上的關(guān)鍵字,則選定其中一個(gè)作為主關(guān)鍵字(主碼),如果K是屬性集合,則稱為組合關(guān)鍵字或合成關(guān)鍵字。主關(guān)鍵字可用下劃線標(biāo)出。

包含在任意一個(gè)候選關(guān)鍵字中的屬性,稱為主屬性。不包含在任何候選關(guān)鍵字中的屬性,稱為非主屬性。

在極端情況下,若關(guān)系的全部屬性作為關(guān)鍵字,則稱為完全關(guān)鍵字。此時(shí)關(guān)系中沒有非主屬性。

候選關(guān)鍵字具有標(biāo)識(shí)的唯一性和無冗余性兩個(gè)性質(zhì)。

①標(biāo)識(shí)的唯一性:對(duì)于R中的每一元組,K的值確定后,該元組就確定了。

②無冗余性:當(dāng)K是屬性集合時(shí),K的任何一個(gè)部分都不能標(biāo)識(shí)該元組。

(2)外關(guān)鍵字(外碼)。

【定義5】在關(guān)系R中,若屬性或?qū)傩约蟈不是R的關(guān)鍵字,但X是其他關(guān)系中的關(guān)鍵字,則稱X是關(guān)系R的外關(guān)鍵字或外碼。

主關(guān)鍵字和外關(guān)鍵字提供了表示關(guān)系之間聯(lián)系的手段。

設(shè)有“職工”關(guān)系如下:

職工(職工號(hào),職工姓名,年齡,部門編號(hào))

設(shè)有“部門”關(guān)系如下:

部門(部門編號(hào),部門名稱,部門負(fù)責(zé)人)

在“職工”關(guān)系中,“部門編號(hào)”不是它的關(guān)鍵字,但“部門編號(hào)”是“部門”關(guān)系的主關(guān)鍵字,所以,“部門編號(hào)”是“職工”關(guān)系的外關(guān)鍵字。

3.多值依賴

屬性之間的關(guān)系中除了函數(shù)依賴,還有多值依賴。與函數(shù)依賴相比,多值依賴不太直觀,較難理解。關(guān)系模式中如果存在多值依賴,則和函數(shù)依賴一樣也會(huì)造成數(shù)據(jù)冗余,導(dǎo)致數(shù)據(jù)操作異常。

【定義6】在關(guān)系R中,X、Y、Z是屬性子集,且Z=U-X-Y,則多值依賴X→→Y成立當(dāng)且僅當(dāng)對(duì)R中給定的一對(duì)(X, Z)值有一組Y的值與之對(duì)應(yīng),這組值僅僅決定于X值而與Z值無關(guān)。

例如,某單位的供應(yīng)部門直接將各工程所需要的物資從供應(yīng)商的倉(cāng)庫(kù)發(fā)往工程所在地,為了規(guī)劃運(yùn)輸方案,我們可以定義以下的關(guān)系來存儲(chǔ)所有零件的可能的運(yùn)輸源和目的地。

運(yùn)輸(工程名稱,工程地址,物資名,供應(yīng)商名,供應(yīng)商地址)

這個(gè)關(guān)系模式的關(guān)鍵字為{物資名,工程名稱,供應(yīng)商名{,其中除了有函數(shù)依賴關(guān)系{工程名稱{→{工程地址{,{供應(yīng)商名{→{供應(yīng)商地址{,還有多值依賴{物資名{→→{工程名稱,工程地址{,{物資名{→→{供應(yīng)商名,供應(yīng)商地址{。因?yàn)檫@一關(guān)系中,一種物資可以被多個(gè)工程使用,與該物資由誰提供無關(guān);同樣,一種物資可以由多個(gè)供應(yīng)商提供,與哪些工程使用該物資無關(guān)。可以看出,由于多值依賴的存在,這個(gè)關(guān)系有冗余。

另外,很明顯,關(guān)系模式中至少有3個(gè)屬性才有可能存在多值依賴。函數(shù)依賴可以看成是多值依賴的一種特殊情況,即函數(shù)依賴一定是多值依賴;而多值依賴是函數(shù)依賴的概括,即存在多值依賴的關(guān)系時(shí),不一定存在函數(shù)依賴關(guān)系。

主站蜘蛛池模板: 农安县| 定襄县| 思南县| 隆昌县| 平谷区| 东源县| 开江县| 永清县| 衡山县| 维西| 巴东县| 岳阳县| 丹阳市| 沾化县| 高淳县| 夏津县| 临桂县| 柳河县| 广平县| 醴陵市| 黄平县| 如东县| 雅安市| 古蔺县| 云南省| 拜城县| 乡宁县| 武宁县| 仁寿县| 石阡县| 鲁甸县| 遂宁市| 宁武县| 正安县| 武安市| 开封市| 宕昌县| 渑池县| 铁力市| 乐至县| 静海县|