中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

什么是標準化?1NF、2NF、3NF、BCNF數(shù)據(jù)庫示例

發(fā)布于:2021-01-27 10:03:09

0

2967

0

數(shù)據(jù)庫 設計技術 規(guī)范化

什么是標準化?

規(guī)范化是一種數(shù)據(jù)庫設計技術,可減少數(shù)據(jù)冗余,消除插入、更新和刪除異常等不需要的特征。規(guī)范化規(guī)則將較大的表劃分為較小的表,并使用關系將它們鏈接起來。SQL規(guī)范化的目的是消除冗余(重復)數(shù)據(jù),保證數(shù)據(jù)的邏輯存儲。

關系模型的發(fā)明者Edgar Codd通過引入第一范式提出了數(shù)據(jù)規(guī)范化理論,并繼續(xù)用第二范式和第三范式擴展了該理論。后來,他加入了雷蒙德F博伊斯,發(fā)展了博伊斯Codd范式理論。

數(shù)據(jù)庫范式

這里是一個范式列表

  • 1NF(第一范式)

  • 2NF(第二范式)

  • 3NF(第三范式)

  • BCNF(Boyce Codd范式)

  • 4NF(第四范式)

  • 5NF(第五范式)

  • 6NF(第六范式)

sqlserver中的數(shù)據(jù)規(guī)范化理論仍在進一步發(fā)展中。例如,甚至對6th范式也有討論,但在大多數(shù)實際應用中,3rd范式的歸一化效果最好。SQL規(guī)范化理論的發(fā)展如下所示:

{xunruicms_img_title}

數(shù)據(jù)庫規(guī)范化示例

可以通過案例研究很容易理解。假設,一個視頻庫維護著一個出租電影的數(shù)據(jù)庫。在數(shù)據(jù)庫中沒有任何規(guī)范化,所有信息都存儲在一個表中,如下所示。讓我們了解數(shù)據(jù)庫中的表規(guī)范化示例:

什么是規(guī)范化? 1NF,2NF,3NF和BCNF以及示例

這里您可以看到列有多個值。現(xiàn)在讓我們進入第一范式:

1NF(第一范式)規(guī)則

  • 每個表單元格應包含一個值。

  • 每個記錄都必須是唯一的。

1NF示例

What is Normalization? 1NF, 2NF, 3NF & BCNF with Examples

在繼續(xù)之前,讓我們先了解幾件事。

什么是鑰匙?

key是用于唯一標識表中記錄的值。鍵可以是單列,也可以是多列的組合

注:表中不用于唯一標識記錄的列稱為非鍵列。

什么是主鍵?

什么是規(guī)范化? 1NF,2NF,3NF和BCNF以及示例

primary是用于唯一標識數(shù)據(jù)庫記錄的單列值。

它具有以下屬性

  • 主鍵不能為NULL。

  • 主鍵值必須是唯一的。

  • 主鍵值應很少更改。

  • 插入新記錄時必須為主鍵指定值。

什么是復合鍵?

復合鍵是由多列組成的主鍵,用于唯一標識記錄。

在我們的數(shù)據(jù)庫里,我們有兩個叫羅伯特·菲爾的人,但他們住在不同的地方。

什么是規(guī)范化? 1NF,2NF,3NF和BCNF以及示例

因此,我們需要全名和地址來唯一地標識記錄。這是一個復合鍵。

讓我們進入第二范式2NF

2NF(第二范式)規(guī)則

  • 規(guī)則1-在1NF中。

  • 規(guī)則2-單列主鍵。

很明顯,除非我們對上面的表進行分區(qū),否則我們無法將我們的簡單數(shù)據(jù)庫變成2nd規(guī)范化形式。

我們把1NF表分為兩個表,即。表1和表2。表1包含成員信息。表2包含了關于電影租賃的信息。

我們引入了一個名為Membershipu id的新列,它是表1的主鍵。在表1中,可以使用成員身份id唯一地標識記錄。

數(shù)據(jù)庫-外鍵

在表2中,Membership_ID是外鍵。

