본문 바로가기
프로그래밍

[스크랩] MySQL 데이터베이스 명명 규칙

by 밝음의기둥 2019. 3. 26.
반응형

개발을 하다보면 항상 이름을 정하는 것이 어렵더군요. MariaDB 의 테이블이나 필드 명을 정하는 규칙이 있을까해서 찾아보고 스트랩 했어요.


[자료출처 : https://purumae.tistory.com/200]

공통

  1. 소문자를 사용한다.
  2. 단어를 임의로 축약하지 않는다.
    1. register_date (O) / reg_date (X)
  3. 가능하면 약어의 사용을 피한다.
    1. 약어를 사용해야 하는 경우, 약어 역시 소문자를 사용한다.
  4. 동사는 능동태를 사용한다.
    1. register_date (O) / registered_date (X)

TABLE

  1. 단수형을 사용한다.
  2. 이름을 구성하는 각각의 단어를 underscore 로 연결하는 snake case 를 사용한다.
  3. 교차 테이블 (many-to-many) 의 이름에 사용할 수 있는 직관적인 단어가 있다면 해당 단어를 사용한다.
    1. 적절한 단어가 없다면 relationship을 맺고 있는 각 테이블의 이름을 "_and_" 또는 "_has_" 로 연결한다.
    1. article, movie : 단수형
    2. VIP_member : 약어는 대문자 & 단어의 연결에 underbar를 사용
    3. article_and_movie : 교차 테이블을 "_and_" 로 연결

COLUMN

  1. auto increment 속성의 PK를 대리키로 사용하는 경우, "테이블 이름"_id 의 규칙으로 명명한다.
  2. 이름을 구성하는 각각의 단어를 underscore 로 연결하는 snake case 를 사용한다.
  3. foreign key 컬럼은 부모 테이블의 primary key 컬럼 이름을 그대로 사용한다.
    1. self 참조인 경우, primary key 컬럼 이름 앞에 적절한 접두어를 사용한다.
    2. 같은 primary key 컬럼을 자식 테이블에서 2번 이상 참조하는 경우, primary key 컬럼 이름 앞에 적절한 접두어를 사용한다.
  4. boolean 유형의 컬럼이면 "_flag" 접미어를 사용한다.
  5. date, datetime 유형의 컬럼이면 "_date" 접미어를 사용한다.
    1. article_id, movie_id : "테이블 이름" + "_id"
    2. complete_flag : boolean 유형의 컬럼
    3. issue_date : 날짜 유형의 컬럼

INDEX

  1. 이름을 구성하는 각각의 단어를 hyphen 로 연결하는 snake case 를 사용한다.
  2. 접두어
    1. unique index : uix
    2. spatial index : six
    3. index : nix
  3. "접두어"-"테이블 이름"-"컬럼 이름"-"컬럼 이름"
    1. uix-account-login_email

FOREIGN KEY

  1. 이름을 구성하는 각각의 단어를 hyphen 으로 연결하는 snake case 를 사용한다.
  2. "fk"-"부모 테이블 이름"-"자식 테이블 이름"
    1. 같은 부모-자식 테이블에 2개 이상의 foreign key가 있는 경우, numbering합니다.
    1. fk-movie-article : article 테이블이 movie 테이블을 참조
    2. fk-admin-notice-1 / fk-admin-notice-2 : notice 테이블이 admin 테이블을 2회 이상 참조하여 numbering

VIEW

  1. 접두어 "v"를 사용한다.
  2. 기타 규칙은 TABLE과 동일
    1. v_privilege

Stored Procedure

2018/06/01 - [MySQL/Stored Procedure] - [MySQL/Stored Procedure] 명명 규칙

 

FUNCTION

  1. 접두어 "usf"를 사용한다.
  2. 이름을 구성하는 각각의 단어를 underscore 로 연결하는 snake case 를 사용한다.
    1. usf_random_key

TRIGGER

  1. 이름을 구성하는 각각의 단어를 underscore 로 연결하는 snake case 를 사용한다.
  2. 접두어
    1. tra : AFTER 트리거
    2. trb : BEFORE 트리거
  3. "접두어"_"테이블 이름"_"트리거 이벤트"
    1. tga_movie_ins : AFTER INSERT 트리거
    2. tga_movie_upd : AFTER UPDATE 트리거
    3. tgb_movie_del : BEFORE DELETE 트리거

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


반응형