DB
1. table
1-1. naming
- 모든 글자를 소문자로 한다.
- 명사 또는 명사구를 사용한다.
- 단수를 사용한다.
- 언더스코어(_)로 단어를 구분한다(snake_case).
- 상세 테이블에는 추상적인
_detail
이나_extend
대신 명확한 의미의 단어를 사용한다.(o) user_personal_info (x) user_detail (x) user_extend
2-2. prefix
- 서비스, 솔루션
- 커스터마이징이 필요할 수 있기 때문에 사용한다.
- 서비스 이름이나 회사의 이름을 사용한다(foo_, bar_, …).
- 5글자 이상인 경우 축약어를 사용한다.
- outsourcing: 요구사항에 따라 결정한다.
1-2. suffix
suffix | 용도 |
---|---|
_log | 히스토리성 |
2. column
2-1. naming
- 사용여부 삭제여부와 같은 경우 _yn 대신에 동사의 과거분사형을 사용한다.
- 축약어를 가능한 배제하며 단어가 길어지는 합성어의 경우에 대한 축약 패턴 정의에 따른다.
2-2. type
- 날짜
- 시간 제외:
- 시간 포함: locale과, millisecond 6자리까지 포함하는 타입.
MySQL: TIMESTAMP(6) Oracle:
- 금액: 19자리 정수부와 2자리 소수부를 포함하는 고정소수점 타입.
MySQL: DECIMAL(19, 2) Oracle: NUMBER(19, 2)
2-2. prefix
- 서비스, 솔루션: 사용하지 않는다.
- outsourcing: 요구사항에 따라 결정한다.
2-3. suffix
suffix | type(MySQL / MaridDB) | type(Oracle) | 용도 | 비고 |
---|---|---|---|---|
_id | BIGINT(20) | pk | ||
{target_table}_key | BITINT(20) | fk | 대상 테이블의 prefix를 제외한 이름 | |
_name | VARCHAR(n) | VARCHAR2(n) | 이름 | |
_title | VARCHAR(n) | VARCHAR2(n) | 제목 | |
_code | VARCHAR(20) | VARCHAR2(20) | 코드 | |
_date | 날짜(시간 제외) | |||
_dt | TIMESTAMP(6) | 날짜(시간 포함) | locale을 포함하는 타입, millisecond 6자리 | |
_from | variable | variable | 시작일(시) | |
_to | variable | variable | 종료일(시) | |
_count | variable | variable | count | |
_amount | DECIMAL(19, 2) | NUMBER(19, 2) | 금액 | |
_fee | DECIMAL(19, 2) | NUMBER(19, 2) | 비용 | |
_rate | 율 |
2-4. common columns
name | type(MySQL / MariaDB) | type(Oracle) | 용도 | 비고 |
---|---|---|---|---|
enabled | TINYINT(1) | 사용여부 | ||
deleted | TINYINT(1) | 삭제여부 | ||
created_by | BIGINT(20) | 등록자 | ||
created_dt | TIMESTAMP(6) | 등록일 | ||
modified_by | BIGINT(20) | 수정자 | ||
modified_dt | TIMESTAMP(6) | 수정일 |
Ready for more?