1. 程式人生 > >通俗地理解資料庫三個正規化

通俗地理解資料庫三個正規化

通俗地理解三個正規化,對於資料庫設計大有好處。在資料庫設計中,為了更好地應用三個正規化,就必須通俗地理解三個正規化(通俗地理解是夠用的理解,並不是最科學最準確的理解):

  第一正規化:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解;

  第二正規化:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;

  第三正規化:3NF是對欄位冗餘性的約束,即任何欄位不能由其他欄位派生出來,它要求欄位沒有冗餘。

  沒有冗餘的資料庫設計可以做到。但是,沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,就必須降低正規化標準,適當保留冗餘資料。具體做法是:在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。降低正規化就是增加欄位,允許冗餘。

        基本表及其欄位之間的關係, 應儘量滿足第三正規化。但是,滿足第三正規化的資料庫設計,往往不是最好的設計。為了提高資料庫的執行效率,常常需要降低正規化標準:適當增加冗餘,達到以空間換時間的目的。

  〖例2〗:有一張存放商品的基本表,如表1所示。“金額”這個欄位的存在,表明該表的設計不滿足第三正規化,因為“金額”可以由“單價”乘以“數量”得到,說明“金額”是冗餘欄位。但是,增加“金額”這個冗餘欄位,可以提高查詢統計的速度,這就是以空間換時間的作法。

  在Rose 2002中,規定列有兩種型別:資料列和計算列。“金額”這樣的列被稱為“計算列”,而“單價”和“數量”這樣的列被稱為“資料列”。

  表1 商品表的表結構

  商品名稱 商品型號 單價 數量 金額

  電視機 29吋 2,500 40 100,000

                                                                                                                           摘自"資料庫設計中的14個技巧"

                                                                                                                         作者:最初的夢想    出處:希賽社群

相關推薦

通俗理解資料庫正規化

通俗地理解三個正規化,對於資料庫設計大有好處。在資料庫設計中,為了更好地應用三個正規化,就必須通俗地理解三個正規化(通俗地理解是夠用的理解,並不是最科學最準確的理解):   第一正規化:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解;   第二正規化:2NF是對

資料庫正規化

