資料庫 函式依賴

2021-10-05 17:26:27 字數 1930 閱讀 3514

用處:指導關係模型的設計,規範以及優化

非原子 --> 儲存複雜,資料冗餘

改進:1nf

處理:復合屬性:拆分成多個屬性

多值屬性:建立新的一張表(eg. 乙個人有多個手機號)

單值對映

碼是一種特殊的fd:

比如超碼:可以唯一標識乙個元組(sk -> r)

候選碼(最小超碼):ck -> r 且 不存在ck的子集可以 -> r

fd的作用:可以檢測某個關係例項在某個fd下是否合法

例項r(值)滿足f,不代表模式r(型)滿足f (要基於r的語義):

trivial fd: 我決定我自己: a -> a, ab -> a …

候選碼就是完全函式依賴(最小屬性集, 主屬性)

超碼是部分函式依賴(存在子集同樣可以函式決定,存在非受控冗餘)

f的完全集:f+ (包含所有被邏輯蘊含的fd)

自反律: trivial fd

增補率:兩側同增不影響

傳遞率:a -> b; b -> c ==》 a -> c

增加:合併律:a -> b; a -> c ==》 a -> bc

分解律:a ->bc ==》 a -> b; a -> c

偽傳遞律:a -> b; bc -> d; ==》 ac -> d

先用自反律,增補律

再找傳遞律

直到f+不再變化

set(n) 有 2n個子集 ==》 fd共有2n * 2n個可能的函式依賴

plan 1: 求出f+,在f+中檢查是否有fd = α -> r

(開銷大!)

plan 2: 求α+ :在函式依賴集f的約束下,所有由α能函式決定的屬性集合

求出這個集合,看是否 == r

遍歷f, 對每個α的產生式,將右部加入α+集合

直到α+集合不在變化

dbms要檢查f約束,若f很大,開銷就變大,所以要找到等價的且盡可能小的f

【注】什麼是等價呢,兩個函式依賴集f, g 若f+ == g+,則f於g等價

fc : 與f等價的「極小」函式依賴集

規則:對每條fd

不包含無關fd(冗餘 -> 即去掉該fd以後無法等價),且不含多餘屬性

左部唯一(合併律)

留坑要求:

不丟屬性(所有子集屬性合起來 == r)

無損連線(lossless join)

保持依賴

沒有冗餘

模式分解是對於乙個模式的分解是多種多樣的,但是分解後產生的模式應與原模式等價。

模式分解的三個定義

人們從不同的角度去觀察問題,對「等價」的概念形成了三種不同的定義:

·分解具有「無損連線性」(lossless join)。

·分解要「保持函式依賴」(preserve dependency)。

·分解既要「保持函式依賴」,又要具有「無損連線性」。

這三個定義是實行分解的三條不同的準則。按照不同的分解準則,模式所能達到的分離程度各不相同,各種正規化就是對分離程度的測度。

分解應保證:

屬性合集是全集

無損連線:nature join起來是原關係模式(但是inner join開銷大:可以通過判斷所有ri的公共屬性是否可以函式決定其中乙個ri)

保持依賴:ri的fi是f+的子集,且僅包含ri的屬性((f1 ∪ … ∪ fn)+ = f+)

判斷一條fd: α -> β 是否在分解後得到保持:

要 α 出發:不斷 求 (result ∩ ri)+ ∩ ri 如果不為空加入 result

(假設fd被分解為fd1, fd2 … fdn(每個子關係都有fd的一部分,合起來是整個fd)通過上述演算法,如果對所有子關係不斷計算closure最終結果是 β 說明fd被儲存下來了(可以合體))

資料庫函式依賴

關聯式資料庫設計理論的核心是資料間的函式依賴,衡量的標準是關係規範化的程度及分解的無損連線和保持函式依賴性。函式依賴研究的是乙個關係中屬性之間存在的依賴關係,它是根據現實世界中資料項之間存在的語義通過觀察和分析得出的結果,是資料內在的性質,是一種語義範疇的概念。一 函式依賴 functional d...

資料庫函式依賴

一 函式依賴 functional dependency 的概念 資料依賴的一種,它反映屬性或屬性組之間相依存,互相制約的關係,即反映現實世界的約束關係。二 定義 設r u 是屬性u上的乙個關係模式,x和y均為u 的子集,r為r的任一關係,如果對於r中的任意兩個元組u,v,只要有u x v x 就有...

資料庫函式依賴

資料庫函式依賴 一 函式依賴 functional dependency 的概念資料依賴的一種,它反映屬性或屬性組之間相依存,互相制約的關係,即反映現實世界的約束關係。二 定義設r u 是屬性 u上的乙個關係模式,x和 y均為u 的子集,r為 r的任一關係,如果對於 r中的任意兩個元組u,v,只要有...