數據庫 關系模式 學習筆記


模式是描述數據庫的一種方式,用於說明數據庫中有哪些表,表有那些列,通過這些結構,設計出一個符合功能需求的數據庫結構。

在設計中,往往需要考慮如何將實際的需求進行抽象轉化,盡量避免冗余和錯誤的關系模型模式,這就是數據庫邏輯設計問題。

問題主要有以下幾種,為了有效系統解決這些問題提出了規范化理論

首先第一個部分是數據依賴關系:定義見圖片

首先是函數依賴,函數依賴我覺得更合適應該是稱為映射依賴,這個依賴表現了數據庫中各個屬性間一對一聯系關系,一個屬性映射到另一組屬性的一種關系。

他強調這個映射需要像函數一樣,相同的自變量總是要映射到相同的應變量上。

 

完全或部分 函數依賴

解讀一下:

X是個集合,如果只有X中所有元素一起做映射,才能映射到Y上,取出子集的話就沒有這種映射關系了,說明是Y完全函數依賴X。(只有通過所有的X才能映射到Y)

反之如果X的子集也可以映射到Y,則是部分函數依賴

 

屬性滿足了函數依賴規則,可以根據對相互依賴之間這些屬性的關系進行一個分類。

"基於唯一屬性(主鍵)的完全依賴"

關系中的某些唯一的屬性或其組合可被整個關系所完全依賴

通過所有這些唯一的屬性,就可以映射到整個關系的一行

 

 

那么如果這個映射關系的應變量自變量不在一個表上那么稱之為外來鍵。

了解了函數依賴屬性后,接下來可以學習范式了

范式就是通過不同種類的函數依賴,屬性約束等構建起的規則,數據庫結構的設計必須要滿足這些規則,才具備范式的屬性

數據庫范式的設計:

1NF, Normal form

"所有屬性不可分"

2NF

"一個候選鍵連到所有非主鍵"

 第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數據庫表中的每個實例或行必須可以被惟一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的惟一標識。例如員工信息表中加上了員工編號(emp_id)列,因為每個員工的員工編號是惟一的,因此每個員工可以被惟一區分。這個惟一屬性列被稱為主關鍵字或主鍵、主碼。
        第二范式(2NF)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那么這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實現區分通常需要為表加上一個列,以存儲各個實例的惟一標識。簡而言之,第二范式就是屬性完全依賴於主鍵。

例子

尋找其中的所有函數依賴關系,然后將表格進行分解,分解成小的幾個表,從而滿足這一規則

 

3NF

"沒有依賴到非主屬性的傳遞函數依賴"

傳遞依賴就是在一個關系中,主鍵A 依賴 主鍵B,主鍵B依賴非主鍵C 同時 主鍵A也依賴非主鍵C。

依賴存在一個"短路"的情況

3NF就是不允許這種規則發生

簡而言之,第三范式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那么在的員工信息表中列出部門編號后就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三范式(3NF)也應該構建它,否則就會有大量的數據冗余。簡而言之,第三范式就是屬性不依賴於其它非主屬性。

 

分解方法

"分解再重組,將存在傳遞的組分離到不同的關系中去"

BCNF

"所有函數依賴關系中,自變量皆含有一個及以上的候選鍵"

碼即為主鍵

 

分解方法

 

 

 

 

多值依賴

在X值相等的情況下 可以導出不同的Y Z 值對

上面這個表格中,X可以導出不同的Y值,Y值之后也到導出了不同的Z值

 

但是更具體的定義是:

對R的任一個關系r,r在(X,Z)上的每個值對應一組Y的值,這組值僅僅決定於X值而與Z值無關。

反過來也可以 X Y對應, 而Z可以隨便的變化

 

把沒有直接聯系、但有間接的聯系稱為多值依賴的數據依賴。

如以下這個這個表,課程 數學僅能對應到教師 鄧軍,鄧軍這門課卻可以使用多種參考書,這是由鄧軍決定的,和數學無關,數學只能映射到鄧軍。

而且當且僅當映射到了鄧軍之后,鄧軍又能選各種不同(大於1)的參考書,這樣才滿足多值依賴,不然只是簡單的函數依賴(多值依賴的退化版)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM