數據庫設計規範範例

數據庫設計愈來愈成爲現代軟件設計必須的一部份內容。而咱們從不少書本中獲得的更多的是一些知識點。如何設計一個強大高效而又規範的數據庫呢?若是工做中領導要求你制定一個數據庫設計制度,你會怎麼來寫這個制度或流程?要想設計一個大的軟件或平臺,首先必需要有一個統一的設計規範。本文是一個簡單的《數據庫設計規範》範例,你能夠作簡單修改或直接拿來就用到工做中去。本文對廣大剛接觸數據庫設計或剛工做不久的相關人員有更多指導做用。數據庫

範例共分如下幾個部分:目的、適用範圍、規範說明、標準詞彙、命名規範、編碼規範、數據字典書寫格式 、E-R圖的繪製模式、數據庫後期維護的要求。具體範例以下:安全

1 目的
爲了使軟件開發過程有章可循,保證軟件質量,增強開發管理。本規範爲一套編寫高效可靠的 數據庫設計命名規範。它以安全可靠的軟件工程原則爲基礎,使代碼易於理解、維護和加強,提升生產效率。同時,將帶來更大的一致性,使軟件開發團隊的效率明顯提升。數據庫設計

2 適用範圍
本適用於數據庫模型的設計和ER圖的建立過程,以及SQL語句,存儲過程,觸發器等開發,適用於相關的數據庫開發管理人員、研發人員等。ide

3 規範說明
本規範與相關的適用範圍的人員討論最終肯定,後期儘可能保證少作變動,但也會根據實際應用的效果作進一步的優化與完善。函數

4 標準詞彙
爲使相關的設計文檔可讀性強,消除歧義,請使用標準詞彙。
1. 表(Table)
2. 嚴格區分「表」和「庫」,禁止「代碼庫」等不規範用法,而應使用「代碼表」等詞彙。例如:應命名爲‘門診信息表’,不能命名爲‘門診信息庫’。
3. 字段(Field)
字段爲行和列的交。嚴格區分「列(column)」和「字段」的用法。
4. 代碼和編碼
代碼與編碼是有區別的,編碼做動詞使用,由用戶本身肯定編碼規則,例如:應稱‘郵政編碼’,不能稱‘郵政代碼’。代碼是在業務中已存在的名詞,不須要再肯定編碼規則,例如:應稱‘股票代碼’,不能稱‘股票編碼’。
5. 序號
避免使用「編號」等用法,若是是系統自動產生的值,都應稱‘序號’。例如:‘流水序號’。若是是用戶自已編的號,一概稱‘編號’,不能稱‘編碼’。
6. 數據類型(Data Type)
指data type時,一概用「數據類型」,不要簡稱「類型」等。
7. 行(Row)
行和記錄(record)含義相同,在文檔中應儘可能使用「行」。
8. 行數、列數
避免使用「記錄數」、「字段數」等用法。post

5 命名規範
5.1 基本原則
1. 全部數據庫的實體命名都以字母、下劃線或數字組成。
2. 有的數據庫,有索引名長度18個字節限制,但考慮標準產品跨數據庫的一致性,所以索引、主鍵、外鍵名統一遵循18個字節長度限制。
3. 使用能夠準確說明數據表/數據列/函數/存儲過程/觸發器/序列/包/包體/做業的英文描述符。例如,採用相似 FIRST_NAME、PRODUCT_TYPE_ID這樣的名字。雖然象 x1,y1 或 fn 這樣的名字很簡短,輸入起來容易,可是咱們難以知道它們表明什麼、結果是什麼含義,於是使編碼難以理解、維護和改進。
4. 數據對象命名中,使用「_」鏈接符。如:PRODUCT_TYPE_ID、pub_user。
5. 採用該領域的術語。若是用戶稱他們的「客戶」 (clients) 爲「顧客」 (customers),那麼就採用術語 Customer 來命名這個數據字段,而不用 Client。
6. 儘可能少用縮寫,但若是必定要使用,就要謹慎地使用。這意味着應該保留一個標準縮寫的列表,明智地從中選取,而且在使用時保持一致。例如,想對單詞「number」採用縮寫,那麼可從 nbr,no 或者 num 中選取一個,說明一下采用了哪個(具體是哪一個倒無所謂),而且只使用這一種形式。
7. 避免使用長名字(最好不超過 15 個字母)。雖然 PhysicalOrVirtualProductOrService 看起來彷佛是個不錯的類名,可是這個名字太長了,應該考慮從新給它起個短一點的名字。
8. 設計初首先對項目進行分析,設計子系統(或子模塊的前綴),用於表、視圖等名稱的前綴。如:
aut_ 權限管理
rep_ 報表管理
pub_ 公共模塊測試

5.2 具體數據對象命名規範優化

