sqler.com 커뮤니티에 다음과 같은 [http]질문(http://www.sqler.com/411687)이 올라왔다.
두 개 이상의 테이블에서의 데이터 중복 방지가 가능한 방법이 있을까요?

물론 프로시저같은 프로그래밍 방법을 통해서가 아니라

데이터 입력시에 아예 그냥 제약이 걸릴 수 있는 방법이 있는 지 궁금합니다.




예를 택배, 물류센터, 수송차 라는 테이블이 있을 경우




택배 테이블       : 택배ID(PK), 택배명...

물류센터 테이블 : 물류센터ID(PK), 택배ID(FK)...

수송차 테이블    : 수송차ID(PK), 택배ID(FK)...




이 있으면 물류센터 테이블에 있는 택배ID 가 수송차 테이블에도 있으면

안되므로 하나의 택배ID 는 물류센터나 수송차 둘 중 하나에만 있어야

합니다. 




프로시저로 걸러내는건 어렵지 않지만 가능하면 실수로라도 중복 입력되는 일 자체가

발생하게 하고싶지가 않은데... 방법이 없을까요? ㅠ

이렇게 답변을 달았다.
흠.. 질문의 내용으로 면 대충..이렇게 되것네요..

[택배] --< [입고] >-- [물류센터]
            |
            |
            ^
           [출고] >-- [수송차] 

[수송차]는 배송수단 중에 하나의 부분집합정도..

"하나의 택배ID 는 물류센터나 수송차 둘 중 하나에만 있어야" 한다는 제약조건은 
데이터 모델이 좀 야리꾸리해서 나온 것이겠네요.
모델을 바꾸면 이 제약조건은 필요없게 되것슴다. 
프로세스를 따라가면서 토큰을 잡는 식의 데이터 모델은 지양해야 합니다. 

엔터티는 대략 잘 뽑으신듯한데.. 엔터티 간의 관계를 좀 더 생각하시면 질문의 내용은
아예 필요없게되겠네요..