
이번주 신입사원 연수에 데이터베이스 분석/설계에 관한 내용이 나왔다.
내가 이전까지 보통 설계 할 때, 단일테이블에 PK기본키가 2개가 될 경우에는 거의 모든 경우에 테이블을 두개로 분리했다.
하지만 현업에서 쓰는 공통코드의 설계는 대분류와 소분류를 같이 PK로 잡고 설계하는 방식이였다.
이를 보고 각 설계 방식의 상황별 장단점이 궁금해져 공부해서 정리한다.
먼저 크게 두 가지 방식으로 나누었다.
CREATE TABLE COMMON_CODE (
MAIN_CODE VARCHAR(10),
SUB_CODE VARCHAR(10),
CODE_NAME VARCHAR(100),
DESCRIPTION TEXT,
PRIMARY KEY (MAIN_CODE, SUB_CODE)
);
CREATE TABLE MAIN_CODE (
MAIN_CODE VARCHAR(10) PRIMARY KEY,
MAIN_NAME VARCHAR(100),
DESCRIPTION TEXT
);
CREATE TABLE SUB_CODE (
MAIN_CODE VARCHAR(10),
SUB_CODE VARCHAR(10),
CODE_NAME VARCHAR(100),
DESCRIPTION TEXT,
PRIMARY KEY (SUB_CODE),
FOREIGN KEY (MAIN_CODE) REFERENCES MAIN_CODE(MAIN_CODE)
);
간략하게 정리하면 이렇게 된다.
물론 개인이 하는 프로젝트 수준에서는 어떤 방법을 선택하든 별 성능차이가 없으므로 가독성이 더 좋은 방법을 선택하는 것이 최선이다.
하지만 이제는 실제 다수의 사용자들이 이용하는 서비스를 설계해야 되기 때문에 조건을 조금 더 걸어보겠다.
실제 운영 환경에서는 이러한 차이점을 모두 인지 후 상황에 맞게 선택하는게 중요할 것 같다.
어쩌면 현재 용량 가격은 많이 낮아진 추세라고 하니 성능과 코드 가독성에만 맞춰서 선택하는 것도 방법일 것 같다!