1. 程式人生 > >關係資料庫的幾種正規化(1NF,2NF,3NF,BCNF)

關係資料庫的幾種正規化(1NF,2NF,3NF,BCNF)

關係資料庫的正規化就是設計關係資料表的一種規範,不同正規化代表的不同的規範等級。

達到的等級越高,設計出的資料庫表就越合理,問題越少。否則就會出現重複資料(資料冗餘),插入、刪除、修改等異常。

要理解關係資料庫的正規化,首先需要弄清楚幾個概念。

1. 什麼是碼

2. 什麼是主屬性和非主屬性

3. 什麼函式依賴和部分函式依賴,設計時得明辨出依賴關係。

下面是知乎上一位老師給的解釋,本人覺得講得特別好,這裡直接給出連結。

相關推薦

正規化1NF2NF3NFBCNF

候選碼:集合(元組)中的屬性或屬性組,能唯一決定集合(元組)(可以子集亦可決定)。 EG: (A,B,C,D,E), 其函式依賴關係:F={ABC->DE,BC->D,D->E}。 其候選碼為:ABC。 而非BC的原因是:BC為候選碼不包括A,元組不完整

資料庫正規化1NF2NF3NF、BNCF

轉載:http://www.cnblogs.com/hi-bazinga/archive/2012/06/05/2536806.html,謝謝這位大神! 第一正規化:關係模式中,每個屬性不可再分。屬性原子性 第二正規化:非主屬性完全依賴於主屬性,即消除非主屬性對主屬性的

資料庫正規化1NF2NF3NF、BNCF

第一正規化:關係模式中,每個屬性不可再分。屬性原子性 第二正規化:非主屬性完全依賴於主屬性,即消除非主屬性對主屬性的部分函式依賴關係。 第三正規化:非主屬性對主屬性不存在傳遞函式依賴關係。 BNCF正規化:在第三正規化的基礎上,消除主屬性之間的部分函式依賴

關係資料庫正規化1NF2NF3NFBCNF

關係資料庫的正規化就是設計關係資料表的一種規範,不同正規化代表的不同的規範等級。 達到的等級越高,設計出的資料庫表就越合理,問題越少。否則就會出現重複資料(資料冗餘),插入、刪除、修改等異常。 要理解關係資料庫的正規化,首先需要弄清楚幾個概念。 1. 什麼是碼 2. 什麼是

資料庫正規化1NF2NF3NFBCNF

首先要明白”正規化(NF)”是什麼意思。按照教材中的定義,正規化是“符合某一種級別的關係模式的集合,表示一個關係內部各屬性之間的聯絡的合理化程度”。很晦澀吧?實際上你可以把它粗略地理解為一張資料表的表結構所符合的某種設計標準的級別。就像家裡裝修買建材,最環保的是

Java的物件PO,VO,DAO,BO,DTOPOJO

 一、PO:persistant object持久物件,可以看成是與資料庫中的表相對映的java物件。最簡單的PO就是對應資料庫中某個表中的一條記錄,多個記錄可以用PO的集合。PO中應該不包含任何對資料庫的操作。   二、VO:value object值物件。通常用於業務層之

正規化norm

0範數——向量中非0的元素的個數 無窮範數——向量中最大元素的絕對值 Nuclear Norm 矩陣的1範數: 矩陣的2範數: 矩陣的F範數: 矩陣的無窮範數: 向量範數: 轉自:matlab自帶help~

Python呼叫shell命令的方法在新程序中執行shell命令

有時候難免需要直接呼叫Shell命令來完成一些比較簡單的操作,比如mount一個檔案系統之類的。那麼我們使用Python如何呼叫Linux的Shell命令?下面來介紹幾種常用的方法: 1. os 模組 1.1. os模組的exec方法族 Python的exec系

分頁的方式邏輯分頁和物理分頁

/** *//** * TestPageResultSetDAO.java * * Copyright 2008. All Rights Reserved. */package com.cosmow.pageresultset.dao;import java.sql.Connection;import jav

