2009-12-15 6 views
0

나는 테이블 A, B, C가 세 개 있습니다. 테이블 A는 B와 C와의 관계 (n : 1)입니다. 일반적으로 A는 B.Id (또는 C.Id) 및 테이블 이름.테이블 간의 관계

A.ParentId = 1 
A.TableName = "B" 

A.ParentId = 1 
A.TableName = "C" 

A.ParentId = 2 
A.TableName = "B" 

좋은 해결책입니까? 다른 해결책이 있습니까?

답변

1

왜 상위 열 2 개가 필요하지 않습니까?

A.ParentIdB = A 게시물 "수퍼"및 이미지 역할 1
A.ParentIdC = 3

+0

확장 성이 없기 때문에 : A와 관련된 n 개의 테이블이 있다고 가정하면 n 개의 열을 만들어야합니다. – user232028

0

다른 가능성은 다른 테이블 내용 (D)을 도입하는 것이다. 그런 다음 댓글 (A)의 행은 게시물 (B) 및 이미지 (D)의 각 행과 마찬가지로 내용의 기본 키를 참조합니다. 게시물 및 이미지의 일반적인 입력란은 콘텐츠 (예 : '제목'또는 '날짜')로 이동되며 원래의 표에는 게시물 또는 이미지와 관련된 정보 ('본문'또는 '해상도') 만 포함됩니다. 이렇게하면 필드에 테이블 이름을 갖는 것보다 조인을 더 쉽게 수행 할 수 있지만 실제 엔티티는 게시물과 주석 (또는 실제로 게시물이나 주석을 곱하십시오!) 일 수 있습니다. 실제로, 그것은 모델링하려는 상황에 달려 있습니다.

+0

소리가 좋습니다. 그러나 이해하도록 도와주세요. 주석 (A), 수퍼 유형 (D), 게시물 (B) 및 이미지 (C)의 4 개의 테이블이 있다고 가정합니다. 예를 들어 게시물과 관련된 모든 주석을 검색하는 것은 간단하지만 주석 (게시물 (B) 또는 이미지 (C))에서 특정 정보를 검색해야 할 필요가 있습니까? – user232028

+0

A의 마지막 레코드와 관련된 특정 정보 (B 또는 C 또는 ...에 저장되어 있음)를 선택한다고 가정하십시오. 어떻게 할 수 있습니까? – user232028

+0

A가 B 또는 C에 연결되어 있는지 여부를 모르는 경우 A 내부 조인 D 왼쪽 외부 조인 B 왼쪽 외부 조인 C 조인이 적절한 키에있는 경우 응용 프로그램의 필드를보고 A가 B 또는 C에 링크되어 있는지 확인하십시오. 키 또는 A의 삽입 날짜를 적절한 순서로 정렬하고 맨 위의 1 행을 가져와 마지막 레코드를 얻을 수 있습니다. – Rich

관련 문제