2015-01-18 3 views
0

Folder, Group, Document 등의 엔티티가 있다고 가정 해보십시오.서로 관련이있는 두 개의 테이블 참조

지금, 각 Folder 많은 Document 's의 이러한 Document'의이 s는 Group 여부, 그 Folder 안에 할 수 있습니다.

따라서 Folder에는 그룹화되고 그룹화되지 않은 Document이 모두 포함됩니다.

이러한 관계를 어떻게 구성합니까?

나는 두 가지 방법을 생각했다 :

  1. DocumentGroup에 속하고 GroupFolder에 속한다. 이 은 모든 Folder (항상 못생긴)에 대해 항상 "그룹 해제 됨"Group이 필요합니다.
  2. DocumentGroupFolder에 속 FolderGroup 모두에 속한다. 이 방법은 FolderGroup에 대한 참조를 가지며 여기서 group_id은 "그룹 해제 됨"을 나타 내기 위해 null 일 수 있습니다. 그러나 GroupFolder이 아닌 경우 DocumentGroup/Folder에 할당하여 오류가 발생합니다.

어느 해결책도 옳지 않습니다. 이것은 아마도 일종의 복합 키를 필요로하며 Document은이를 참조합니다.

이 작업을 수행하는 올바른 방법은 무엇입니까?

답변

0

실제 응용 프로그램에서 두 번째 접근 방식을 사용하면 두통이 줄어들 것입니다. 실제 응용 프로그램의 세부 사항에 따라 다를 수 있습니다. 같은 group_id 잠재적으로 여러 폴더에 걸쳐 수 있도록

또 다른 대안은 (는 명시 적으로 요구하지 이후) 폴더에 하지이 속한 그룹을하는 것입니다. 그런 다음 Document 테이블의 실제 그룹 식별자로 (folder_id, group_id) 쌍을 해석합니다.

+0

실제로 그룹이 여러 폴더에 걸쳐 있지 않기를 바란다는 것을 잊어 버렸습니다. –

+0

두 번째 접근 방식으로 응용 프로그램의 관계를 확인했습니다. –

관련 문제