資料庫邏輯設計之三大正規化通俗理解,一看就懂 - 程式前沿

文章推薦指數: 80 %
投票人數:10人

一、第一正規化; 2. 二、第二正規化; 3. 三、第三正規化; 4. 四、反正規化化; 5. 五、正規化化設計和反正規化化設計的優缺點. 5.1. 5.1 正規化化 ... 程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具資料庫邏輯設計之三大正規化通俗理解,一看就懂,書上說的太晦澀2018.05.24資料庫原子性,唯一性,正規化,設計思想,資料庫HOME資料庫資料庫邏輯設計之三大正規化通俗理解,一看就懂,書上說的太晦澀Advertisement目錄1.一、第一正規化2.二、第二正規化3.三、第三正規化4.四、反正規化化5.五、正規化化設計和反正規化化設計的優缺點5.1.5.1正規化化5.2.5.2反正規化化一、第一正規化1NF是對屬性的原子性,要求屬性具有原子性,不可再分解;表:欄位1、欄位2(欄位2.1、欄位2.2)、欄位3……如學生(學號,姓名,性別,出生年月日),如果認為最後一列還可以再分成(出生年,出生月,出生日),它就不是一正規化了,否則就是;二、第二正規化2NF是對記錄的惟一性,要求記錄有惟一標識,即實體的惟一性,即不存在部分依賴;表:學號、課程號、姓名、學分;這個表明顯說明了兩個事務:學生資訊,課程資訊;由於非主鍵欄位必須依賴主鍵,這裡學分依賴課程號,姓名依賴與學號,所以不符合二正規化。

可能會存在問題:資料冗餘:,每條記錄都含有相同資訊;刪除異常:刪除所有學生成績,就把課程資訊全刪除了;插入異常:學生未選課,無法記錄進資料庫;更新異常:調整課程學分,所有行都調整。

正確做法:學生:Student(學號,姓名);課程:Course(課程號,學分);選課關係:StudentCourse(學號,課程號,成績)。

三、第三正規化3NF是對欄位的冗餘性,要求任何欄位不能由其他欄位派生出來,它要求欄位沒有冗餘,即不存在傳遞依賴;表:學號,姓名,年齡,學院名稱,學院電話因為存在依賴傳遞:(學號)→(學生)→(所在學院)→(學院電話)。

可能會存在問題:資料冗餘:有重複值;更新異常:有重複的冗餘資訊,修改時需要同時修改多條記錄,否則會出現資料不一致的情況。

正確做法:學生:(學號,姓名,年齡,所在學院);學院:(學院,電話)。

四、反正規化化一般說來,資料庫只需滿足第三正規化(3NF)就行了。

沒有冗餘的資料庫設計可以做到。

但是,沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,就必須降低正規化標準,適當保留冗餘資料。

具體做法是:在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。

降低正規化就是增加欄位,允許冗餘,達到以空間換時間的目的。

〖例〗:有一張存放商品的基本表,如表1所示。

“金額”這個欄位的存在,表明該表的設計不滿足第三正規化,因為“金額”可以由“單價”乘以“數量”得到,說明“金額”是冗餘欄位。

但是,增加“金額”這個冗餘欄位,可以提高查詢統計的速度,這就是以空間換時間的作法。

在Rose2002中,規定列有兩種型別:資料列和計算列。

“金額”這樣的列被稱為“計算列”,而“單價”和“數量”這樣的列被稱為“資料列”。

五、正規化化設計和反正規化化設計的優缺點5.1正規化化優點:缺點:5.2反正規化化優點:缺點:參考資料如下:1、通俗地理解資料庫三個正規化2、資料庫模型設計,第一正規化、第二正規化、第三正規化簡單例子理解3、資料庫三大正規化最簡單的解釋Advertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08Spark實戰搭建我們的Spark分佈式架構2019.12.08【機器學習】深度學習開發環境搭建2019.12.08AdvertisementAdvertisement



請為這篇文章評分?