資料庫設計3範深入

2021-07-30 12:15:49 字數 1336 閱讀 1419

根據三種關係完整性約束中實體完整性的要求,關係中的碼(注2)所包含的任意乙個屬性都不能為空,所有屬性的組合也不能重複。

為了滿足此要求,圖中的表,只能將學號與課名的組合作為碼,否則就無法唯一地區分每一條記錄。

3范的分析的思維流程:

一、第1步:找出資料表中所有的碼。

定義:【碼:關係中的某個屬性或者某幾個屬性的組合,用於區分每個元組

(可以把「元組」理解為一張表中的每條記錄,也就是每一行),(碼之間沒有依賴關係)】。

【操作:檢視所有每一單個(兩個,三個依次往上)屬性,當它的值確定了,是否剩下的所有屬性值都能確定。】

第2步:根據第一步所得到的碼,找出所有的主屬性。【主屬性有兩個:學號和課程】

第3步:資料表中,除去所有的主屬性,剩下的就都是非主屬性了。【非主屬性有四個:姓名、系名、系主任、分數】

第4步:檢視是否存在非主屬性對碼的部分函式依賴。【(學號,課名) → 姓名 :姓名依賴於學號但是不依賴與課程】

【(學號,課名) → 系名 :同上部分依賴:有兩個以上屬性的組合碼才存在部分依賴】

【(學號,課名) → 系主任 : 同上】

二、所以表存在非主屬性對於碼的部分函式依賴,最高只符合1nf的要求,不符合2nf的要求,為了讓表符合2nf的要求,我們必須消除這些部分函式依賴,

只有乙個辦法,就是將大資料表拆分成兩個或者更多個更小的資料表,在拆分的過程中,要達到更高一級正規化的要求,這個過程叫做」模式分解「。

三、僅僅符合2nf的要求,很多情況下還是不夠的,而出現問題的原因,在於仍然存在非主屬性系主任對於碼學號的傳遞函式依賴

3nf在2nf的基礎之上,消除了非主屬性對於碼的傳遞函式依賴。也就是說, 如果存在非主屬性對於碼的傳遞函式依賴,則不符合3nf的要求。

驗證資料庫合理的方法:

1、每一名學生的學號、姓名、系名、系主任這些資料重複多次。每個系與對應的系主任的資料也重複多次——資料冗餘過大。

2、假如學校新建了乙個系,但是暫時還沒有招收任何學生(比如3月份就新建了,但要等到8月份才招生),那麼是無法將系名與系主任的資料單獨地新增到資料表中去的 ——插入異常注(2nf)

3、假如將某個系中所有學生相關的記錄都刪除,那麼所有系與系主任的資料也就隨之消失了(乙個系所有學生都沒有了,並不表示這個系就沒有了)。——刪除異常(3nf)

4、假如李小明轉系到法律系,那麼為了保證資料庫中資料的一致性,需要修改三條記錄中系與系主任的資料。——修改異常。(2nf)

精華總結:

解決部分:有多個主屬性組成的碼--------->每乙個主屬性乙個碼分離成乙個表。

解決傳遞:乙個非主屬性通過另乙個非主屬性依賴與碼------------> 把這兩個非主屬性分離到另乙個表

資料庫設計總結 3

1.提高資料庫執行效率的辦法 在給定的系統硬體和系統軟體條件下,提高資料庫系統的執行效率的辦法是 1 在資料庫物理設計時,降低正規化,增加冗餘,少用觸發器,多用儲存過程。2 當計算非常複雜 而且記錄條數非常巨大時 例如一千萬條 複雜計算要先在資料庫外面,以檔案系統方式用c 語言計算處理完成之後,最後...

mysql web資料庫的設計歸範 1命名規範

資料庫環境介紹 通常來講,各個網際網路公司的資料庫分為5個資料庫環境 1.dev 開發環境,開發可讀寫,可修改表結構 常用的163的資料庫表 開發人員可以修改表結構,可以隨意修改其中的資料 但是需要保證不影響其他開發同事 2.qa 測試環境,開發可讀寫,開發人員可以通過工具修改表結構 3.sim 模...

個人重構 資料庫設計(3)

上接 個人重構 資料庫設計 2 1 使用者資訊表 t user 2 卡資訊表 t card 3 學生資訊表 t student 4 充值記錄表 t recharge 5 上下機記錄表 t onlinerecord 6 基本資料表 t basicdata 7 賬單 t checkday 8 工作記錄表...