Naming Conventions
File Naming Conventions
PL/SQL이나 SQL에서 코드를 저장할 때 다음과 같은 확장자를 사용한다. Oracle Object 타입별로 확장자를 사용함으로써 Toad 같은 툴에서 해당 에디터를 바로 실행시킬 수 있으며, 향후 Version Control 시스템과 연동하기도 유리하다. 또한, Object의 유지관리 및 editplus 같은 편집기에서 해당 확장자별로 Syntax Coloring 을 적용하기도 유리하다.
File Type |
Extension |
Package (spec, and optionally body) |
pkg |
Package Body |
pkb |
Procedure |
prc |
Function |
fnc |
Object type (spec, and optionally body) |
typ |
Object type body |
tyb |
Stored Java Procedure |
sjp |
Stored Java Function |
sjf |
Trigger |
trg |
Any other PL/SQL |
pls |
Any other SQL |
sql |
표 1 File Name Convention
Variable Names < Identifier elements>
일반적으로 변수명은 다음과 같은 5가지 요소로 구성되어진다. <Scope><Type><Primary Identifier><Modifier><Suffix> 하지만, 본 가이드에서는 <Scope><Type>을 하나의 <Prefix>로 구성하여 <Prefix><Primary Identifier>로 변수명을 구성한다.
변수명의 CASE는 prefix<소문자>_Primary Identifier<Camel Case>와 소문자 + '_'로 구성한다. CamelCase가 원칙이며, 오라클 변수 스타일인 소문자와 underbar(_)만으로 연결된 변수 스타일도 허용한다. 예) v_SiteCode(O), v_site_cd (o)
Prefix
글로벌 변수 : 'g_' + Primary Identifier
글로벌 변수는 주로 패키지 레벨에서 사용되며, private, public 변수에 상관없이 g 접두어를 사용한다. 예) g_ErrorText, g_SiteCode
로컬변수 : 'v_' + Primary Identifier
로컬변수는 로컬식별자인 l 과 변수식별자인 v로 합쳐서 구성할 수도 있으나, 변수식별자인 v만용 사용하여 작성한다. 예) ), v_SiteCode(O), lv_SiteCode(X), l_SiteCode(X)
파라미터변수 : 'p_' + Primary Identifier
주로 프로시저나 함수의 파라미터에 사용되며 접두어 p를 사용한다. in 파라미터, out 파라미터에 대한 suffix는 사용하지 않는다. 예) p_SiteCode(O), p_ProductModelCode(O), p_SiteCode_out (X)
상수 : 'K_' + Primary Identifier
상수는 접두어K를 사용한다. 일반적으로 c_를 사용할 수도 있으나, c는 cursor 변수인 경우에 사용하며 상수의 경우에는 K_를 사용한다. 상수의 경우에는 일반적인 코딩 관습에 따라 예외적으로 대문자로만 변수명을 구성한다. 예) K_InsertMsg(O), K_ACTION_TYPE(O)
커서 변수 : 'c_' + Primary Identifier
커서변수의 경우에는 접두어 'c'를 사용한다. cursor parameter경우에는 접두어 'cp'를 사용한다. 예) c_Employees, c_ModelCode
레코드변수 : 'r_' + Primary Identifier
테이블이나 커서의 ROWTYPE 변수의 경우에는 접두어 'r을 사용한다. 로컬변수라도 v 접두어와 함께 사용하지 않는다. 예) r_employee
루프변수
루프변수는 일반적으로 i, j 같은 simple 변수명을 사용한다. 그러나 v_month 같이 상황에 따라 의미있는 변수를 사용할 수도 있다. 예) FOR v_month IN 1 .. 12 LOOP
Primary Identifier
주 식별자는 변수명의 구성요소 중 가장 중요한 부분으로 의미적으로 명확한 것을 사용한다. 대체로 컬럼명은 약어들로 구성되므로 Primary Identifier로 컬럼명을 사용하기 보다는 Full Name을 사용하는 것을 권고한다. 예) v_PrdMdlCd (X), v_prd_mdl_cd(△), v_ProductModelCode(O)
Object Naming Conventions
스키마 레벨의 오브젝트 테이블명, 컬럼명, 프로시저, 함수, 타입, 트리거 등의 Naming에 대한 가이드는 <Prefix><Primary Identifier><Suffix> 구조를 따른다. 테이블명과 컬럼명은 물리모델링 가이드를 따르며, 본 문서에서는 프로시저, 함수, 패키지, 타입명에 대한 규칙만을 정의한다. 데이터베이스 오브젝트명은 모두 대문자와 Underbar(_)로만 작성함을 원칙으로 한다.
함수명 : 'FN' + '_' + 함수 식별자
함수명은 'FN' 접두어를 사용한다. 예)FN_GET_ENG_NAME 단, 패키지내의 함수명은 FN 접두어를 사용하지 않아도 된다. 예) PKG_UTIL.GET_WORKING_DAY
프로시저 : 'SP' + '_' + 프로시저 식별자
프로시저명은 'SP' 접두어를 사용한다. 예) SP_SYS_LOG 단, 패키지내의 프로시저명은 FN 접두어를 사용하지 않아도 된다. 예) PKG_CODE.GET_CODE_LIST, PKG_COMMON.GET_LOCAL_TIME
패키지 : 'PKG' + '_' + 패키지 식별자
패키지명은 'PKG' 접두어를 사용한다. 예) PKG_DEPLOY 패키지 내의 함수, 프로시저 등의 오브젝트명은 접두어를 사용하지 않는 것을 원칙으로 한다. 예) PKG_COMMON.GET_SYS_TIME(O), PKG_COMMON.GET_USER_NAME(O)
타입 : 'T' + '_' + 타입 식별자
타입은 'T' 접두어를 사용한다. 예) T_VC_TAB
트리거 : 'TR' + '_' + 트리거 식별자<테이블명>
트리거명은 'TR' 접두어를 사용한다. 트리거가 트리거링 되는 조건에 관한 세부사항 (befor, after/Insert, Update, delete 등)은 트리거명에 넣지 않는다., 예) TR_SYS_USER
시퀀스 : 테이블명 + '_' + 'SEQ'
시퀀스 객체는 시퀀스 컬럼을 가진 테이블마다 하나씩 만드는 것을 원칙으로 하며, 접두어를 사용하지 않고, 'SEQ' 접미사를 사용한다. 예)USER_DEPT_SEQ
JOB : 'JOB' + '_' + Primary Identifier + ['_' + 스케줄정보]
JOB 객체나 Scheduled Job의 경우에는 'JOB' 접두어를 사용한다. 예) JOB_RSS 부가적으로 JOB 명에 배치주기 정보를 포함해도 무방하다.
Object Type |
Naming Convention |
Function |
'FN' + '_' + 함수 식별자 |
Procedure |
'SP' + '_' + 프로시저 식별자 |
Package |
'PKG' + '_' + 패키지 식별자 |
Type |
'T' + '_' + 타입 식별자 |
Trigger |
'TR' + '_' + 트리거 식별자<테이블명> |
Sequence |
테이블명 + '_' + 'SEQ' |
Job |
'JOB' + '_' + Primary Identifier |
표 2 Object Name Convention
Comments
주석은 유지보수 및 코드 설명을 위해 반드시 입력한다. 주석 입력단위는 DDL 이나 DML 스크립트를 파일로 작성할 때 파일레벨의 주석, 그리고 스키마의 OBJECT 레벨의 주석, 패키지내의 함수나 프로지저 등 서브 오브젝트, 그리고 프로그램 코드 중 필요한 부분에 주석을 작성한다.
주석문은 /* */ 를 사용하지 않고, -- 문을 사용하는 것을 원칙으로 한다.
파일레벨 / 스키마 OBJECT 레벨의 주석
파일레벨 이나 스키마 Object 레벨에서는 파일명이나 오브젝트 명 및 설명, 변경정보 등을 기술한다.
-- ***************************************************************************** |
함수 / 프로시저 등의 OBJECT 레벨의 주석
함수는 프로시서등의 오브젝트는 위의 기본 주석에 파라미터 정보, 리턴값 정보를 추가로 입력한다.
-- ***************************************************************************** |
* 끝으로 SQL Style Guide & Code Convention에 대한 출력자료(PDF문서)가 필요하시면 Comment로 남겨주시면 메일로 보내드립니다. 너무 요청자가 많으면 파일을 업로드 해 드리도록 하겠습니다. ㅋㅋ 제 생각에는 별로 요청하시는 분 없을것 같거든요.
'SQL > SQL Tech' 카테고리의 다른 글
DB2 Scripts - Table Count By Schema (0) | 2023.06.05 |
---|---|
[SQL] REGEXP_SUBSTR 구분자, 행, 열, 분리 (NULL 포함) (0) | 2022.10.23 |
values 절 (db2, postgresql) (0) | 2022.10.21 |
SQL Fiddle Online SQL Test Tool 비교 (0) | 2022.10.21 |
SQL Style Guide (1) | 2010.08.06 |