1.提高資料庫執行效率的辦法
在給定的系統硬體和系統軟體條件下,提高資料庫系統的執行效率的辦法是:
(1) 在資料庫物理設計時,降低正規化,增加冗餘, 少用觸發器, 多用儲存過程。
(2) 當計算非常複雜、而且記錄條數非常巨大時(例如一千萬條),複雜計算要先在資料庫外面,以檔案系統方式用c++語言計算處理完成之後,最後才入庫追加到表中去。這是電信計費系統設計的經驗。
(3) [color=red]發現某個表的記錄太多,例如超過一千萬條,則要對該錶進行水平分割。水平分割的做法是,以該錶主鍵pk的某個值為界線,將該錶的記錄水平分割為兩個表。若發現某個表的字段太多,例如超過八十個,則垂直分割該錶,將原來的乙個表分解為兩個表[/color]。
(4) 對資料庫管理系統dbms進行系統優化,即優化各種系統引數,如緩衝區個數。
(5) 在使用面向資料的sql語言進行程式設計時,盡量採取優化演算法。
總之,要提高資料庫的執行效率,必須從資料庫系統級優化、資料庫設計級優化、程式實現級優化,這三個層次上同時下功夫。
2.要善於識別與正確處理多對多的關係
若兩個實體之間存在多對多的關係,則應消除這種關係。[color=red]消除的辦法是,在兩者之間增加第三個實體。[/color]這樣,原來乙個多對多的關係,現在變為兩個一對多的關係。要將原來兩個實體的屬性合理地分配到三個實體中去。這裡的第三個實體,實質上是乙個較複雜的關係,它對應一張基本表。一般來講,資料庫設計工具不能識別多對多的關係,但能處理多對多的關係。
〖例〗:在「圖書館資訊系統」中,「圖書」是乙個實體,「讀者」也是乙個實體。這兩個實體之間的關係,是乙個典型的多對多關係:一本圖書在不同時間可以被多個讀者借閱,乙個讀者又可以借多本圖書。為此,要在二者之間增加第三個實體,該實體取名為「借還書」,它的屬性為:借還時間、借還標誌(0表示借書,1表示還書),另外,它還應該有兩個外來鍵(「圖書」的主鍵,「讀者」的主鍵),使它能與「圖書」和「讀者」連線。
3.正規化標準
基本表及其字段之間的關係, 應盡量滿足第三正規化。但是,滿足第三正規化的資料庫設計,往往不是最好的設計。為了提高資料庫的執行效率,常常需要降低正規化標準:適當增加冗餘,達到以空間換時間的目的。
〖例2〗:有一張存放商品的基本表,如表1所示。「金額」這個欄位的存在,表明該錶的設計不滿足第三正規化,因為「金額」可以由「單價」乘以「數量」得到,說明「金額」是冗餘字段。但是,增加「金額」這個冗餘字段,可以提高查詢統計的速度,這就是以空間換時間的作法。
在rose 2002中,[color=red]規定列有兩種型別:資料列和計算列[/color]。「金額」這樣的列被稱為「計算列」,而「單價」和「數量」這樣的列被稱為「資料列」。
4.基本表的性質
基本表與中間表、臨時表不同,因為它具有如下四個特性:
(1) 原子性。基本表中的字段是不可再分解的。
(2) 原始性。基本表中的記錄是原始資料(基礎資料)的記錄。
(3) 演繹性。由基本表與**表中的資料,可以派生出所有的輸出資料。
(4) 穩定性。基本表的結構是相對穩定的,表中的記錄是要長期儲存的。
理解基本表的性質後,在設計資料庫時,就能將基本表與中間表、臨時表區分開來。
5.主鍵pk的取值方法
pk是供程式設計師使用的表間連線工具,[color=red]可以是一無物理意義的數字串, 由程式自動加1來實現。[/color]也可以是有物理意義的欄位名或欄位名的組合。不過前者比後者好。當pk是欄位名的組合時,建議欄位的個數不要太多,多了不但索引占用空間大,而且速度也慢。
6.一對
一、一對多、多對多
關聯對映:一對多/多對一
存在最普遍的對映關係,簡單來講就如球員與球隊的關係;
一對多:從球隊角度來說乙個球隊擁有多個球員 即為一對多
多對一:從球員角度來說多個球員屬於乙個球隊 即為多對一資料表間一對多關係如下圖:
[img]
關聯對映:一對一
一對一關係就如球隊與球隊所在位址之間的關係,一支球隊僅有乙個位址,而乙個位址區也僅有一支球隊。
資料表間一對一關係的表現有兩種,一種是外來鍵關聯,一種是主鍵關聯。
一對一外來鍵關聯,圖示如下:
[img]
關聯對映:多對多
多對多關係也很常見,例如學生與選修課之間的關係,乙個學生可以選擇多門選修課,而每個選修課又可以被多名學生選擇。
[color=red]資料庫中的多對多關聯關係一般需採用中間表的方式處理,將多對多轉化為兩個一對多。[/color]
資料表間多對多關係如下圖:
[img]
7.e--r圖沒有標準答案
資訊系統的e--r圖沒有標準答案,因為它的設計與畫法不是惟一的,只要它覆蓋了系統需求的業務範圍和功能內容,就是可行的。反之要修改e--r圖。儘管它沒有惟一的標準答案,並不意味著可以隨意設計。好的e?r圖的標準是:結構清晰、關聯簡潔、實體個數適中、屬性分配合理、沒有低階冗餘。
8. 檢視技術在資料庫設計中很有用
與基本表、**表、中間表不同,檢視是一種虛表,它依賴資料來源的實表而存在。檢視是供程式設計師使用資料庫的乙個視窗,是基表資料綜合的一種形式, 是資料處理的一種方法,是使用者資料保密的一種手段。為了進行複雜處理、提高運算速度和節省儲存空間, 檢視的定義深度一般不得超過三層。 若三層檢視仍不夠用, 則應在檢視上定義臨時表, 在臨時表上再定義檢視。這樣反覆交迭定義, 檢視的深度就不受限制了。
對於某些與國家政治、經濟、技術、軍事和安全利益有關的資訊系統,檢視的作用更加重要。這些系統的基本表完成物理設計之後,立即在基本表上建立第一層檢視,這層檢視的個數和結構,與基本表的個數和結構是完全相同。並且規定,所有的程式設計師,一律只准在檢視上操作。只有資料庫管理員,帶著多個人員共同掌握的「安全鑰匙」,才能直接在基本表上操作。請讀者想想:這是為什麼?
資料庫總結 3
查詢表 select from 表名 刪除表和資料 drop table 表名 只刪除表資料不刪除表結構 truncate 表名 修改表名 alter table 原表名 rename 後表名 建立索引 alter index 索引名 on 表名 列名 刪除索引 alter table 表名 dro...
資料庫設計總結
主要學習目標 1 e r圖的繪製 2 使用三正規化規範資料庫的設計 e r圖 e r圖是一種廣泛使用的設計工具,主要用來表示事物 事物的資料和其間的關係資訊 e r圖將資訊分為三種形式 實體,屬性和關係 長方形用來標識實體 橢圓用來標識屬性 菱形用來確定關係 資料規範化 1 第一正規化 1st nf...
資料庫設計總結
資料庫設計總結 第一次寫部落格,剛學了資料庫設計,簡單回顧總結一下。寫在前面,了解一下專案開發流程 1.需求調研 系統邊界 2.需求文件 3.原型設計 ui,html頁面 4.設計資料庫 5.後台開發,公共 編寫 6.功能編碼 1.資料庫的三正規化 第一正規化 保持屬性的原子性,概念分的不能再分,如...