mysql的正規化 Mysql正規化與反正規化的利弊

2021-10-18 11:46:35 字數 1221 閱讀 6109

mysql正規化與反正規化的利弊

一、三大正規化

第一正規化

1nf是對屬性的原子性,要求屬性具有原子性,不可再分解;

第一正規化是最基本的正規化。如果資料庫表中的所有字段值都是不可分解的原子值,就說明該資料庫表滿足了第一正規化。資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。簡而言之,第一正規化就是無重複的域。

第二正規化

2nf是對記錄的惟一性,要求記錄有惟一標識,即實體的惟一性,即不存在部分依賴;

滿足第二正規化必須先滿足第一正規化。第二正規化需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在乙個資料庫表中,乙個表中只能儲存一種資料,不可以把多種資料儲存在同一張資料庫表中。

第三正規化

3nf是對字段的冗餘性,要求任何字段不能由其他字段派生出來,它要求字段沒有冗餘,即不存在傳遞依賴;

首先是 2nf,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。即不能存在:非主鍵列 a 依賴於非主鍵列 b,非主鍵列 b 依賴於主鍵的情況。簡而言之,第三正規化(3nf)要求乙個關係中不包含已在其它關係已包含的非主關鍵字資訊。例如,存在乙個部門資訊表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等資訊。那麼在員工資訊表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的資訊再加入員工資訊表中。

正規化的利弊:

優點:正規化可以避免資料冗餘,減少資料庫的空間,減輕維護資料完整性的麻煩。

缺點:按照正規化的規範設計出來的表,等級越高的正規化設計出來的表越多。如第一正規化可能設計出來的表可能只有一張表而已,再按照第二正規化去設計這張表時就可能出來兩張或更多張表,如果再按第三正規化或更高的正規化去設計這張表會出現更多比第二正規化多 的表。表的數量越多,當我們去查詢一些資料,必然要去多表中去查詢資料,這樣查詢的時間要比在一張表中查詢中所用的時間要高很多。也就是說我們所用的正規化越高,對資料操作的效能越低。所以我們在利用正規化設計表的時候,要根據具體的需求再去權衡是否使用更高正規化去設計表。

二、反正規化

故名思義,跟正規化所要求的正好相反,在反正規化的設計模式,我們可以允許適當的資料的冗餘,用這個冗餘去取運算元據時間的縮短。也就是用空間來換取時間,把資料冗餘在多個表中,當查詢時可以減少或者是避免表之間的關聯。

反正規化的利弊:

優點:查詢時可以減少表的關聯;可以更好的進行索引優化;

mysql 反正規化 mysql 正規化和反正規化

第一正規化 1nf 強調的是列的原子性,即列不能夠再分成其他幾列。第二正規化 2nf 首先是 2nf,另外包含兩部分內容一是表必須有乙個主鍵 二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。第三正規化 3nf 首先是 2nf,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。...

mysql的正規化 Mysql中的正規化

目錄 正規化定義 第一正規化 第二正規化 第三正規化 反正規化正規化定義 正規化 normal format,是一種離散數學中的知識,是為了解決資料的儲存與優化的問題 儲存資料的儲存之後,凡是能夠通過關係尋找出來的資料,堅決不再重複儲存,終極目標是為了減少資料的冗餘。正規化背景 1 是為了解決資料冗...

mysql 正規化化 MySQL 正規化和反正規化

1.第一正規化 1nf 列不能再拆分 原子性,字段不可分 列的資訊 只要是關係型資料庫,就自動滿足1nf 2.第二正規化 2nf 主鍵唯一,且被依賴 在第一正規化基礎上建立的,即滿足第二正規化的必須先滿足第一正規化。要求db表中的每個例項或行必須可以被唯一區分,通常設計乙個主鍵來實現,其他屬性完全依...