什麼是DBMS中的多值依賴?
多值依賴 (MVD) 指的是表中存在一行或多行。這意味著在同一表中存在一行或多行其他行。多值依賴會阻止第四正規化。多值依賴涉及表中的至少三個屬性。
在DBMS中,它用符號“->->”表示。
X->Y 將X的一個值關聯到Y的一個值。
X->->Y(讀作X多決定Y)將X的一個值關聯到Y的多個值。
當X->->Y且X->->z時,其中Y和Z不依賴於彼此獨立時,就會發生非平凡MVD。非平凡MVD會產生冗餘。
我們以兩種不同的方式使用多值條件:
測試關係以確定它們在給定的實際和多值依賴關係安排下是否合法。
確定合法關係安排的限制。我們將只關注滿足給定實際和多值依賴關係安排的關係。
MVD 傳遞規則
如果A ->B成立,並且B ->C成立,則A ->B ->C成立。
示例
給定的FD集如下:
ISBN--> TITLE,PUBLISHER
ISBN,NO -->AUTHOR
PUBLISHER -->PU_URL
我們需要證明這條規則。考慮A=ISBN,B=PUBLISHER,C=PU_URL。要找到隱含的傳遞規則,請找到A+的覆蓋並計算。
現在從x={ISBN}開始
FD ISBN--> TITLE, PUBLISHER的LHS完全包含在當前屬性集x中。
透過FD RHS屬性集擴充套件x,得到x={ISBN,TITLE,PUBLISHER}
現在FD:PUBLISHER -->PU_URL適用
將FD的RHS屬性集新增到當前屬性集x中,得到x={ISBN,TITLE,PUBLISHER,PU_URL}
在這裡我們可以得出結論,ISBN-->PU_URL
第四正規化會導致多值依賴。如果關係處於Boyce-Codd正規化,則必須刪除多值依賴。
解釋 - 多值依賴是指如果表中存在依賴關係或關係,則一個值會發生多個依賴關係。
讓我們考慮以下示例。考慮下表:
id | 部門 | 班次 |
---|---|---|
1 | 編碼 | 白天 |
2 | 人力資源 | 白天 |
3 | 網路 | 晚上 |
在上表中,id 2有兩個部門人力資源和網路。以及班次時間白天和晚上。
當我們選擇id 2的詳細資訊時,它將生成如下表:
id | 部門 | 班次 |
---|---|---|
2 | 人力資源 | 白天 |
2 | 網路 | 晚上 |
2 | 人力資源 | 晚上 |
2 | 網路 | 白天 |
這意味著存在多值依賴。在此,部門和班次之間的關係毫無意義。
這可以透過刪除多值依賴來糾正,即將此資料分成兩個表,如下所示:
表1
id | 部門 |
---|---|
1 | 編碼 |
2 | 人力資源 |
2 | 網路 |
表2
id | 班次 |
---|---|
1 | 白天 |
2 | 白天 |
2 | 晚上 |
第四正規化用於刪除資料表中的多值依賴。
因此,第四正規化定義了多值依賴。