三正規化的依賴,小小的知識,大大的學問

2021-09-06 11:15:47 字數 1754 閱讀 1368

三正規化使得資料庫的設計變得有據可依,資料庫的冗餘大大減少。然而,三正規化的定義,卻不那麼讓人省心,一堆文字外加數學知識,讓人著實有點小蒙。

雖然說完全按照三正規化設計資料庫並不可取,但是要想設計乙個好的資料庫,三正規化的知識是必不可少的。

要想更好理解三正規化的定義,那麼了解依賴是必不可少的,了解了這幾種依賴,那麼理解起來三正規化將會變的很容易。

首先,來說下最最基本的概念——函式依賴。

專業術語:若對於r(u)的任意兩個可能的關係r1、r2,若r1[x]=r2[x],則r1[y]=r2[y],或者若r1[x]不等於r2[x],則r1[y]不等於r2[y],稱x決定y,或者y依賴x。

其實很簡單,就是說知道x就可以知道y:

函式依賴的三種型別:

1、平凡與非平凡函式依賴

還是先看專業術語:若屬性x->y(決定),但是y不是x的子集(主鍵的一部分),則稱為x->y是非平凡依賴。否則是平凡依賴。(關於一些特性的東西不再多說)

1)平凡函式依賴

2)非平凡函式依賴

2、部分與完全函式依賴

專業術語:屬性y依賴屬性x中的部分屬性x『,也就是說只要乙個x』就可以決定y,那麼稱為y部分依賴x,否則成為完全依賴。

1)部分依賴

2)完全依賴

3、傳遞依賴、函式依賴

專業術語:若x->y和y->z,並且x不依賴y,則x->z,這種現象稱傳遞依賴。

若是x->y和y->z,並且y->x,則x->z是直接的函式依賴,而不是傳遞依賴。

1)傳遞依賴

2)函式依賴

以上幾種依賴的關係:

而第二正規化和第三正規化分別要求消除部分依賴和傳遞依賴,因為都用自增id或者uuid這樣的來當做主鍵,那麼非平凡函式依賴也可以消除,通過刪減,就成了這樣的圖:

而平凡函式依賴和完全函式依賴的圖又是一樣一樣的,所以最後就成了這樣的乙個圖:

這些圖從簡單演變到複雜,最後又刪減到最簡單,我個人感覺通過這些圖理解了三種依賴,那麼理解三正規化就不成什麼問題了,因為映像中,三正規化的概念貌似就是這幾個正規化來回倒騰。

最後在恭喜一下你順利的理解了資料庫三正規化~~

小小的疑問和小小的想法

1.事情交與你手,是否應該盡職盡責?大部分人說,你肯定要盡職盡責,少部分人會說這個可以不。我也一直認為應該盡職盡責,但是部分原因導致不會努力去做,如下所述 a 此事責任權是否在於你 如果我做這件事完全不用承擔任何責任,那我根本不會去努力去做,做了之後沒有任何感覺,做與不做的區別在於,少了參與做此事的...

小小的IP,大大的耦合,你痛過嗎?

什麼是耦合?耦合,是架構中,本來不相干的 模組 服務 系統因為某些原因聯絡在一起,各自獨立性差,影響則相互影響,變動則相互變動的一種架構狀態。感官上,怎麼發現系統中的耦合?作為技術人,每每在心中罵上下游,罵兄弟部門,這個東西跟我有什麼關係?為什麼需要我來配合做這個事情?明明不應該聯動,卻要被動配合,...

小小的感悟

假期或許真的是乙個人頹廢的開始 這個小假期著實讓我頹廢了三天!回想在沒有放假的時候,自己總是在很早就起來,並開始自己的工作 但是,這幾天卻是一種頹廢,看 睡覺 之前自己規劃著來做乙個小型的專案,主要是對檔案的一些操作 例如 動態讀取檔案裡面的資料 建立檔案 寫入資料等相關的檔案操作。或許規劃就是指導...