2010.08.06 14:25

SQL & PL/SQL Naming Convention



본 내용은 이전에 작성된 SQL Style Guide에 이어진 문서입니다. 별도로 보셔도 상관없으나 함께 보시면 더 많은 도움이 되실 겁니다.   

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 레벨에서는 파일명이나 오브젝트 명 및 설명, 변경정보 등을 기술한다.

-- *****************************************************************************
-- Name : Support_RSS_DDL_20081119.SQL
-- Description : Support_RSS_연동기능 추가
--
-- History
-- 2008.11.19 jinook.lee 1.최초 생성
-- **************************************************************************************

 

함수 / 프로시저 등의 OBJECT 레벨의 주석

함수는 프로시서등의 오브젝트는 위의 기본 주석에 파라미터 정보, 리턴값 정보를 추가로 입력한다.

-- *****************************************************************************
-- Name : FN_URL_STR
-- Description : 문자열에 특수문자 공백을 제거한 문자열을 리턴
-- Param : p_String - 변환전 문자열
-- Return : 변환된 문자열.
--
-- History
-- 2007-10-08 jinook.lee 1.Created
-- ******************************************************************************

 * 끝으로 SQL Style Guide & Code Convention에 대한 출력자료(PDF문서)가 필요하시면 Comment로 남겨주시면 메일로 보내드립니다. 너무 요청자가 많으면 파일을 업로드 해 드리도록 하겠습니다. ㅋㅋ 제 생각에는 별로 요청하시는 분 없을것 같거든요.

'데이터베이스 > SQL' 카테고리의 다른 글

SQL & PL/SQL Naming Convention  (3) 2010.08.06
SQL Style Guide  (1) 2010.08.06
Trackback 0 Comment 3
  1. 기려심매 2010.08.12 11:30 신고 address edit & del reply

    정리가 잘 되어 있네요. 자료좀 부탁드리겠습니다.^^ dreamaker7@naver.com
    감사합니다.

  2. exexit 2010.10.06 19:42 신고 address edit & del reply

    exexit@naver.com 자료좀 부탁합니다.

  3. 떠비 2011.06.16 17:38 신고 address edit & del reply

    잘봤습니다. 필요한자료입니다.
    오라클 pl/sql 코딩 가이드 추가 자료 있으면 부탁드리겠습니다.
    감사합니다.

    sonicbaba@hanmail.net