資料庫設計與效能優化(一)

2021-08-01 14:51:23 字數 2460 閱讀 4638

**:

節省資料的儲存空間。

能夠保證資料的完整性。

方便進行資料庫應用系統的開發。

糟糕的資料庫設計:

資料冗餘、儲存空間浪費。

記憶體空間浪費。

資料更新和插入異常麻煩。

資料庫的生命週期

1、需求分析階段 確定需求(與客戶溝通)

2、邏輯設計階段 通過資料模型(e-r模型、uml圖例)得到資料概念模型 -> 轉換為sql表 -> 規範化

3、物理設計階段 選擇索引

4、實現階段 把物理設計的結果轉換為資料庫管理系統(dbms)中的ddl建立資料結構。通過sql語句來進行增刪改查。

5、再設計再修改。

6、廢止

e-r圖

e 實體 (乙個學生、一本書、一門課、乙個會議、乙個關係…)

r 屬性 (人的屬性:年齡、性別 學生的屬性:學號、性別、年齡…)

元組就是表中的一行。

分量就是某個屬性值。

碼就是表中唯一可以確定乙個元組的某個屬性,可以作為碼的都是候選碼,選出的乙個碼就是主碼。

外碼是乙個屬性(或者屬性組),它不是碼,但是它是別的表的碼。

域是屬性的取值範圍。

概率示例圖:

專業的畫圖工具有 microsoft vision 、、、

現在有乙個教學管理系統。系統實體有:

教師,屬性有 教師號、姓名、性別、年齡、出生日期、專業,其中教師號為碼。

學生,屬性有 學號、姓名、性別、出生日期、籍貫、專業,其中學號為碼。

課程,屬性有 課程號、課程名、學時數、學分、教材,其中課程號為碼。

實體間的關係是:乙個教師可以教授多門課程,一門課程可以被多名教師講授,即教師與課程之間是多對多的關係。乙個學生可以選修多門課程,一門課程可以被多名學生選修,即學生與課程之間是多對多的關係。

e-r圖設計是屬於資料庫的邏輯設計階段的。

e-r圖轉換為資料表的原則

1、每乙個實體應該對映為乙個表。

例如:教師表、課程表、學生表

2、一般多對多的關係也應該對映為乙個表,表中應該包含關係雙方的碼屬性,同時還應該包含該關係本身的一些屬性,如果該關係有屬性的話(例如上例中的選修關係它就含有乙個成績屬性,因為每位學生選的每一門課都有乙個唯一的成績,這個成績屬性就包含在選修這個關係中,所以我們建立選修表的時候不但要將學生和課程的碼放進來,同時也要將該學生選修該門課程的成績放進來;再例如上例中的教課關係也會有乙個自己的屬性:教課時間,因為每位老師上的每一門課的時間都是唯一的而且不同的課不同的老師時間不一定相同,所以教課時間是教課關係表中的乙個屬性,關係表的主鍵一般以雙方的主鍵組合作為聯合主鍵)。但是一對多(例如乙個學生屬於乙個班,但是乙個班可以有很多個學生,這個時候,可以在學生實體表中新增乙個班級的碼就可以有效關聯學生和班級而不需要再去建一張學生和班級的關係表了)或者一對一(可以將一對一的兩張表合併定義為一張新的表也可以按照一對多的方法建表)的關係則可以不用對映出乙個關係表。

兩個關係表大致如下:

選課表(課程號,學號,成績) 也可以叫成績表

教課表(課程號,教師號,開課時間) 也可以叫排課表

資料庫的規範化

就是要對錶中的屬性來做設計,防止資料冗餘,儲存空間浪費,記憶體空間浪費,資料更新和插入異常。

基於資料冗餘提出了有五個設計正規化。

第五正規化資料冗餘率最低,但是資料會被分解到很多張表,會給檢索造成較大負擔,因為檢索結果要關聯很多張表才能得到。

一般設計到第三正規化就已經不錯了。即可以減少資料冗餘又可以實現較快的檢索。

1nf表示表中的資料的每乙個欄位都是不可以再分割的原子資料。

2nf表示在滿足1nf的情況下,表中的非碼屬性必須被聯合主鍵決定,不能有聯合主鍵中的某乙個屬性決定。例如:

成績表(課程號,學號,成績,課程名)

這個成績表中的」課程名「這個屬性只依賴課程號這乙個屬性,而不是依賴課程名和學號這個聯合主鍵,所以這張表不滿足2nf,需要將這張表分解為如下兩張表才能滿足2nf

成績表(課程號,學號,成績)

課程表(_課程號,課程名)

3nf表示在滿足2nf的情況下,每乙個非關鍵字必須由關鍵字來決定而不能由非關鍵字來決定。

例如:

資訊表(_職工編號,職工姓名,部門名稱,部門位置)

這個資訊表的主鍵是職工編號,但是部門經理名稱並不依賴職工編號而是依賴與非主鍵的部門名,這樣就不滿足3nf了,可做如下修改

職工表(_職工編號,職工姓名,部門編號)

部門表(_部門編號,部門名稱,部門位置)

資料庫效能優化

資料庫設計 實現sql server資料庫的優化,首先要有乙個好的資料庫設計方案。在實際工作中,許多sql server方案往往是由於資料庫設計得不好導致效能很差。實現良好的資料庫設計必須考慮這些問題 1.邏輯資料庫規範化問題 一般來說,邏輯資料庫設計會滿足規範化的前3級標準 第1規範 沒有重複的組...

資料庫效能優化

1 系統設計 1 縱向 橫向分割表,減少表的尺寸 縱向 欄位多。按業務主題分割。根據頁大小。橫向 資料多。按條件分割表。eg 按年儲存表,歷史資料表和當期資料更新表。2 將資料處理交給db,編寫儲存過程 1 減少網路的開銷 2 儲存過程是編譯 優化過,速度快。3 唯讀查詢操作優化方法 1 資料量小的...

資料庫效能優化

最近要寫一些關於企業級應用的優化內容的東西,就先從資料庫優化入手吧,在這裡先記錄一下。作為一名有資料庫教育背景的工作人員,我著重從db的角度介紹一下,我認為的db優化方式。首先,撇開經濟商業用處不談,db效能優化的原則主要是,通過盡可能少的磁碟訪問獲得所需的資料。一般而言,資料的是優化可以從三方面分...