문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
sql에서의_안티패턴 [2017/03/06 10:09] cumul0529 만듦 |
sql에서의_안티패턴 [2017/03/06 01:18] (현재) |
||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | {{tag> | ||
+ | |||
====== SQL에서의 안티패턴 ====== | ====== SQL에서의 안티패턴 ====== | ||
프로젝트들을 진행하면서 항상 DB 설계에 대한 고민이 많았습니다. 특히 여러 개의 외부키를 도입하고 조금만 관계가 복잡해지면 쿼리와 비지니스 로직이 순식간에 스파게티가 되다 보니까, SQL을 언젠가 공부하긴 해야겠다고 생각해 왔습니다. 그러던 중에 빌 카윈(Bill Karwin)의 [[http:// | 프로젝트들을 진행하면서 항상 DB 설계에 대한 고민이 많았습니다. 특히 여러 개의 외부키를 도입하고 조금만 관계가 복잡해지면 쿼리와 비지니스 로직이 순식간에 스파게티가 되다 보니까, SQL을 언젠가 공부하긴 해야겠다고 생각해 왔습니다. 그러던 중에 빌 카윈(Bill Karwin)의 [[http:// | ||
- | ===== 다대일 테이블 연관 | + | ===== 대원칙 ===== |
+ | |||
+ | {{ : | ||
+ | |||
+ | ===== 스키마 설계 ===== | ||
+ | |||
+ | ==== 다대일 테이블 연관 ==== | ||
비슷비슷한 테이블들이 공통된 칼럼을 갖는 경우가 있습니다. 예를 들어서 위키의 게시물과 파일은 공통적으로 제목, 작성 시각, 접근 권한 등등을 가지고 있을 수 있죠. 게다가 같은 연관(relation)을 갖고 있을 수도 있습니다. 예를 들어서 위키의 문서와 파일은 모두 작성자와의 연관이나 다른 문서와의 역링크 연관을 가집니다. 이때 단순히 여러 테이블과 하나의 테이블 사이에 연관을 생성하는 것은 안티패턴에 해당합니다. 지금까지의 예시로 보자면, 다음과 같이 문서 테이블과 파일 테이블이 모두 같은 댓글 테이블에 연관되는 상황입니다. | 비슷비슷한 테이블들이 공통된 칼럼을 갖는 경우가 있습니다. 예를 들어서 위키의 게시물과 파일은 공통적으로 제목, 작성 시각, 접근 권한 등등을 가지고 있을 수 있죠. 게다가 같은 연관(relation)을 갖고 있을 수도 있습니다. 예를 들어서 위키의 문서와 파일은 모두 작성자와의 연관이나 다른 문서와의 역링크 연관을 가집니다. 이때 단순히 여러 테이블과 하나의 테이블 사이에 연관을 생성하는 것은 안티패턴에 해당합니다. 지금까지의 예시로 보자면, 다음과 같이 문서 테이블과 파일 테이블이 모두 같은 댓글 테이블에 연관되는 상황입니다. | ||
줄 75: | 줄 83: | ||
* 하나의 PK만으로 연관을 생성할 수 있음 | * 하나의 PK만으로 연관을 생성할 수 있음 | ||
* 참조정합성을 강제할 수 있음 | * 참조정합성을 강제할 수 있음 | ||
+ | |||
+ | ===== 쿼리 설계 ===== |