外鍵引用另一個表的主鍵!它有助于連接您的表。

  • 外鍵可以具有與其主鍵不同的名稱。

  • 它確保一個表中的行在另一表中具有對應的行。

  • 與主鍵不同,它們不必唯一。大多數(shù)時候他們不是。

  • 即使主鍵不能,外鍵也可以為空 。   

什么是規(guī)范化? 1NF,2NF,3NF和BCNF以及示例

為什么需要外鍵?

假設,新手在表B中插入一條記錄,例如:

什么是規(guī)范化? 1NF,2NF,3NF和BCNF以及示例

只能將存在于父表中唯一鍵中的值插入到外鍵中。這有助于參照完整性。

通過將表2中的成員身份id聲明為表1中成員身份id的外鍵,可以克服上述問題。

現(xiàn)在,如果有人試圖在父表中不存在的成員身份id字段中插入一個值,將顯示一個錯誤!

什么是傳遞函數(shù)依賴關系?

可傳遞函數(shù)依賴關系是指在更改非鍵列時,可能會導致其他任何非鍵列發(fā)生更改。

考慮一下表1。更改非鍵列的全名可能會更改稱呼語。

什么是規(guī)范化? 1NF,2NF,3NF和BCNF以及示例

讓我們進入3NF

3NF(第三范式)規(guī)則

  • 規(guī)則1-在2NF中

  • 規(guī)則2-沒有傳遞函數(shù)依賴關系

要將2NF表移到3NF,我們需要再次劃分表。

3NF示例

下面是SQL數(shù)據(jù)庫中的3NF示例:

什么是規(guī)范化? 1NF,2NF,3NF和BCNF以及示例

什么是規(guī)范化? 1NF,2NF,3NF和BCNF以及示例

什么是規(guī)范化? 1NF,2NF,3NF和BCNF以及示例

我們再次劃分了表,并創(chuàng)建了一個存儲稱呼語的新表。

沒有可傳遞的函數(shù)依賴關系,因此我們的表在3NF中。

在表3中稱呼語ID是主鍵,在表1中,稱呼ID對于表3中的主鍵是陌生的。

現(xiàn)在我們的小例子處于一個不能進一步分解以獲得更高規(guī)范化形式的級別。事實上,它已經(jīng)以更高的規(guī)范化形式出現(xiàn)了。在復雜的數(shù)據(jù)庫中,通常需要為進入下一級規(guī)范化數(shù)據(jù)而分別努力。

BCNF(Boyce Codd范式)

即使一個數(shù)據(jù)庫是3rd正態(tài)形式,如果它有多個候選鍵,仍然會導致異常。

有時BCNF也被稱為3.5范式。

4NF(第四范式)規(guī)則

如果沒有數(shù)據(jù)庫表實例包含描述相關實體的兩個或多個獨立的多值數(shù)據(jù),則它是4th范式。

5NF(第五范式)規(guī)則

一個表只有在4NF下才是5th范式,并且不能分解成任何數(shù)量的較小的表而不丟失數(shù)據(jù)。

6NF(第六范式)規(guī)則

提出的第六范式(6NF)尚未標準化,但已有一段時間被數(shù)據(jù)庫專家討論。希望在不久的將來,我們能對6th范式有一個明確的標準化定義。

這就是SQL規(guī)范化的全部內(nèi)容?。?!

摘要

  • 數(shù)據(jù)庫設計對于滿足企業(yè)系統(tǒng)數(shù)據(jù)需求的數(shù)據(jù)庫管理系統(tǒng)的成功實施至關重要。

  • DBMS中的規(guī)范化過程有助于產(chǎn)生經(jīng)濟高效且具有更好安全模型的數(shù)據(jù)庫系統(tǒng)。

  • 功能依賴性是一個非常重要的問題規(guī)范化數(shù)據(jù)處理的一個組成部分。

  • 大多數(shù)數(shù)據(jù)庫系統(tǒng)都是規(guī)范化的數(shù)據(jù)庫,直到第三種規(guī)范化形式。

  • 主鍵唯一標識的是表中的記錄,不能為空。

  • 外鍵有助于連接表并引用主鍵 。