資料庫中的正規化學習

2021-07-24 15:28:34 字數 1048 閱讀 3431

學生:學號(sno),姓名(sname),系名(sdept)

乙個學生只對應乙個學生,乙個學生只在乙個系學習。當學號確定時,姓名和系名也就確定了。

屬性中的這種依賴關係就類似於數學中的函式y=f(x),自變數x確定之後,相應的函式y也就唯一地確定了。

sname=f(son),sdept=f(son) son->sname,sno->sdept

教務:學號(sno),所在系(sdept),系主任姓名(mname),課程號(cno)

和成績(grade)

現實世界的已知事實(語義)告訴我們:

(1)乙個系有若干學生,但乙個學生只屬於乙個系。

(2)乙個系各有乙個正職負責人。

(3)乙個學生可以選修多門課程,每門課程有若干學生選修。

(4)每個學生學習每一門課程有乙個成績。

f= 如果只考慮函式依賴這種資料依賴,我們就得到乙個描述學生的關係模式:表6.1是某乙個時刻關係模式student的乙個例項,即資料表。

sno sdept mname cno grade

這個關係模式存在以下問題:

1.資料冗餘太大

每乙個系的系主任姓名重複出現,重複次數與該系所有學生的所有課程成績出現次數相同。浪費大量的儲存空間。

2.更新異常

由於資料冗餘,當更新資料庫中的資料時,系統需要付出很大的代價來維護資料庫的完整性,否則會面臨資料不一致的危險。比如,某系更換系主任後,必須修改與該系學生有關的每乙個元組。

3.插入異常

如果乙個系剛成立,尚無學生就無法把這個系及其系主任的資訊存入資料庫。

4.刪除異常

如果某個系的學生全部畢業了,在刪除該系學生資訊的同時,把這個系及其系主任的資訊也丟棄掉。

如果分成3個關係模式:

s(sno,sdept,sno->sdept):

sc(sno,cno,grade,(sno,cno)->grade)

dept(sdept,mname,sdept->mname)

這三個模式都不會發生插入異常,刪除異常的毛病,資料的冗餘也得到控制。

資料庫學習 正規化

正規化,即normal form,是我們在設計資料庫結構過程中所遵循的知道方法和規則,通常所用到的只是前三個正規化,即 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 1nf 強調的是列的原子性,即列不能夠再分成其他幾列。考慮這樣乙個表 聯絡人 姓名,性別,如果在實際場景中,乙個聯絡人有...

資料庫中的正規化

1nf 第一正規化是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能又重複的屬性。第一正規化的模式要求屬性值不可再 成更小部分,即屬性項不能是屬性組合或由組屬性組成。2nf 第二正規化,是在第一正規化的基礎上建立起來的。即滿足第二正規化必須先滿...

資料庫中的正規化

概念歸納 1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 解釋 1nf 原子性 字段不可再分,否則就不是關聯式資料庫 2nf 唯一性 乙個表只說明乙個事物 3nf 每列都與主鍵有直接關係,不存在傳遞依賴 不符合第一正規化的例子 關聯式資料庫中create不出這...