Oracle數據庫開發和設計規範

1 命名原則

1.1約定

  • 是指對數據庫、數據庫對象如表、字段、索引、序列、存儲過程等的命名約定;
  • 命名使用富有意義的英文詞彙,儘量避免使用縮寫,多個單詞組成的,中間以下劃線分割
  • 避免使用Oracle的保留字如LEVEL、關鍵字如TYPE(見Oracle保留字和關鍵字); 各表之間相關列名儘量同名;
  • 除數據庫名稱長度爲1-8個字符,其餘爲1-30個字符,Database link名稱也不要超過30個字符;
  • 命名只能使用英文字母,數字和下劃線;

1.2表名

規則如下:

命名規則爲xxx_yyy_TableName。xxx表示子系統的名稱,由三個字母構成;yyy表示子系統中的子模塊的名稱(可以沒有);TableName爲表含義

TableName規則如下:

ü 使用英文單詞或詞組作爲表名,不得使用漢語拼音

ü 用名詞和名詞短語作表名

ü 不使用複數

正確的命名,例如:

sys_user

biz_order

1.3存儲過程

規則如下:

命名規則爲xxx_yyy_StoredProcedureName。xxx表示子系統的名稱,由三個字母構成;yyy表示子系統中的子模塊的名稱(可以沒有);StoredProcedureName爲存儲過程含義

StoredProcedureName規則如下:

ü 用動詞或動詞短語來命名,並帶有賓語

ü 需要符合用Pascal 命名規則。

ü 儘量謹慎地使用縮寫

ü 儘量不要和關鍵字重合

ü 不要用任何名前綴 (例如 U,B)

ü StoredProcedureName內不使用下劃線

ü 當操作依賴條件時,一般結尾使用 By+條件

存儲過程正確的命名,例如:

sys_InsertUser

sys_SearchUserByUserID

sys_DeleteUserByUserID

1.4視圖

規則如下:

ü 視圖的命名採用xxx_yyy_ViewName_v。xxx表示子系統的名稱,由三個字母構成;yyy表示子系統中的子模塊的名稱(可以沒有);_v後綴表示視圖,ViewName部分表示視圖的含義。

ViewName規則如下:

ü 用名詞和名詞短語,

ü 不使用複數

ü 用Pascal 命名規則

ü 儘量謹慎地使用縮寫

ü 儘量不要和關鍵字重合

ü 不要用任何名前綴 (例如 U,B)

ü ViewName中使用下劃線

視圖正確的命名,例如:

sys_UserView_v

biz_UserOrderView_v

1.5索引

規則如下:

table_name_column_name_idx。

多單詞組成的column name,取前幾個單詞首字母,加末單詞組成column_name。

如:

tst_sample表member_id上的索引: tst_sample_mid_idx

sys_news表title上的索引: sys_news_titile_idx;

1.6序列

規則如下:

table_name_seq;

如:

tst_sample表的序列: tst_sample_seq

1.7主鍵

主鍵命名:table_name_pk;
如:
tst_sample表的主鍵: tst_sample_pk

1.8外鍵

外鍵命名:table_name_column_name_fk;

多單詞組成的column name,取前幾個單詞首字母,加末單詞組成column_name。

如:

tst_sample表user_id字段的外鍵: tst_sample_uid_fk

tst_sample表type_id字段的外鍵: tst_sample_tid_fk

2 設計規範

2.1規範約定

  1. 遵守數據的設計規範3NF 規定

· 表內的每一個值都只能被表達一次。

· 表內的每一行都應該被唯一的標識(有唯一鍵)。

· 表內不應該存儲依賴於其他鍵的非鍵信息。

  1. 實體表都必須包含四個字段:編號(ID)、代碼(Code)、創建人(Created By)、創建時間(Creation Time)、修改人(Modified By)、修改時間(Modification Time)、刪除標誌(Delete Status)。其含義如下:

ü 編號是系統內的唯一標識

ü 代碼是客戶爲這個實體的編碼,這個字段看需要確定是否保留

