1. 程式人生 > >資料庫正規化各個定義

資料庫正規化各個定義

實體:現實世界中客觀存在並可以被區別的事物。比如“一個學生”、“一本書”、“一門課”等等。值得強調的是這裡所說的“事物”不僅僅是看得見摸得著的“東西”,它也可以是虛擬的,比如說“老師與學校的關係”。

屬性:教科書上解釋為:“實體所具有的某一特性”,由此可見,屬性一開始是個邏輯概念,比如說,“性別”是“人”的一個屬性。在關係資料庫中,屬性又是個物理概念,屬性可以看作是“表的一列”。

元組:表中的一行就是一個元組。

分量:元組的某個屬性值。在一個關係資料庫中,它是一個操作原子,即關係資料庫在做任何操作的時候,屬性是“不可分的”。否則就不是關係資料庫了。

碼:表中可以唯一確定一個元組的某個屬性(或者屬性組),如果這樣的碼有不止一個,那麼大家都叫候選碼,我們從候選碼中挑一個出來做老大,它就叫主碼。

全碼:如果一個碼包含了所有的屬性,這個碼就是全碼。

主屬性:一個屬性只要在任何一個候選碼中出現過,這個屬性就是主屬性。

非主屬性:與上面相反,沒有在任何候選碼中出現過,這個屬性就是非主屬性。

外碼:一個屬性(或屬性組),它不是碼,但是它別的表的碼,它就是外碼。

第一正規化(1NF):屬性不可分。 第二正規化(2NF):符合1NF,並且,非主屬性完全依賴於碼。 第三正規化(3NF):符合2NF,並且,消除傳遞依賴 BC正規化(BCNF):符合3NF,並且,主屬性不依賴於主屬性 第四正規化(4NF):要求把同一表內的多對多關係刪除。 第五正規化(5NF):從最終結構重新建立原始結構。

主要區別3NF和BCNF, 一句話就是3NF是要滿足不存在非主屬性對候選碼的傳遞函式依賴, BCNF是要滿足不存在任一屬性(包含非主屬性和主屬性)對候選碼的傳遞函式依賴。