📝1. 공통
- 소문자를 사용한다.
- 단어를 임의로 축약하지 않는다.
👉 ex) register_date (o) / reg_date (x)
- 가능한 약어의 사용을 피한다. 사용해야 하는 경우, 약어 역시 소문자로 사용한다.
- 동사는 능동태를 사용한다.
👉 ex) register_date (o) / registered_date (x)
📝2. 테이블
- 단수형을 사용한다.
- 이름을 구성하는 각각의 단어를 underscore로 연결되는 snake case를 사용한다.
- 교차 테이블(many-to-many)의 이름에 사용할 수 있는 직관적인 단어가 있다면 해당 단어를 사용한다. 적절한 단어가 없다면 관계를 맺고 있는 각 테이블의 이름을 "and" 또는 "has"로 연결한다.
👉 ex)
articles, movies : 복수형
vip_members: 약어도 예외 없이 소문자 & 단어 연결에 underbar 사용
articles_and_movies: 교차 테이블을 "and"로 연결
📝3. 컬럼
- auto increment 속성의 PK를 대리키로 사용하는 경우, "테이블 이름_id"의 규칙으로 명명한다.
- 이름을 구성하는 각각의 단어를 snake case를 사용한다.
- foreign key 컬럼은 부모 테이블의 primary key 컬럼 이름을 그대로 사용한다.
- self 참조인 경우, primary key 컬럼 이름을 그대로 사용한다.
- 같은 primary key 컬럼을 자식 테이블에서 2번 이상 참조하는 경우, primary key 컬럼 이름 앞에 적절한 접두어를 사용한다.
- boolean 유형의 컬럼이면 "_flag" 접미어를 사용한다.
- date, datetime 유형의 컬럼이면 "_date" 접미어를 사용한다.
👉 ex)
article_id, movie_id: "테이블이름" + "_id"
complet_flag: boolean 유형의 컬럼
issue_date: 날짜 유형의 컬럼
📝4. INDEX
- 이름을 구성하는 각각의 단어를 hyphen으로 연결하는 kebab case를 사용한다.
- 접두어
unique index: uix
spatial index: six
index: nix
"접두어"-"테이블 이름"-"컬럼 이름"-"컬럼 이름"
👉 ex) uix-account-login-email
📝5. FOREIGN KEY
- 이름을 구성하는 각각의 단어를 hyphen으로 연결하는 kebab case를 사용한다.
- "fk"-"부모테이블 이름"-"자식 테이블 이름"
👉 ex)
fk-movie-article: article테이블이 movie테이블 참조
fk-admin-notice-1, fk-admin-notice-2: notice 테이블이 admin테이블을 2회 이상 참조하여 넘버링
📝6. VIEW
- 접두어 "v"를 사용한다.
- 기타 규칙은 테이블과 동일하다.
👉 ex) v_privileges
📝7. Stored Procedure
2018/06/01 - [MySQL/Stored Procedure] - [MySQL/Stored Procedure] 명명 규칙
📝8. FUNCTION
- 접두어 "usf"를 사용한다.
- 이름을 구성하는 각각의 단어를 underscore로 연결하는 snake case를 사용한다.
👉 ex) usf_random_key
📝9. TRIGGER
- 이름을 구성하는 각각의 단어를 underscore로 연결하는 snake case를 사용한다.
- 접두어
tra: after 트리거
trb: before 트리거
"접두어"_"테이블 이름"_"트리거 이벤트"
👉 ex)
tga_movies_ins: after insert 트리거
tga_movies_upd: after update 트리거
tgb_movies_del: before delete 트리거
출처: https://purumae.tistory.com/200