Myeclipse學習總結9——MyEclipse2014安裝外掛的方式適用於Eclipse或MyEclipse其他版本

眾所周知MyEclipse是一個很強大的Java IDE,而且它有許多開源免費又好用的外掛,這些外掛給我們開發過程中帶來了許多方便。外掛具有針對性,例如,你如果做安卓開發,可能需要一個ADT(Android Development Tools)外掛;如果你是前端開發攻城師,那麼你很有可能喜歡用Aptana(

SpringBoot中資源初始化載入的方式看這一片就夠了

一、問題   在平時的業務模組開發過程中,難免會需要做一些全域性的任務、快取、執行緒等等的初始化工作,那麼如何解決這個問題呢?方法有多種,但具體又要怎麼選擇呢? 二、資源初始化 1、既然要做資源的初始化,那麼就需要了解一下springboot啟動過程(這裡大體說下啟動過程,詳細:https://www.cnb

資料庫】關於規範化的瞎扯:1NF2NF3NFBCNF

首先要理解,什麼是函式依賴、完全函式依賴、部分函式依賴、傳遞函式依賴、碼、候選碼、主碼、全碼、主屬性、非主屬性。碼(Key):關係中的一個屬性集合,其屬性值可以唯一標識關係中的每個元組。候選碼(Candidate key):若一個碼的任意一個真子集都不為碼時,稱其為候選碼。或

遠程通信的選擇RPCWebserviceRMIJMS的區別

抽象 接口 sent res 平臺 subscribe 支持 遠程服務 ava RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http協議,發送請求到服務器,等待服務器返回結果。這個請求包括一個參數集和一個文本集,通常形成

聊聊高並發十九理解並發編程的"性" -- 可見性有序性原子性

sock clas 關註 條件 infoq zed 應該 單獨 ssa 這篇的主題本應該放在最初的幾篇。討論的是並發編程最基礎的幾個核心概念。可是這幾個概念又牽扯到非常多的實際技術。比方Java內存模型。各種鎖的實現,volatile的實現。原子變量等等,每個都可以展開

頁面布局的方式靜態化布局流式布局自適應布局響應式布局彈性布局

情況下 sea 手機 窗口大小 media sys tps 差異 媒體 一、靜態布局(static layout)   即傳統Web設計,網頁上的所有元素的尺寸一律使用px作為單位。 1、布局特點   不管瀏覽器尺寸具體是多少,網頁布局始終按照最初寫代碼時的布局來顯示。常規

資料庫設計之規範化--------正規化詳解

資料庫的設計正規化是資料庫設計所需要滿足的規範,滿足這些規範的資料庫是簡潔的、結構明晰的,同時,不會發生插入(insert)、刪除(delete)和更新(update)操作異常。反之則是亂七八糟,不僅給資料庫的程式設計人員製造麻煩,而且面目可憎,可能儲存了大量不需要的冗餘資訊。  

js深拷貝的方案有更多意見的可以評論在下方我可以整理在一起

場景:物件content為 {}型別,將其拷貝到ctx中 方案一: let ctx = {}; for (let key in content) { ctx[key] = content[key]; } 方案二: 藉助lodash的cloneDeep方法

Vue.js學習筆記——請求資料的方式v-resourceaxios

一、 v-resource 1. 在搭建好腳手架之後,安裝v-resource ——npm/cnpm install v-resource --save 2. 在main.js中進行註冊               import VueResource from 'vu

逆元的求法擴充套件歐里得費馬小定理或尤拉定理特例打表等

乘法逆元 對於縮系中的元素,每個數a均有唯一的與之對應的乘法逆元x,使得ax≡1(mod n) 一個數有逆元的充分必要條件是gcd(a,n)=1,此時逆元唯一存在 逆元的含義:模n意義下,1個數a

android app -- 關於listview的用法複用不復用半複用解決item狀態改變的問題

1.從最基本的不復用開始,也就是在Adapter 的getView方法中不使用ViewHolder。 這樣做,也就是在listView上下滑動,被隱藏的項滑出來的時候,每次都重繪一次這一項,這樣的話