테이블 간의 간단한 일대 다 관계가있는 데이터베이스 스키마를 디자인하는 방법을 알고 있습니다. 컨벤션이나 모범 사례가 해당 세트의 특정 관계를 기본 컨텍스트로 지정하는 것이 무엇인지 알고 싶습니다. 예를 들어, 한 사람이 많은 신용 카드를 가지고 있습니다. 나는 그것을 모델링하는 방법을 안다. 그 카드 중 하나를 그 사람의 기본 카드로 어떻게 지정합니까? 내가 생각해 낸 해결책은 기껏해야 비관적으로 보입니다.테이블 간의 일대 다 관계에서 기본 관계를 지정하는 규칙은 무엇입니까?
실제 상황을 명확히하려고 노력하겠습니다. (안타깝게도 실제 도메인은 일을 혼동시킬뿐입니다.) 많은 열이있는 각각 2 개의 테이블이 있으며 Person과 Task를 가정 해 봅시다. 나는 또한 단지 몇 가지 속성을 가지고 프로젝트가 있습니다. 한 사람에게는 많은 프로젝트가 있지만 기본 프로젝트가 있습니다. 하나의 프로젝트에는 많은 작업이 있지만 때로는 대체 작업이있는 하나의 기본 작업이 있고 다른 시간에는 기본 작업이없고 대신 작업 시퀀스가 있습니다. 프로젝트의 일부가 아닌 작업은 없지만 엄격하게 금지되지는 않습니다.
PERSON (PERSON_ID, NAME, ...)
TASK (TASK_ID, NAME, DESC, EST, ...)
PROJECT (NAME, DESC)
나는 overcomplexity 또는 순수 악 중 하나를 도입하지 않고 동시에 주요 프로젝트, 주요 작업 및 작업 순서 모두를 모델링하는 방법을 알아낼 수없는 것.
이것은 내가 지금까지 가지고 올 것 중에 최고입니다 :
PERSON (PERSON_ID, NAME, ...)
TASK (TASK_ID, NAME, DESC, EST, ...)
PROJECT (PROJECT_ID, PERSON_FK, TASK_FK, INDEX, NAME, DESC)
PERSON_PRIMARY_PROJECT (PERSON_FK, PROJECT_FK)
PROJECT_PRIMARY_TASK (PROJECT_FK, TASK_FK)
그냥 간단한 개념에 대한 너무 많은 테이블처럼 보인다.
다음은 매우 유사한 상황을 다루는 것으로 질문 : Database Design: Circular dependency입니다.
불행히도 상황을 처리하는 방법에 대한 합의가없는 것처럼 보였습니다. "올바른"대답은 데이터베이스 일관성 검사 메커니즘을 비활성화하는 것이 었습니다. 쿨하지 않아.
그 해결책은 무엇인가? –