軟體設計方案(資料庫設計原則)__資料庫

來源:互聯網
上載者:User
 

     資料庫技術是資訊資源管理最有效手段。資料庫設計是建立資料庫及其應用系統的核心和基礎,它要求對於指定的應用環境,構造出較優的資料庫模式,建立起資料庫應用系統,並使系統能有效地儲存資料,滿足使用者的各種應用需求。

1、設計資料庫之前

1)理解客戶需求,詢問使用者如何看待未來需求變化。讓客戶解釋其需求,而且隨著開發的繼續,還要經常詢問客戶以保證其需求仍然在開發的目的之中;

2)瞭解企業業務,在以後的開發階段節約大量時間;

3)重視輸入輸出。在定義資料庫表和欄位需求(輸入)時,首先應檢查現有的或者已經設計出的報表、查詢和視圖(輸出),以決定為了支援這些輸出哪些是必要的表和欄位;

4)建立資料字典和E-R 圖,對SQL 運算式的文檔化來說這是完全必要的;

5)定義標準的對象命名規範。

2、表與欄位的設計  

1)表設計原則

(1)標準化和正常化;

         資料的標準化有助於消除資料庫中的資料冗餘。標準化有好幾種形式,但Third Normal Form(3NF)通常被認為在效能、擴充性和資料完整性方面達到了最好平衡。事實上,為了效率的緣故,對錶不進行標準化有時也是必要的。

(2)採用資料驅動,增強系統的靈活性與擴充性;

(3)在設計資料庫的時候考慮到哪些資料欄位將來可能會發生變更。

2)欄位設計原則

(1)每個表中都應該添加的3 個有用的欄位;

①dRecordCreationDate,在SQL Server 下預設為GETDATE();

②sRecordCreator,在SQL Server 下預設為NOT NULL  DEFAULT USER;

③nRecordVersion,記錄的版本戳記,有助於準確說明記錄中出現null 資料或者遺失資料的原因。

(2)對地址和電話採用多個欄位,電話號碼和郵件地址最好擁有自己的資料表,其間具有自身的類型和標記類別;

(3)使用角色實體定義屬於某類別的列,建立特定的時間關聯關係,從而可以實現自我文檔化;

(4)選擇數字類型和文本類型要盡量充足,否則無法進行計算操作;

(5)增加刪除標記欄位。在關聯式資料庫裡不要單獨刪除某一行,而在表中包含一個“刪除標記”欄位,這樣就可以把行標記為刪除。

3、鍵和索引

1)鍵選擇原則

(1)鍵設計4 原則

①所有的鍵都必須唯一;

②為關聯欄位建立外鍵;

③避免使用複合鍵;

④外鍵總是關聯唯一的鍵欄位。

(2)使用系統產生的主鍵,控制資料庫的索引完整性,並且當擁有一致的鍵結構時,找到邏輯缺陷很容易;

(3)不要用使用者的鍵,通常情況下不要選擇使用者可編輯的欄位作為鍵;

(4)可選鍵有時可作主鍵,能擁有建立強大索引的能力。

2)索引使用原則

索引是從資料庫中擷取資料的最高效方式之一,絕大多數的資料庫效能問題都可以採用索引技術得到解決。

(1)邏輯主鍵使用唯一的成組索引,對系統鍵(作為預存程序)採用唯一的非成組索引,對任何外鍵列採用非成組索引。考慮資料庫的空間有多大,表如何進行訪問,還有這些訪問是否主要用於讀寫;

(2)大多數資料庫都索引自動建立的主鍵欄位,但是不能忘了索引外鍵,它們也是經常使用的鍵;

(3)不要索引memo/note 欄位,不要索引大型欄位,這樣會讓索引佔用太多的儲存空間;

(4)不要索引常用的小型表,不要為小型資料表設定任何鍵,尤其當它們經常有插入和刪除操作時。

4、資料完整性設計  

1)完整性實現機制

(1)實體完整性:主鍵

(2)參照完整性

 ①父表中刪除資料:串聯刪除,受限刪除,置空值;

 ②父表中插入資料:受限插入,遞迴插入;

 ③父表中更新資料:串聯更新,受限更新,置空值。

