🔻Back-End/Database

[ERD] ERD 작성 시 주의할 점

_니지 2022. 10. 22. 19:09
  1.  테이블명은 파스칼케이스(ex. TableName, UserInfo), 칼럼명은 카멜케이스(ex. columnName, userId)
  2. 쿼리문으로 얻을 수 있는 값들을 칼럼으로 만들지는 않았는지(좋아요, 찜 개수, 리뷰 개수 등등) 확인
  3. 모든 테이블에 구분자(id나 idx), createdAt, updatedAt, status 생성
  4. 연결테이블의 pk의 경우, 복합키(2개의 pk)가 아닌 별도의 독립적인 키를 만들어 pk(id or idx)로 만들어야 한다
  5. 모든 테이블의 기본키(id) 칼럼 데이터 타입은 BIGINT형을 사용하고 AI 설정하는 것이 좋다(칼럼의 개수는 무한히 많이 늘어날 가능성이 있기 때문)
  6. 음수를 사용하는 경우가 아니라면 int unsigned 타입을 선택(불필요한 공간을 최소화) 또한 int형일 때 null을 허용x
  7. 비밀번호의 경우 varchar(200)정도로 크기를 넉넉하게(비밀번호는 암호화되어 저장되기 때문에 넉넉한 크기로 잡아주는 것이 좋기 때문 / password123 -> (암호화)dnsakjn4j12#@fcjdsjn3kij41)
  8. 휴대폰 번호의 경우 varchar형을 사용. int로 하면 010에서 앞의 0이 짤림
  9. 이미지와 같은 미디어 파일은 URL을 통해 가져오기 때문에 TEXT Type을 사용
  10. 좋아요 수나 댓글 수 등은 쿼리문을 통해서 가져올 수 있으므로 칼럼으로 사용x
  11. 요즘은 DB공간이 충분하기 때문에 전반적으로 넉넉하게 크기를 잡는 것이 좋음(미래의 변수를 고려하여 넉넉히)
  12. Null, not Null 을 구분(필수값 or 옵션값)
  13. 참조관계의 경우, 1:1, 1:N, N:M을 제대로 설정하고 이에 맞게 테이블 구성 및 fk매칭
  14. 중복된 테이블이 존재하지 않는지, 하나로 합쳐도 되는 테이블이 있지는 않은지, 반대로 따로 테이블을 분리 시켜야하는데 하나로 합치지는 않았는지 확인
  15. '좋아요/싫어요'같은 경우, 좋아요 취소 같은 기능도 있어야 하기 때문에 싫어요와 분리
728x90
반응형