Why one grouping of attributes into a relation schema may be better than another two levels we can discuss the goodness of relation schemas. logical(conc

關於MySql正規化理解

通俗語言表達三個正規化 第一正規化: 1.如果一個表有類似的或者意義相同的欄位,要把這樣的欄位消除(消除的方式是建立一個表) 2.為一組相關的資料建立一個數據表 3.表的每一項要有主鍵 第二正

自然語言處理 - 如何通俗理解TFIDF?

log 忘記 right 們的 提取 取出 tf-idf isp 總數 本博客屬個人學習筆記,如有疏漏,歡迎在評論留言指出~轉載請註明。 在自然語言處理中,TFIDF常常被人提及。很多材料都提及TFIDF中的“普遍重要性”,但很

java 使用MongoDB作為資料庫不同階段的操作記錄

一、前言 這是一個很蛋疼的問題,對於一個新人來說要使用MongoDB到專案中,而且是在自學的情況下。由於技術的不斷更新,新人無法知道在Internet上尋找到的技術是否是現在專案中最使用的,在這個問題上本人就很深有體會。繞得暈暈的,查詢到的資料有多個版本,下面

如何理解資料庫表之間的聯絡

    ## 一對多: 1. 應用場景:比如文章和作者之間的關係。一個文章只能由一個作者編寫,但是一個作者可以寫多篇文章。文章和作者之間的關係就是典型的多對一的關係。 2. 實現方式:一對多或者多對一,都是通過`ForeignKey`來實現的。還是以文章和作者的案例進行講解。 &

深度學習筆記(一):影象理解層次

deep learning 簡稱DL,小編剛接觸計算機視覺利用深度學習進行影象處理,先普及一下對影象進行處理的三個層次。 一是分類(classification) 即是將影象結構化為某一類別的資訊,用事先確定好的類別(string)或例項ID來描述圖片。其中ImageNe

資料庫正規化

第一正規化(1NF) 屬性的不可再分特性:稱為關係的第一正規化。 舉剛才的例子: 一個家庭中有丈夫,妻子,子女,這些屬性對於這個表來說都是不可再分的了。 概念:也就是說要求屬性具有原子性~ 不可再分解! 資料庫表中的每一列都是不可分割的基本資料項,

java資料結構與演算法之遞迴思維(讓我們更通俗理解遞迴)

關聯文章:   本篇是資料結構與演算法的第6篇,從這篇種我們將深入瞭解遞迴演算法,這可能是一篇分水嶺的博文,因為只有在理解遞迴的基礎上,我們才可能更輕鬆地學習樹的資料結構,實際上資料結構系列書籍中遞歸併沒有講得特別通俗易懂,博主目前看過的書籍中分析遞迴

簡單通俗理解Hash雜湊儲存

先來了解一下Hash的基本思路: 設要儲存物件的個數為num, 那麼我們就用len個記憶體單元來儲存它們(len>=num); 以每個物件ki的關鍵字為自變數,用一個函式h(ki)來映射出ki的記憶體地址,也就是ki的下標,將ki物件的元素內容全部存入這個地址中就行了

學併發程式設計,透徹理解核心是關鍵

寫在前面 上一篇文章這次走進併發的世界,請不要錯過 給大家帶了併發程式設計的開胃菜,接下來我們逐步上正餐,在吃正餐之前,我還要引用那首詩詞: 「橫看成嶺側成峰,遠近高低各不同」,遠看看輪廓,近看看細節,不斷切換思維或視角來學習 遠看併發,併發程式設計可以抽象成三個核心問題: 分工、同步/協作、互斥 如果你

【高併發】學好併發程式設計,關鍵是要理解核心問題

寫在前面 寫【高併發專題】有一段時間了,一些讀者朋友留言說,併發程式設計很難,學習了很多的知識,但是在實際工作中卻無從下手。對於一個線上產生的併發問題,又不知產生這個問題的原因究竟是什麼。對於併發程式設計,感覺上似乎是掌握了,但是真正用起來卻不是那麼回事! 其實,造成這種現象的本質原因就是沒有透徹的理解併發程

通俗理解面向服務的架構(SOA)以及微服務之間的關係

**SOA是一種軟體的應用架構方法,它基於面向物件,但又不是面向物件,整體上是面向服務的架構。SOA由精確的服務定義、鬆散的構件服務組成,以及業務流程呼叫等多個方面形成的一整套架構方法。 這話是不是聽起來,讓人覺得有點暈,我們就細細品讀一下。** # SOA的架構思想 (一)**SOA架構是面向服務的,只不過

資料庫正規化簡單理解

資料庫設計當中三正規化是經常遇到的,如果實際專案資料庫設計中能達到第三正規化基本也就滿足要求了,那麼如何快速有效的理解三個正規化,同時應用於實際專案中去呢?首先看看標準定義的三個正規化:第一正規化(1NF)所謂第一正規化(1NF)是指資料庫表的每一列都是不可分割的基本資料項,

理解資料庫的幾種鍵和幾正規化

  在上學的時候,資料庫是一門讓我比較頭大的課程。記得當時教材上淨是一些晦澀難懂的語言,沒有充足的例項來幫助理解。前一陣子在看《網路遊戲伺服器端程式設計》的過程中,突然對資料庫正規化有了一些感覺,在此總結一下,分享給大家。作者純菜鳥,即使總結這些基礎知識也難免有錯,希望給位大牛不吝賜教,謝謝!   鍵(

資料庫正規化通俗說法,書上說的太蛋疼

簡單來說三句話: 1NF、列不可分; 2NF、不存在部分依賴; 3NF、不存在傳遞依賴。 解釋: 1NF:原子性,即欄位不可以再分。 2NF:唯一性,不可以把多種資料儲存在同一張表中,即一張表只

資料庫正規化的簡單理解

參考書籍:資料庫系統概論第四版-王珊、薩師煊資料庫正規化 正規化的級別       設計關係資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。       目前關係資料庫有六種正

教你寫Http框架(二)——樣例帶你深入理解AsyncTask

func implement oncreate 其它 層疊 worker dcl 例如 人員 這個標題大家不要奇怪,扯Http框架怎麽扯到AsyncTask去了,有兩個原因:首先是Http框架除了核心http理論外。其技術實現核心也是線程池 + 模板 +

資料庫設計一二正規化有何區別

範化是在識別資料庫中的資料元素、關係、以及定義所需的表和各表中的專案這些初始化工作之後的一個細化的過程。常見的正規化有1NF 2NF 3NF BCNF以及4NF。 1NF,第一正規化。第一正規化是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者

oracle資料庫啟動的階段

oracle資料庫啟動的三個階段:nomount,mount,open           nomount的啟動:需要引數檔案           mount的啟動:需要控制檔案 &nbs