MySQL DB 설계를 할 때 명명 규칙을 참고할 일이 생겼습니다.
잘 정리된 포스팅을 발견해서 기록합니다.
출처 : https://purumae.tistory.com/200


공통

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

TABLE

  1. 단수형을 사용한다.
  2. 이름을 구성하는 각각의 단어를 underscore 로 연결하는 snake case 를 사용한다.
  3. 교차 테이블 (many-to-many) 의 이름에 사용할 수 있는 직관적인 단어가 있다면 해당 단어를 사용한다.
  4. 적절한 단어가 없다면 relationship을 맺고 있는 각 테이블의 이름을 "and" 또는 "has" 로 연결한다.

예시

article, movie : 단수형
VIP_member : 약어는 대문자 & 단어의 연결에 underbar를 사용
article_and_movie : 교차 테이블을 "and" 로 연결

COLUMN

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

예시

article_id, movie_id : "테이블 이름" + "_id"
complete_flag : boolean 유형의 컬럼
issue_date : 날짜 유형의 컬럼

 

INDEX

  1. 이름을 구성하는 각각의 단어를 hyphen 으로 연결하는 snake case 를 사용한다.

접두어
unique index : uix
spatial index : six

index : nix

"접두어"-"테이블 이름"-"컬럼 이름"-"컬럼 이름"

예시

uix-account-login_email

FOREIGN KEY

  1. 이름을 구성하는 각각의 단어를 hyphen 으로 연결하는 snake case 를 사용한다.

"fk"-"부모 테이블 이름"-"자식 테이블 이름"

같은 부모-자식 테이블에 2개 이상의 foreign key가 있는 경우, numbering합니다.

예시

fk-movie-article : article 테이블이 movie 테이블을 참조
fk-admin-notice-1 / fk-admin-notice-2 : notice 테이블이 admin 테이블을 2회 이상 참조하여 numbering

 

VIEW

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

예시

v_privilege

stored procedure

FUNCTION

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

예시

usf_random_key

TRIGGER

  1. 이름을 구성하는 각각의 단어를 underscore 로 연결하는 snake case 를 사용한다.
  2. 접두어
    tra : AFTER 트리거
    trb : BEFORE 트리거

"접두어""테이블 이름""트리거 이벤트"

예시

tga_movie_ins : AFTER INSERT 트리거
tga_movie_upd : AFTER UPDATE 트리거
tgb_movie_del : BEFORE DELETE 트리거


도움이 되셨다면 하트🤍꾸욱 부탁드립니다.

728x90

'프로그래밍 > Node.js' 카테고리의 다른 글

HTTP Cookie  (0) 2020.04.11
Node.js npm pm2  (0) 2020.04.05
MySQL 웹앱 - 글목록  (0) 2020.03.21
MySQL select insert delete update  (0) 2020.03.21
MySQL 사용  (0) 2020.03.18

+ Recent posts