1、編寫目的
使用統一的命名和編碼規範,使資料庫命名及編碼風格標準化,以便於閱讀、理解和繼承。
2、適用範圍
本規範適用於公司範圍內所有以oracle作為後台資料庫的應用系統和專案開發工作。
3、物件命名規範
3.1 資料庫和sid
資料庫名定義為系統名+模組名
★ 全域性資料庫名和例程sid 名要求一致
★ 因sid 名只能包含字元和數字,所以全域性資料庫名和sid 名中不能含有「_」等字元
3.2 表相關
3.2.1 表空間
★ 面向使用者的專用資料表空間以使用者名稱+_+data命名 ,如aud 使用者專用資料表空間可命名為aud_data
★ 面向使用者的專用索引表空間以使用者名稱+_+idx命名
★ 面向使用者的專用臨時表空間以使用者名稱+_+tmp命名
★ 面向使用者的專用回滾段表空間以使用者名稱+_+rbs 命名
★ 面向應用的表空間以應用名+_data/應用名+_idx/應用名+_tmp/應用名+_rbs 命名
★ lob 段資料專用表空間以其資料表空間+_+lobs 命名,如上例中資料表空間為aud_data,則lob 段表空間可命名為aud_data_lobs
3.2.2 表空間檔案
表空間檔案命名以表空間名+兩位數序號(序號從01開始)組成,如aud_data01 等
3.2.3 表
表命名要遵循以下原則:
★ 一般表採用「系統名+t_+模組名+_+表義名」 格式構成
★ 若資料庫中只含有單個模組,命名可採用「系統名+t_+表義名」格式構成
★ 模組名或表義名均以其漢語拼音的首字元命名,表義名中漢語拼音均採用小寫,且字元間不加分割符;
★ 表別名命名規則:取表義名的前3 個字元加最後乙個字元。如果存在衝突,適當增加字元(如取表義名的前4 個字元加最後乙個字元等)
★ 臨時表採用「系統名+t_tmp_+表義名」 格式構成
★ 表的命名如
dft_gy_cbap:系統名(電費 df)+t_+模組名(高壓 gy)+_+表義名(抄表安排 cbap)
dft_cbbj: 系統名(電費 df)+t_+表義名(抄表標記 cbbj)
dft_tmp_hj: 系統名(電費 df)+tmp+表義名(合計hj)(此處為臨時表)
★ 關聯表命名為re_表a_表b,re 是relative的縮寫,表a 和表b均採用其表義名或縮寫形式。
3.2.4 屬性(列或字段)
屬性命名遵循以下原則:
★ 採用有意義的列名,為實際含義的漢語拼音的首字元,且字元間不加任何分割符
★ 屬性名前不要加表名等作為字首
★ 屬性後不加任何型別標識作為字尾
★ 不要使用「id」作為列名
★ 關聯字段命名以 「cd+_+關聯表的表義名(或縮寫)+_+欄位名」進行
3.2.5 主鍵
★ 任何表都必須定義主鍵
★ 表主鍵命名為:「pk+_+表名(或縮寫)+_+主鍵標識」如「pk_yhxx_idkh」等
3.2.6 外來鍵
表外來鍵命名為: 「fk+_+表名(或縮寫)+_主表名(或縮寫)+_+主鍵標識」如「fk_yhlx_yhxx_sfzh」等
3.2.7 check約束
check 約束命名為: 「chk+_+check約束的列名(或縮寫)」
3.2.8 unique約束
unique 約束命名為: 「unq+_+unique約束的列名(或縮寫)」
3.2.9 索引
索引的命名為:「表名(或縮寫)+_+列名+_idx」。其中多單詞組成的屬性列列名取前幾個單詞首字元再加末單詞首字元組成如yd_kh 表khid 上的index: yd_kh_khid_idx
3.2.10 觸發器
★ after型觸發器
系統名+tr_+《表名》_+ +[_row]
★ before型觸發器
系統名+tr_+《表名》_+bef_+[_row]
★ instead of型觸發器
系統名+ti_+《表名》+_++[_row]
★ 各種型別的觸發器中
i,u,d 分別表示insert、update 和delete行級觸發器,後加_row 標識,語句級觸發器不加,如 yddftr_csh_i_row
3.2.11 簇
簇以簇中要儲存的各個表(或表別名)及表間加and的組成 命名,即表「a+and+表b…」,如儲存gr(工人)和grjn(工人技能)表的簇命名為grandgrjn
3.3 檢視
檢視命名以系統名v_+模組名作為字首,其他命名規則和表的命名類似
3.4 序列
序列命名以seq_+含義名組成
3.5 同義詞
同義詞命名與其基礎物件的名稱一致,但要去除其使用者字首或含有遠端資料庫鏈結的字尾
3.6 儲存物件相關
3.6.1 儲存過程
儲存過程命名由「系統名+sp+_+儲存過程標識(縮寫)」組成儲存過程標識要以實際含義的漢語拼音的首字元構成,並用下劃線分割各個組成部分。如增加**商的帳戶的儲存過程為「sfsp_zjdlszh」。
3.6.2 函式
函式命名由「系統名+f+_+函式標識」組成
3.6.3 包
包命名由「系統名+pkg+_+包標識」組成
3.6.4 函式文字中的變數採用下列格式命名:
★ 引數變數命名採用「i (o或io)+_+名稱」形式,字首i 或o 表輸入還是輸出引數
★ 過程變數命名採用「l+_+名稱」形式
★ 全域性包變數命名採用「g+_+名稱」形式
★ 游標變數命名採用「名稱+_+cur」形式
★ 常量型變數命名採用「c+_+名稱」形式
★ 變數名採用小寫,若屬於片語形式,用下劃線分隔每個單詞
★ 變數用來存放表中的列或行資料值時,使用%type、%rowtype 方式宣告變數,使變數宣告的型別與表中的保持同步,隨錶的變化而變化
3.7 使用者及角色
★ 使用者命名由「系統名稱+_+user+_+名詞(或縮寫)或名詞短語(或縮寫)」組成
★ 角色命名由「系統名稱+_+role+_+名詞(或縮寫)或名詞短語(或縮寫)」組成
3.8 資料庫鏈結
★ 資料庫鏈結命名由「遠端伺服器名+_+資料庫名+_+link」組成
★ 若遠端伺服器名和資料庫名一致,上式「_+資料庫名」部分省去
3.9 命名中的其它注意事項
★ 命名都不得超過30個字元。
★ 不要在物件名的字元之間留空格
★ 小心保留詞,要保證你的命名沒有和保留詞、資料庫系統或者常用訪問方法衝突
4、 編碼規範
4.1 一般性注釋
4.1.1 注釋盡可能簡潔、詳細而全面
4.1.2 建立每一資料庫物件時都要加上comment on注釋,以說明該物件的功能和用途;建表時,對某些資料列也要加上comment on注釋,以說明該列和/或列取值的含義。如:xx 表中有czzt列屬性為number(10, 0)可加comment on 注釋如下comment on column xx.czzt is '0 = 正常, 1 = 等待, 2 = 超時, 3 = 登出'
4.1.3 注釋語法包含兩種情況:單行注釋、多行注釋
單行注釋:注釋前有兩個連字元(--),一般對變數、條件子句可以採用該類注釋。
多行注釋:符號/*和*/之間的內容為注釋內容。對某項完整的操作建議使用該類注釋。
4.2 函式文字注釋
4.2.1 在每乙個塊和過程(儲存過程、函式、包、觸發器、檢視等)的開頭放置注釋
*name : --函式名
*function : --函式功能
*input : --輸入引數
*output : --輸出引數
*author : --作者
*createdate : --建立時間
*updatedate : --函式更改資訊(包括作者、時間、更改內容等)
create [or replace] procedure dfsp_***
4.2.2 傳入引數的含義應該有所說明。如果取值範圍確定,也應該一併說明。取值有特定含義的變數(如boolean型別變數),應給出每個值的含義。
4.2.3 在每乙個變數宣告的旁邊新增注釋。說明該變數要用作什麼
通常,簡單使用單行注釋就行了,例如l_sfzh char(11) --身份證號碼
4.2.4 在塊的每個主要部分之前新增注釋
在塊的每個主要部分之前增加注釋,解釋下—組語句目的,最好是說明該段語句及演算法的目的以及要得到的結果,但不要對其細節進行過多的描述
4.2.5 在塊和過程的開頭注釋中還可以增加要訪問的資料庫等資訊
4.3 常用sql 語句的編寫規範
4.3.1 create語句
create table dft_dksz(
yhbs varchar2(20) not null,
zhgx date,
dkkhd varchar2(24),
constraint pk_dksz_yhbs primary key (yhbs)
)
Oracle開發命名規範
我相信大家不管是做管理或者是做開發也好,都要看 是吧。作為乙個開發人員,能不能讓人看懂,的確是乙個很考驗開發人員程式設計的功底。好像每次看到別人寫的 都會覺得 bull what the is that?所以,乙個開發人員,不但 也要寫得好,並且也要有很好的風格,這樣才能把程式設計的藝術發揮的淋漓盡...
ORACLE資料庫命名規範
oracle資料庫命名規範 1 目的 規範資料庫各種物件的命名規則。2 資料庫命名原則 2.1 資料檔案 如果資料庫採用檔案系統,而不是裸裝置,約定下列命名規則 1 資料檔案以表空間名為開始,以.dbf為結尾,全部採用小寫英文本母加數字命名。如該表空間有多個資料檔案,則從第2個資料檔案開始,在表空間...
Oracle資料庫命名規範
u 資料庫的 schema,資料庫物件如表 字段 索引 序列 儲存過程等的命名約定 u命名使用富有意義的大寫英文詞彙,盡量避免使用縮寫,多個單詞組成的,中間以下劃線分割 u各表之間相關字段列名 字段型別盡量一致 u數值型別不使用 varchar2,日期型別只用 date,不允許使用 varchar2...