[DB] 01. DB 컨벤션
1. 왜 DB 컨벤션?
드디어 고된 기획과 피그마 UI 제작이 거의 마무리를 지어졌다. 그리하여 새롭게 부여된 미션. DB 설계하기! 미션을 받고 첫주에는 최대한 내 학부생 시절의 DB 지식을 꺼내 DB를 짜갔다. 하지만 궈니에게 보여주니 DB 컨벤션을 공부하고 네이밍을 전부 다 바꾸라는 오더가 떨어졌다…!ㅠㅠ 그리하여 시작된 DB 컨벤션 공부~!
1. 내가 마구잡이로 짠 초반 DB
difficulty 테이블은 stretching에 종속된 것인데 (스트레칭별 난이도) 테이블 이름만 봐서는 “이게 도대체 무엇에 관한 난이도인건데~?” 할 수 있다.
따라서 그것이 종속된 테이블이라면 각 테이블 명은 무엇에 종속됐는지 (궈니말로는 도메인). 즉 도메인이 무엇인지를 알려주는 것이 좋다.
각 테이블의 기본키로서 인덱스 역할을 하는 칼럼 이름은 테이블명*idx로 지었다. 하지만 테이블 명에서 이미 * 가 사용되기 때문에 이 때에는 테이블의 첫단어인 attend만 사용하여 attend_idx를 사용했다.
테이블 마다 idx 명명 규칙이 다르다? > 완전 쓰레기다!
2. 네이밍 컨벤션 이란
네이밍 컨벤션이 무엇일까. 이름에 관한 규칙이란 것은 어렴풋이 알지만 정확히 짚고 넘어가 보자
소스 코드와 문서에 있는 변수 이름, 타입, 함수 등의 식별자에 사용되는 문자열을 선택하기 위한 규칙
우리는 프로그래밍을 하며 수많은 변수를 사용할 것이다. 그 수많은 변수를 내가 다 기억할 수 있을까? NEVER! 변수명만 보고도 어떤 데이터를 담고 있는가를 알아볼 수 있어야 한다. 그리하여 네이밍 컨벤션이 중요하단 뜻!
네이밍 컨벤션을 사용했을 때의 장점
- 소스 코드를 읽고 이해하는데 필요한 노력과 시간 절약
- 코드를 검토할 때 명명 기준에 대한 논쟁보다 더 중요한 주제에 집중함으로써 시간 절약
- 간단히 말해서 가독성 향상!
3. DB 컨벤션 종류
기존 내 db 설계는 위 그림과 같이 스네이크케이스로 이루어져있었다. 이유는 딱히 없었다. 습관에 의한 당연함..?
1. 파스칼케이스
PascalCase
글자를 보면 이해하기 쉽다. 단어와 단어가 합성되어 있을 때 각 단어의 첫글자를 대문자로 사용한다.
2. 카멜케이스
camelCase
단어와 단어가 합성되어 있을 때 첫 단어의 첫글자는 소문자. 그 후의 단어는 첫 글자를 대문자로 사용한다.
3. 스네이크케이스
snake_case
단어와 단어가 합성되어 있을 때 각 단어는 모두 소문자를 사용하고 ‘_‘를 사용하여 연결한다.
이 외에도 여러가지 DB 네이밍 규칙이 존재한다. 하지만 위 3가지가 대표적이고, 나는 이 3가지 내에서만 네이밍 규칙을 정할 것이기 때문에 여기까지만 알아보도록 하자.
다음 포스팅에선 그리하여 내 프로젝트의 db 네이밍 규칙은 어찌할 것인지를 정리해보자!