DBMS  對參照完整性可以有兩種方法實現:外鍵實現機制(約束規則)和觸發器實現機制。

(3)使用者定義完整性:NOT  NULL,CHECK,觸發器。

2)用約束而非商務規則強制資料完整性;

3)強制指示完整性。在有害資料進入資料庫之前將其剔除,啟用資料庫系統的指示完整性特性;  

4)使用尋找控制資料完整性,控制資料完整性的最佳方式就是限制使用者的選擇;  

5)採用視圖。可以為應用程式建立專門的視圖而不必非要應用程式直接存取資料表,這樣做還等於在處理資料庫變更時給你提供了更多的自由。

5、其他設計

1)避免使用觸發器確實需要的話最好集中對它文檔化;

2)使用常用英語(或者其他任何語言)而不要使用編碼,確實需要的話可以在編碼旁附上使用者知道的英語;

3)儲存常用資訊。讓一個表專門存放一般資料庫資訊,可以實現一種簡單機制追蹤資料庫,這樣做對非客戶機/伺服器環境特別有用;

4)包含版本機制,在修改資料庫結構時更為方便;  

5)編製文檔,對所有的捷徑、命名規範、限制和函數都要編製文檔;

6)反覆測試,保證選擇的資料類型滿足商業要求;  

7)檢查設計,在開發期間檢查資料庫設計的常用技術是通過其所支援的應用程式原型檢查資料庫。

6、資料庫命名規範

1)實體(表)的命名

(1)表以名詞或名詞短語命名,給表的別名定義簡單規則;  

(2)如果表或者是欄位的名稱僅有一個單詞,那麼建議不使用縮寫,而是用完整的單詞;

(3)所有的儲存值列表的表前面加上首碼Z,目的是將這些值列表類排序在資料庫最後;

(4)所有的冗餘類的命名(主要是累計表)前面加上首碼X。冗餘類是為了提高資料庫效率,非正常化資料庫的時候加入的欄位或者表;

(5)關聯類別通過用底線串連兩個基本類之後,再加首碼R的方式命名,後面按照字母順序羅列兩個表名或者表名的縮寫。關聯表用於儲存多對多關係。

2)屬性(列)的命名

(1)採用有意義的列名,表內的列要針對鍵採用一整套設計規則;

           每一個表都將有一個自動ID作為主健,邏輯上的主健作為第一組候選主健來定義。如果是自訂的邏輯上的編碼則用縮寫加“ID”的方法命名。如果鍵是數字類型,你可以用_NO 作為尾碼。如果是字元類型則可以採用_CODE 尾碼。對列名應該採用標準的首碼和尾碼。

(2)所有的屬性加上有關類型的尾碼,如果還需要其它的尾碼,都放在類型尾碼之前。資料類型是文本的欄位,類型尾碼TX可以不寫,有些類型比較明顯的欄位也可以不寫類型尾碼;

(3)採用首碼命名。給每個表的列名都採用統一的首碼,那麼在編寫SQL運算式的時候會得到大大的簡化,但這樣做也有缺點,比如會破壞自動表串連工具的作用。

3)視圖的命名

(1)視圖以V作為首碼,其他命名規則和表的命名類似;

(2)命名應盡量體現各視圖的功能。

4)觸發器的命名

               觸發器以TR作為首碼,觸發器名為相應的表名加上尾碼,Insert觸發器加 _I,Delete觸發器加 _D ,Update觸發器加 _U 。如:TR_User_I,TR_User_D,TR_User_U。

5)預存程序名

              預存程序應以 UP_ 開頭,和系統的預存程序區分,後續部分主要以動賓形式構成,並用底線分割各個組成部分。  

6)變數名

               變數名採用小寫,若屬於片語形式,用底線分隔每個單詞。

7)命名中其他注意事項

(1)以上命名都不得超過30個字元的系統限制,變數名的長度限制為29(不包括標識字元@);

(2)資料對象、變數的命名都採用英文字元,禁止使用中文命名,絕對不要在對象名的字元之間留空格;

(3)小心保留詞,要保證你的欄位名沒有和保留詞、資料庫系統或者常用存取方法衝突;

(4)保持欄位名和類型的一致性,在命名欄位並為其指定資料類型的時候一定要保證一致性。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.