#title Data Modeling Case Study - 택배 sqler.com 커뮤니티에 다음과 같은 [http://www.sqler.com/411687 질문]이 올라왔다. {{{ 두 개 이상의 테이블에서의 데이터 중복 방지가 가능한 방법이 있을까요? 물론 프로시저같은 프로그래밍 방법을 통해서가 아니라 데이터 입력시에 아예 그냥 제약이 걸릴 수 있는 방법이 있는 지 궁금합니다. 예를 택배, 물류센터, 수송차 라는 테이블이 있을 경우 택배 테이블 : 택배ID(PK), 택배명... 물류센터 테이블 : 물류센터ID(PK), 택배ID(FK)... 수송차 테이블 : 수송차ID(PK), 택배ID(FK)... 이 있으면 물류센터 테이블에 있는 택배ID 가 수송차 테이블에도 있으면 안되므로 하나의 택배ID 는 물류센터나 수송차 둘 중 하나에만 있어야 합니다. 프로시저로 걸러내는건 어렵지 않지만 가능하면 실수로라도 중복 입력되는 일 자체가 발생하게 하고싶지가 않은데... 방법이 없을까요? ㅠ }}} 이렇게 답변을 달았다. {{{ 흠.. 질문의 내용으로 면 대충..이렇게 되것네요.. [택배] --< [입고] >-- [물류센터] | | ^ [출고] >-- [수송차] [수송차]는 배송수단 중에 하나의 부분집합정도.. "하나의 택배ID 는 물류센터나 수송차 둘 중 하나에만 있어야" 한다는 제약조건은 데이터 모델이 좀 야리꾸리해서 나온 것이겠네요. 모델을 바꾸면 이 제약조건은 필요없게 되것슴다. 프로세스를 따라가면서 토큰을 잡는 식의 데이터 모델은 지양해야 합니다. 엔터티는 대략 잘 뽑으신듯한데.. 엔터티 간의 관계를 좀 더 생각하시면 질문의 내용은 아예 필요없게되겠네요.. }}}