데이터 베이스를 설계하는데 기본적인 팁을 정리하도록 해보겠습니다.
많은 분들이 데이터베이스를 설계할때 무심코 넘어 가거나 귀찮아서 넘어가는 문제를 짚고 넘어가도록 하겠습니다.
왜냐하면 그것이 결국 나중에 검색하는 쿼리의 속도를 늦추거나 에러를 일으키는 원인이 되는 가장 큰 원인이 되기 때문입니다.
1. 데이터 베이스의 테이블 분리.
되도록 테이블을 작게 쪼개는게 중요합니다.
예를들면 어떤 사원에 대한 정보가 있을 때 가족에 대해 넣고 싶으면 다시 가족 테이블을 만들어서 릴레이션 시켜주는게.
그 사원 테이블 안에 가족 정보를 넣는것보다 나중에 쌓이면 몇배는 속도가 빠릅니다.
특히, 가족이 없는 사람도 있을수 있고 가족이 많을 경우도 있는데 이걸 빈 공간으로 한다면 데이터베이스에서는 매우 안좋은 결과를 초래합니다.
2. 릴레이션 설정
외래키를 잘 설정해서 테이블이 삭제될때 같이 삭제 되거나, 먼저 연관된 테이블이 삭제 되지 않으면 삭제되지 않게 설정을 해놔야 됩니다.
만일 이것을 잘 설정하지 않으면, 결국 쓰레기 테이블들이 데이터베이스에 쌓여서 에러를 일으키는 가장 큰 원인이 됩니다.
테이블간의 관계를 잘 설계해서 처음부터 외래키를 설정을 해놔야 됩니다.
예를 들어 User 테이블에 uid 컬럼이 있이면 family테이블에 uid를 가져와서 만드는데 꼭 외래키로 ON DELETE 옵션 ON UPDATE옵션
을 RESTRICT 옵션을 걸어서 삭제될때 혼자만 삭제 안되게 해주는 것을 이야기합니다.
3. 설명 꼭 쓰기
데이터베이스에서 테이블을 만들때 초보자들이 가장 많이 하는 실수 중에 하나가 설명을 비워놓고 만드는데 나중에 유지 보수할때 난리납니다. 꼭 설명을 써서 이게 무엇을 의미하는지 자세히 써놓기 바랍니다. 그래야 데이터베이스를 나중에 유지 보수할때 큰 도움이 됩니다.
4. 같은 이름 안쓰기
컬럼명을 정할때 테이블마다 동일한 이름을 가진 컬럼을 만들면 안됩니다. 나중에 쿼리 만들때 엄청나게 헷갈립니다. 꼭 그 테이블마다 다르게 컬럼명을 정해야 됩니다.
예를들어 id라는 컬럼 같은 경우 user테이블에 있는 id는 uid / family테이블에 있는 id는 fid이런식으로 물론 외래키로 할거는 같이 uid로 해야 되고요.
5. 테이블명을 숫자로 만들지 않기.
테이블명을 꼭 영어로 만들어 쓰길 바랍니다 물론 숫자로 생성도 가능하지만 나중에 쿼리를 줄때 이러면 테이블명에 쉼표가 안들어가면 쿼리가 먹지를 않습니다 영어로 되어있으면 그냥 도 되고 쉼표도 되는데 이거 쿼리 만드는 입장에서 굉장히 까다롭습니다.
6. 고유값을 여러 컬럼의 합으로 정하기
꼭 고유값을 하나의 컬럼으로 설계하시는 분들이 있는데 필요하다면 여러 컬럼값을 합쳐서 고유값으로 만들어도 됩니다.
기본적인 오류중하나가 고유값을 하려고 컬럼을 하나 추가하시는분들이 있는데 컬럼 추가보다 여러값을 합쳐서 고유값으로 설정하는게
훨씬 좋은 설계입니다 데이터베이스가 가벼워지거든요. 물론 한개의 컬럼으로 고유값으로 할수있으면 하면 좋습니다. 쿼리쓰기 편하거든요
그런데 고유값때문에 컬럼을 추가로 할 필요는없다는 겁니다.
기본적으로 위의 6가지만 주의하시고 데이터베이스를 설계하시면 기본적인 데이터베이스 설계는 끝난겁니다.