資料庫3nf
Ⅰ 什麼是資料庫三大範式
1
第一範式(1nf)
在任何一個關系資料庫中,第一範式(1nf)是對關系模式的基本要求,不滿足第一範式(1nf)的資料庫就不是關系資料庫。
所謂第一範式(1nf)是指資料庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或
者不能有重復的屬性。如果出現重復的屬性,就可能需要定義一個新的實體,新的實體由重復的屬性構成,新實體與原實體之間為一對多關系
。在第一範式(1nf)中表的每一行只包含一個實例的信息。例如,對於圖3-2
中的員工信息表,不能將員工信息都放在一列中顯示,也不能將
其中的兩列或多列在一列中顯示;員工信息表的每一行只表示一個員工的信息,一個員工的信息在表中只出現一次。簡而言之,第一範式就是
無重復的列。
2
第二範式(2nf)
第二範式(2nf)是在第一範式(1nf)的基礎上建立起來的,即滿足第二範式(2nf)必須先滿足第一範式(1nf)。第二範式(2nf)要
求資料庫表中的每個實例或行必須可以被唯一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。如圖3-2
員工信息
表中加上了員工編號(emp_id)列,因為每個員工的員工編號是唯一的,因此每個員工可以被唯一區分。這個唯一屬性列被稱為主關鍵字或主
鍵、主碼。
第二範式(2nf)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個
屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實現區分通常需要為表加上一個列,以
存儲各個實例的唯一標識。簡而言之,第二範式就是非主屬性非部分依賴於主關鍵字。
3
第三範式(3nf)
滿足第三範式(3nf)必須先滿足第二範式(2nf)。簡而言之,第三範式(3nf)要求一個資料庫表中不包含已在其它表中已包含的非主
關鍵字信息。例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那麼在圖3-2的員工信息表中
列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三範式(3nf)也
應該構建它,否則就會有大量的數據冗餘。簡而言之,第三範式就是屬性不依賴於其它非主屬性。
Ⅱ 如何區分和理解資料庫中的範式 比如1nf、2nf、3nf、bcnf、4nf、5nf
非三言二語說得清的.,第一範式(1NF)無重復的列
所謂第一範式(1NF)是指資料庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。如果出現重復的屬性,就可能需要定義一個新的實體,新的實體由重復的屬性構成,新實體與原實體之間為一對多關系。在第一範式(1NF)中表的每一行只包含一個實例的信息。簡而言之,第一範式就是無重復的列。 說明:在任何一個關系資料庫中,第一範式(1NF)是對關系模式的基本要求,不滿足第一範式(1NF)的資料庫就不是關系資料庫。
第二範式(2NF)屬性
完全依賴於主鍵[消除非主屬性對主碼的部分函數依賴] 第二範式(2NF)是在第一範式(1NF)的基礎上建立起來的,即滿足第二範式(2NF)必須先滿足第一範式(1NF)。第二範式(2NF)要求資料庫表中的每個實例或行必須可以被唯一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。例如員工信息表中加上了員工編號(emp_id)列,因為每個員工的員工編號是唯一的,因此每個員工可以被唯一區分。這個唯一屬性列被稱為主關鍵字或主鍵、主碼。 第二範式(2NF)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。簡而言之,第二範式就是屬性完全依賴於主鍵。
第三範式(3NF)屬性
不依賴於其它非主屬性[消除傳遞依賴] 滿足第三範式(3NF)必須先滿足第二範式(2NF)。簡而言之,第三範式(3NF)要求一個資料庫表中不包含已在其它表中已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那麼在的員工信息表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三範式(3NF)也應該構建它,否則就會有大量的數據冗餘。簡而言之,第三範式就是屬性不依賴於其它非主屬性。
編輯本段範式應用實例剖析
下面以一個學校的學生系統為例分析說明,這幾個範式的應用。首先第一範式(1NF):資料庫表中的欄位都是單一屬性的,不可再分。這個單一屬性由基本類型構成,包括整型、實數、字元型、邏輯型、日期型等。在當前的任何關系資料庫管理系統(DBMS)中,傻瓜也不可能做出不符合第一範式的資料庫,因為這些DBMS不允許你把資料庫表的一列再分成二列或多列。因此,你想在現有的DBMS中設計出不符合第一範式的資料庫都是不可能的。 首先我們確定一下要設計的內容包括那些。學號、學生姓名、年齡、性別、課程、課程學分、系別、學科成績,系辦地址、系辦電話等信息。為了簡單我們暫時只考慮這些欄位信息。我們對於這些信息,說關心的問題有如下幾個方面。 學生有那些基本信息 學生選了那些課,成績是什麼 每個課的學分是多少 學生屬於那個系,系的基本信息是什麼。
第二範式(2NF)實例分析
首先我們考慮,把所有這些信息放到一個表中(學號,學生姓名、年齡、性別、課程、課程學分、系別、學科成績,系辦地址、系辦電話)下面存在如下的依賴關系。 問題分析 因此不滿足第二範式的要求,會產生如下問題 數據冗餘: 同一門課程由n個學生選修,"學分"就重復n-1次;同一個學生選修了m門課程,姓名和年齡就重復了m-1次。 更新異常: 1)若調整了某門課程的學分,數據表中所有行的"學分"值都要更新,否則會出現同一門課程學分不同的情況。 2)假設要開設一門新的課程,暫時還沒有人選修。這樣,由於還沒有"學號"關鍵字,課程名稱和學分也無法記錄入資料庫。 刪除異常 : 假設一批學生已經完成課程的選修,這些選修記錄就應該從資料庫表中刪除。但是,與此同時,課程名稱和學分信息也被刪除了。很顯然,這也會導致插入異常。 解決方案 把選課關系表SelectCourse改為如下三個表: 學生:Student(學號,姓名, 年齡,性別,系別,系辦地址、系辦電話); 課程:Course(課程名稱, 學分); 選課關系:SelectCourse(學號, 課程名稱, 成績)。
第三範式(3NF)實例分析
接著看上面的學生表Student(學號,姓名, 年齡,性別,系別,系辦地址、系辦電話),關鍵字為單一關鍵字"學號",因為存在如下決定關系: (學號)→ (姓名, 年齡,性別,系別,系辦地址、系辦電話) 但是還存在下面的決定關系 (學號) → (所在學院)→(學院地點, 學院電話) 即存在非關鍵欄位"學院地點"、"學院電話"對關鍵欄位"學號"的傳遞函數依賴。 它也會存在數據冗餘、更新異常、插入異常和刪除異常的情況。 (數據的更新,刪除異常這里就不分析了,可以參照2.1.1進行分析) 根據第三範式把學生關系表分為如下兩個表就可以滿足第三範式了: 學生:(學號, 姓名, 年齡, 性別,系別); 系別:(系別, 系辦地址、系辦電話)。
總結
上面的資料庫表就是符合I,II,III範式的,消除了數據冗餘、更新異常、插入異常和刪除異常。
Ⅲ 資料庫 分解成3NF範式
1:
R((職工號,日期)->日營業額,職工號->部門名,部門名->經理)
候選碼:職工號,日期,部門名
2,因為R集合中存在傳遞函數依賴,會產生冗餘數據,所以不是3NF
3NF如下:
R1(職工號,日期,日營業額)
R2(職工號,部門名)
R3(部門名,部門經理)
Ⅳ 資料庫為什麼達到3NF就能保持函數依賴
構造資料庫必須遵循一定的規則在關系資料庫中這種規則就是範式範式是符合
某一種級別的關系模式的集合關系資料庫中的關系必須滿足一定的要求即滿足不同的
範式目前關系資料庫有六種範式第一範式1NF 第二範式2NF 第三範式3NF
第四範式4NF 第五範式5NF 和第六範式6NF 滿足最低要求的範式是第一
範式1NF 在第一範式的基礎上進一步滿足更多要求的稱為第二範式2NF 其餘
Ⅳ 【關系資料庫中任何一個二目關系屬於3NF嗎】
是的,任何一個二目關系是屬於3NF的。
相關介紹:
二目關系是說只有兩個屬性的表。證明它是3NF,從定義出發,首先證明它是2NF。要證明2NF,首先說明它是1NF。
並且在這個關系中,無論A->B,還是B->A,都能說明非主屬性完全函數依賴於候選鍵,因為是單個屬性做主鍵,證明它是2NF了,再說明,這兩個屬性的表不可能產專生傳遞依賴,因此是3NF。
(5)資料庫3nf擴展閱讀
3NF不但要能唯一地被主關鍵字所標識,而且它們之間還必須相互獨立,不存在其他的函數關系。也就是說,對於一個滿足2nd NF 的數據結構來說,表中有可能存在某些數據元素依賴於其他非關鍵字數據元素的現象,必須消除。
將第一範式,第二範式化為第三範式:
1、求出R的最小函數依賴集Fmin。
2、找出不在Fmin中出現的屬性,並將這些屬性從R中去掉,構成一個關系模式。
3、若Fmin中有一個函數依賴涉及R的全部屬性,則R不能分解。
4、否則,若Fmin中有X->A,則分解應包含{XA};若有X->A1,X->A2....X->An均屬於Fmin,則分解應包含{XA1A2...An}。
Ⅵ 資料庫知識什麼是1NF,2NF,3NF
1NF即第一範式,是指資料庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。
2NF即第二範式,是指每個表必須有且僅有一個數據元素為主關鍵字(Primary key),其他數據元素與主關鍵字一一對應。
3NF即第三範式,是指表中的所有數據元素不但要能唯一地被主關鍵字所標識,而且它們之間還必須相互獨立,不存在其他的函數關系。
(6)資料庫3nf擴展閱讀:
第二範式的規則是要求數據表裡的所有非主屬性都要和該數據表的主鍵有完全依賴關系;如果有哪些非主屬性只和主鍵的一部份有關的話,它就不符合第二範式。如果一個數據表的主鍵只有單一一個欄位的話,它就一定符合第二範式(前提是該數據表符合第一範式)。
如果出現重復的屬性,就可能需要定義一個新的實體,新的實體由重復的屬性構成,新實體與原實體之間為一對多關系。在第一範式1NF中表的每一行只包含一個實例的信息。
參考資料來源:
網路——範式
網路——1NF
網路——第二範式
網路——第三範式
Ⅶ BCNF與3NF之間有什麼區別
區別:
1、類別不同
3NF:第三範式
BCNF:巴斯-科德範式
2、內容不同
第三範式(3NF):滿足 2NF,任何非主屬性不依賴於其他非主屬性(消除 2NF 主屬性對碼的傳遞函數依賴)
鮑依斯-科得範式(BCNF):滿足 3NF,任何非主屬性不能對主鍵子集依賴(消除 3NF 主屬性對碼的部分和傳遞函數依賴)
3、包含條件不同
巴斯-科德範式(BCNF)是第三範式(3NF)的一個子集,即滿足巴斯-科德範式(BCNF)必須滿足第三範式(3NF)。
(7)資料庫3nf擴展閱讀:
資料庫其餘範式:
1、第一範式(1NF)
必須有主鍵,列不可分;資料庫表中的任何欄位都是單一屬性的,不可再分。
2、第二範式(2NF)
資料庫表中非關鍵欄位對任一候選關鍵欄位的,都不存在部分函數依賴。當一個表是復合主鍵時,非主鍵的欄位不依賴於部分主鍵(即必須依賴於全部的主鍵欄位。
資料庫範式目的原則:
規范化目的是使結構更合理,消除存儲異常,使數據冗餘盡量小,便於插入、刪除和更新。
遵從概念單一化「一事一地」原則,即一個關系模式描述一個實體或實體間的一種聯系。規范的實質就是概念的單一化。
最小冗餘的要求必須以分解後的資料庫能夠表達原來資料庫所有信息為前提來實現。其根本目標是節省存儲空問,避免數據不一致性,提高對關系的操作效率,同時滿足應用需求。
實際上,並不一定要求全部模式都達到BCNF不可,有時故意保留部分冗餘可能更方便數據查詢,尤其對於那些更新頻度不高,查詢頻度極高的資料庫系統更是如此。
Ⅷ 資料庫中3NF的含義
NF的意思是範式,3NF就是第三範式。
粗略而言資料庫分為三個範式。即:第一範式 第二範式 第三範式。
第三範式:第二範式的基礎上,不存在傳遞依賴。
所謂傳遞依賴是指:例如:數據表中存在欄位<學號,姓名,分數>組成,其中<學號>是主鍵,如果學生的姓名不重復的情況下,那麼就存在傳遞依賴。
(8)資料庫3nf擴展閱讀:
滿足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步滿足更多要求的稱為第二範式(2NF),其餘範式以次類推。一般說來,資料庫只需滿足第三範式(3NF)就行了。
在創建一個資料庫的過程中,范化是將其轉化為一些表的過程,這種方法可以使從資料庫得到的結果更加明確,這樣可能使資料庫產生重復數據,從而導致創建多餘的表。
范化是在識別資料庫中的數據元素、關系以及定義所需的表和各表中的項目等這些初始工作之後的一個細化的過程。
Ⅸ 資料庫是不是3NF
不是,班級和班主任出現重復冗餘數據,可以吧班級專門建張表,班主任建張表,通過外鍵關聯