ü 創建人是是指數據庫記錄創建人

ü 創建時間是指數據庫記錄創建時間,默認爲SYSDATE

ü 修改人是是指數據庫記錄修改人

ü 修改時間是指數據庫記錄修改時間,默認爲SYSDATE

ü 刪除標誌是本條記錄是否已刪除的標誌(0:沒有刪除;1:已經刪除),數據中的數據不做真正刪除,只設置這個標誌

這五個字段的命名規則如下

ü 實體名+字段名稱,如user_id、user_code、created_by、creation_time、modified_by 、modification_time 、delete_status。

ü 這五個字段的類型和長度規則如下

n 編號 INTEGER

n 代碼 VARCHAR2(30)

n 創建人 INTEGER

n 創建時間DATE

n 修改人 INTEGER

n 修改時間DATE

n 刪除標誌 CHAR(1)

2.2字段規範

一行記錄必須表內唯一,表必須有主鍵。
枚舉類型使用 NUMBER,且需要說明枚舉類型的各個不同取值的含義
ID結尾的字段爲僅由數字組成,Code結尾的字段爲僅由字母或數字組成
用CHAR(1)表示布爾值的取大寫:“Y”,“N”。
應儘量使用VARCHAR2代替CHAR類型;
VARCHAR(2)最多4000字符;
DATE精確到秒,而非天;
使用CLOB代替LONG,BLOB代替LONG RAW;
使用NUMBER數據類型時請給定長度,例如:NUMBER(5,2) 表示整數部分最大3位,小數部分爲2位;

3 使用規範

3.1綜合

如果開發過程中需要建立索引,需要提交書面的更改請求,說明所需索引的定義(名稱、字段列表、順序、索引類型)以及建立的理由。數據庫管理員統一維護索引並將提交的請求更改。
數據庫各表的初始數據(包含各代碼表、配置表)需要提交給數據庫管理員。
不得使用觸發器。
涉及到數據庫多表數據的更改(Insert/Delete/Update)必須使用數據庫事務進行控制,並且必須有完整事務開始和提交/回滾機制。不能使用範圍事務
儘量避免Union操作的使用,需要使用時,請向數據庫管理員諮詢使用Union操作的影響。
SQL語句和存儲過程,儘量使用PL/SQL Develper的代碼美化器美化。
屬於ORACLE的關鍵字大小,表名、列名等小寫。

3.2查詢

在表查詢中,一律不要使用* 作爲查詢的字段列表,需要哪些字段必須顯式寫明
在表查詢中,必須有Where條件,除非此表爲非增長表
在表查詢中,一次最多返回的記錄條數不要超過1000條或記錄內容不要大於1MB的數據。
在表查詢中,作Order By排序時,優先使用主鍵列,索引列
多表關聯查詢時,優先使用Where條件,再作表關聯,並且需要保證被關聯的字段需要有索引。
避免在WHERE字句中對列施以函數:
錯誤:
SELECT service_id,service_name 
FROM service_promotion
WHERE TO_CHAR(gmt_modified,’yyyy-mm-dd’)
= ‘20001-09-01’;
正確:
SELECT service_id,service_name 
FROM service_promotion
WHERE gmt_modified

= TO_DATE(‘2001-9-01’,’yyyy-mm-dd’)
AND gmt_modified
< TO_DATE(‘2001-9-02’,’yyyy-mm-dd’);

避免使用數據庫的類型自動轉換功能:
錯誤:
SELECT category_id, category_name FROM category
WHERE category_id = ‘123’; – id’s type is number

正確:
SELECT category_id, category_name FROM category
WHERE category_id = 123; – id’s type is number

3.4刪除

刪除記錄時,必須有Where唯一條件
當有主從表時,要先刪除從表記錄,在刪除主表記錄

3.5修改

修改記錄時,必須有Where唯一條件

4 Oracle保留字和關鍵字

https://blog.csdn.net/jieouyang/article/details/8260429

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章