나는 RDBMS에서 다음과 같은 재귀 관계를 표현하기 위해 노력하고있어 :재귀 엔티티 w/아웃 부모/자식 관계
기본적인 예를 들어를, 우리는 다음과 같은 필드가 있습니다
1 - computer science
2 - computer engineering
3 - electrical engineering
4 - mathematics
을
그리고 비슷한 분야를 서로 연관시키고 싶습니다. 두 번째 테이블을 사용하여 필드를 서로 연관시킬 수 있습니다.
+----------+----------+
| field1 | field2 |
+----------+----------+
| 4 | 1 | (math -> comp sci)
| 4 | 2 | (math -> comp eng)
| 4 | 3 | (math -> elect eng)
| 2 | 1 | (comp eng -> comp sci)
| 2 | 3 | (comp eng -> elect eng)
+----------+----------+
그러나, 키 (필드 1, FIELD2), 나는 두 가지 잠재적 인 문제를 볼 수 있다면 : 최적, 나는이처럼 보이는 상상할 수
- 튜플 정렬되지 않은이기는하지만, 복제 할 수 더 중요도가없는 경우
- 이 불필요하게 복잡 쿼리 수있는 필드에있는 열의
:
+----------+----------+
| field1 | field2 |
+----------+----------+
| 1 | 4 | (comp sci -> math)
| 4 | 3 | (math -> elect eng)
| 4 | 2 | (math -> comp eng)
| 3 | 4 | (elect eng -> math)
| 2 | 1 | (comp eng -> comp sci)
| 3 | 2 | (elect eng -> comp eng)
| 1 | 2 | (comp sci -> comp eng)
+----------+----------+
가 어떻게 비 계층 적 재귀 관계를 접근해야합니까?
두 번째 테이블과 마찬가지로 각 튜플을 의도적으로 복제해야합니까? 아니면 제가 너무 많이보고있는 다른 방법이 있습니까?
혼란 스럽지만 (아직도) 혼란 스럽긴하지만 다 대다가 필요하다고 생각합니다. 예를 들어 문학에 한 가지 유사한 필드 만 허용 할 수 있습니다. * (내 질문에 예제를 업데이트했습니다) * –
@DavidKaczynski -이 접근 방식을 사용하면 N-N 관계를 사용할 수 있지만 비슷한 그룹에서는 1-N 관계를 사용할 수 있습니다. 위의 수정 사항을 참조하십시오. – sgeddes
설명해 주셔서 감사합니다. 이 질문을 할 수있게 해주십시오. 모든 필드를 읽기와 비슷하게하려면 해당 쿼리가 어떻게 보이겠습니까? 예를 들어'SimilarId, SimilarId, FieldId from SimilarField where SimilarId = 3 or FieldId = 3'을 선택합니다. 그런 다음 결과로 나온'(SimilarId, FieldId)'튜플을 개별 Id 세트로 변환하여 원래의 Field 테이블을 쿼리하려면 어떻게해야합니까? ? –