확인을 클릭하면 문제가 무엇인지 명확히 알 수 있습니다. 데이터베이스가 5 개 있습니다. A와 B, V_1, V_2 및 V_3이라고합시다. A와 B는 할 일 목록을 나타냅니다. 이러한 작업은 V_i 테이블에 설명되어 있습니다. 이제 A는 특정 유형의 항목으로 완료해야하는 항목의 템플리트의 종류를 나타냅니다. 한편, B는 A가 기술 한 추상 항목 인 경우 구체적인 인스턴스로 수행해야 할 작업 (또는 수행 된 작업)을 설명합니다. 따라서 OOP 용어에서 A는 클래스를 나타내고 B는 A의 인스턴스를 나타낼 수 있습니다. 테이블 B에 무언가가 삽입 될 때마다 테이블 A의 관련 데이터가 복사되므로 A에 영향을 미치지 않고 해당 특정 항목에 대해 수정할 수 있습니다.여러 테이블 중 하나와 정확히 1 : 1의 관계
그래, 실제 문제는 여기에 있습니다. 어떻게 이것을 모델링합니까? 정확히? 내 주요 관심사는 V_i의 각 레코드가 A와 B 모두에 연결되어서는 안된다는 것입니다. A 또는 B 중 하나와 1 대 1 관계 여야합니다. 또한 V_i와 V_j는 A 또는 B의 동일한 레코드에 연결되어서는 안됩니다. B. 나는 이것을 올바르게하는 방법을 모른다. 현재 구조는 다음과 같습니다.
A와 B에는 ID라는 PK가 있습니다. 각 V_i에는 ID라고하는 PK와 A 또는 B를 참조하는 두 개의 FK도 있습니다. A_ID 및 B_ID라고 부릅니다. 이제 현재 구현에서는 A_ID 또는 B_ID가 NULL이지만 둘 다가 아닌지 확인합니다. 그러나 이것을 수행하는 더 좋은 방법이 있는지 궁금합니다. 또한 여러 V_i가 A 또는 B의 동일한 항목을 참조 할 수있는 문제가 있습니다.
그래서 문제가 해결되기를 바랍니다. 제약 조건을 적용하기 위해 외부 코드에 의존하지 않고 관계형 데이터베이스를 적절하게 모델링 할 수있는 방법이 있습니까? 사전에 귀하의 의견을 보내 주셔서 감사합니다.
안부 데이비드
나는 당신이 룩업 테이블을 필요로 할 것이라고 생각한다. 나는 이것에 대한 최선의 구현을 확신하지는 않지만, Quassnoi, OMG_Ponies, gbn, martin, Joe Stefanelli 또는 SQLMenace와 같은 현명한 누군가가 파이프를 넣을 것입니다! – JNK