資料庫設計

2021-08-31 10:38:19 字數 1548 閱讀 6357

關聯式資料庫設計之時是要遵守一定的規則的。尤其是資料庫設計正規化

簡單介紹1nf(第一正規化),2nf(第二正規化),3nf(第三正規化),

第一正規化(1nf):在關係模式r中的每乙個具體關係r中,如果每個屬性值 都是不可再分的最小資料單位,則稱r是第一正規化的關係。

例:如職工號,姓名,**號碼組成乙個表(乙個人可能有乙個辦公室** 和乙個家裡**號碼) 規範成為1nf有三種方法:

一是重複儲存職工號和姓名。這樣,關鍵字只能是**號碼。

二是職工號為關鍵字,**號碼分為單位**和住宅**兩個屬性

三是職工號為關鍵字,但強制每條記錄只能有乙個**號碼。

以上三個方法,第一種方法最不可取,按實際情況選取後兩種情況。

第二正規化(2nf):如果關係模式r(u,f)中的所有非主屬性都完全依賴於任意乙個候選關鍵字,則稱關係r 是屬於第二正規化的。

例:選課關係 sci(sno,cno,grade,credit)其中sno為學號, cno為課程號,gradege 為成績,credit 為學分。 由以上

條件,關鍵字為組合關鍵字(sno,cno)

在應用中使用以上關係模式有以下問題:

a.資料冗餘,假設同一門課由40個學生選修,學分就 重複40次。

b.更新異常,若調整了某課程的學分,相應的元組credit值都要更新,有可能會出現同一門課學分不同。

c.插入異常,如計畫開新課,由於沒人選修,沒有學號關鍵字,只能等有人選修才能把課程和學分存入。

d.刪除異常,若學生已經結業,從當前資料庫刪除選修記錄。某些門課程新生尚未選修,則此門課程及學分記錄無法儲存。

原因:非關鍵字屬性credit僅函式依賴於cno,也就是credit部分依賴組合關鍵字(sno,cno)而不是完全依賴。

解決方法:分成兩個關係模式 sc1(sno,cno,grade),c2(cno,credit)。新關係包括兩個關係模式,它們之間通過scn中

的外關鍵字cno相聯絡,需要時再進行自然聯接,恢復了原來的關係

第三正規化(3nf):如果關係模式r(u,f)中的所有非主屬性對任何候選關鍵字都不存在傳遞信賴,則稱關係r是屬於第三正規化的。

例:如s1(sno,sname,dno,dname,location) 各屬性分別代表學號,

姓名,所在系,系名稱,系位址。

關鍵字sno決定各個屬性。由於是單個關鍵字,沒有部分依賴的問題,肯定是2nf。但這關係肯定有大量的冗餘,有關學生所在的幾個

屬性dno,dname,location將重複儲存,插入,刪除和修改時也將產生類似以上例的情況。

原因:關係中存在傳遞依賴造成的。即sno -> dno。 而dno -> sno卻不存在,dno -> location, 因此關鍵遼 sno 對 locatio

n 函式決定是通過傳遞依賴 sno -> location 實現的。也就是說,sno不直接決定非主屬性location。

解決目地:每個關係模式中不能留有傳遞依賴。

解決方法:分為兩個關係 s(sno,sname,dno),d(dno,dname,location)

注意:關係s中不能沒有外關鍵字dno。否則兩個關係之間失去聯絡。

資料庫設計 設計資料庫之前

1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...

資料庫設計 設計資料庫之前

1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...

資料庫設計 設計資料庫之前

1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...