數據對象 最大長度 命名規範
視圖 30 子系統前綴_標題_v若是是縮寫則所有大寫,不然用小寫pub_user_v
30 子系統前綴_標題若是是縮寫則所有大寫,不然用小寫pub_user用戶表rep_daily_bill帳單日報表


表列 30 1.列名必須用一個或多個能表示其意思的英語單詞來表示其中列名中不可包括「_X_」字符串。2.用戶自定義定段N_X_00 (number)C_X_01 (char)

D_X_02 (date)編碼

主鍵 18 PK_表名
外鍵 18 FK_表名_列名+被參照 (referenced) 表名(縮寫)
索引 18 ID_表名_列名(縮寫)
惟一索引 18 UI_表名_列名(縮寫)
check約束 18 CK_表名_列名(縮寫)
序列 30 SEQ_表名_列名(縮寫)
存儲過程 30 PRO_子系統前綴_標題存儲過程名必須用一個或多個能表示其意思的英語單詞來表示,每一個單詞首字母爲大寫,其餘字母爲小寫。同時,前面要加前綴(PRO_);例如:PRO_pub_GetAllCustomer
函數 30 _子系統前綴_標題函數名必須用一個或多個能表示其意思的英語單詞來表示,每一個單詞首字母爲大寫,其餘字母爲小寫。同時,前面要加前綴(fun _);例如:FUN_pub_ReturnCustomer
30 PCK_標題
包體 30 PCK_BODY_標題
觸發器 30 TRIG_規則1_規則2_表名觸發器名將在後邊有進一步的說明
JOB 30 JOB_名稱

5.3 觸發器(Trigger)命名規範
1. Insert觸發器命名規則
BEFORE型:’TRIG_BE_IN_’ + 表名
AFTER 型:’TRIG_AF_IN_’ + 表名
2. Update觸發器命名規則
BEFORE型:’TRIG_BE_UP_’ + 表名
AFTER 型:’TRIG_AF_UP_’ + 表名
3. Delete觸發器命名規則
BEFORE型:’TRIG_BF_DE_’ + 表名
AFTER 型:’TRIG_AF_DE_’ + 表名spa

6 編碼規範
6.1 代碼縮進約定
列之間存在上下關係時,必須縮進4個空格(一個TAB)的間距;
一行有多列,超過80個字符時,基於列對齊原則,採用下行縮進;
where 子句書寫時,換行時將and、or等寫在換行首列,語句另起一行時,以保留字或者鏈接符開始,鏈接符右對齊;
例:

select /*+ ORDERED USE_NL(i p) */
u.name pnd_index_owner,
idx_name pnd_index_name,
ixp_name pnd_partition_name,
pnd_rowid,
pnd_timestamp
from dr$pending, dr$index i, dr$index_partition p, sys.user$ u
where idx_owner# = u.user#
and idx_id = ixp_idx_id
and pnd_pid = ixp_id
and pnd_pid != 0
and pnd_cid = idx_id
6.2 函數(存儲過程)頭頭註釋
編寫函數文本–如視圖、函數、觸發器、存儲過程以及其餘數據對象時,必須爲每一個函數增長適當註釋。該註釋以多行註釋爲主,主要結構以下:
/************************************************************
*name : –函數名
*function : –函數功能
*input : –輸入參數
*output : –輸出參數
*author : –做者
*CreatedDate : –建立時間
*UpdateDate : –函數更改信息(包括做者、時間、更改內容等)–(更改記錄多行,以最新記錄在最前面)(基本成型時寫更改信息)
************************************************************/
6.3 函數(存儲過程)體內編寫規範
當在函數體內有條件判斷語法、循環判斷語法、異常判斷語法時,必須被BEGIN和END語法包含,例如:
IF <條件表達式>
BEGIN
<命令行或程序塊>
END
ELSIF <條件表達式>
BEGIN
<命令行或程序塊>
END

7 數據字典書寫格式
例:
表名:sms_CP_info

字段名稱

數據類型

空值

缺省值

規則

說明

CP_ID Number(4,0) N

CP標識
CP_NAME Varchar2(200) N

CP名稱
CP_CODE Varchar2(40) N

企業編碼

8 E-R圖的繪製模式
例:
一個部門可能有0或多個僱員
一個僱員必須且僅屬於一個部門

E-R圖

E-R圖

9 數據庫後期維護的要求
1. 當數據庫表或程序須要改動的時候,請務必作好文檔的相關修改工做;
2. 當數據庫表或程序須要改動的時候,請通知數據庫管理人員完善數據庫文檔;
3. 數據變動要作好備份工做;
4. 要充分發揮好測試數據庫的做用。


做者: SoDone酥蛋
原文地址:http://www.sodone.com/database-design-specifications/

轉載請用連接形式註明做者與原地址信息。

相關文章
相關標籤/搜索