數據庫範式

範式是關係數據庫理論的基礎,也是咱們在設計數據庫結構過程當中所要遵循的規則和指導方法。目前有跡可尋的共有8種範式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。一般所用到的只是前三個範式,即:第一範式(1NF),第二範式(2NF),第三範式(3NF)。數據庫

首先看下一些基本概念
1、基礎概念
       要理解範式,首先必須對知道什麼是關係數據庫,若是你不知道,我能夠簡單的不能再簡單的說一下:關係數據庫就是用二維表來保存數據。表和表之間能夠……(省略10W字)。
而後你應該理解如下概念:spa

    • 實體:現實世界中客觀存在並能夠被區別的事物。好比「一個學生」、「一本書」、「一門課」等等。值得強調的是這裏所說的「事物」不單單是看得見摸得着的「東西」,它也能夠是虛擬的,不如說「老師與學校的關係」。
    • 屬性:教科書上解釋爲:「實體所具備的某一特性」,因而可知,屬性一開始是個邏輯概念,好比說,「性別」是「人」的一個屬性。在關係數據庫中,屬性又是個物理概念,屬性能夠看做是「表的一列」。
    • 元組:表中的一行就是一個元組。
    • 份量:元組的某個屬性值。在一個關係數據庫中,它是一個操做原子,即關係數據庫在作任何操做的時候,屬性是「不可分的」。不然就不是關係數據庫了。
    • 碼:表中能夠惟一肯定一個元組的某個屬性(或者屬性組),若是這樣的碼有不止一個,那麼你們都叫候選碼,咱們從候選碼中挑一個出來作老大,它就叫主碼。
    • 全碼:若是一個碼包含了全部的屬性,這個碼就是全碼。
    • 主屬性:一個屬性只要在任何一個候選碼中出現過,這個屬性就是主屬性。
    • 非主屬性:與上面相反,沒有在任何候選碼中出現過,這個屬性就是非主屬性。
    • 外碼:一個屬性(或屬性組),它不是碼,可是它別的表的碼,它就是外碼。

◆ 第一範式(1NF):強調的是列的原子性,即列不可以再分紅其餘幾列。設計

我想這個應該很好理解,就是一個列中不能重現出現屬性。好比電話這個列中,分座機和手機,你不能把他們放在同一個列中。blog

◆ 第二範式(2NF):首先是 1NF,另外包含兩部份內容,一是表必須有一個主鍵;二是沒有包含在主鍵中的列必須徹底依賴於主鍵,而不能只依賴於主鍵的一部分。 基礎

一我的同時訂幾個房間,就會出來一個訂單號多條數據,這樣子聯繫人都是重複的,就會形成數據冗餘。咱們應該把他拆開來。方法

◆ 第三範式(3NF):首先是 2NF,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。即不能存在:非主鍵列 A 依賴於非主鍵列 B,非主鍵列 B 依賴於主鍵的狀況。 im

好比Student表(學號,姓名,年齡,性別,所在院校,院校地址,院校電話)數據

這樣一個表結構,就存在上述關係。 學號--> 所在院校 --> (院校地址,院校電話)img

這樣的表結構,咱們應該拆開來,以下。co

(學號,姓名,年齡,性別,所在院校)--(所在院校,院校地址,院校電話)

第二範式(2NF)和第三範式(3NF)的概念很容易混淆,區分它們的關鍵點在於,2NF:非主鍵列是否徹底依賴於主鍵,仍是依賴於主鍵的一部分;3NF:非主鍵列是直接依賴於主鍵,仍是直接依賴於非主鍵列。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息