2009-09-15 7 views
0

바라건대 이것은 바보 같은 질문이지만 내 뇌는 튀겨서 지금 당장 할 방법을 생각할 수 없습니다.rdbms에서 자체 관계를 어떻게 표현합니까?

나는 소셜 네트워킹을하려고 애 쓰고 있고, 사람의 "추종자"를 추적해야합니다. 나는 이미 사용자 테이블을 만들었지 만 사용자가 서로 연관되어 있다는 생각을 어떻게 표현합니까? 이것은 일방적 인 관계 btw입니다. 따라서 사람이 사람 b를 "좋아"하는 경우, 그 반대가 반드시 사실 일 필요는 없습니다. 내가 생각할 수있는

있는 유일한 방법은 그냥 그렇게, 일대일 관계의 목록이 테이블 :

user a -> user b 
user a -> user c 
user a -> user d 
user b -> user d 
user b -> user c 
... 

그러나 이것은 나에게 떨어져 보인다.

감사

사이먼

편집 : 어쩌면 트위터에 추종자 내가 보이는 아마 테이블

답변

1

다음과 같이 추종자 정보 만 포함하는 테이블을 만듭니다.

user_id | follower_id

그래야합니다. 예를 들어 사용자 # 56을 생각해보십시오.

그는 아마도 추종자 테이블에이 같은 행이있을 것입니다 :

56 | 53453 
56 | 323 
56 | 463 

그냥 두 열에 고유 제한 조건을 추가 그는 두 친구의 사람이되지 할 수 있도록.

+0

두 값 모두에 동일한 값을 넣을 수없는 제약 조건 –

+0

@ralph : 마지막 문장 읽기를 잊었습니다.) – Jeff

+0

건배, 왜 이런 문제가 있었는지 모르겠다. – Simonw

0

을 할 노력하고있어 더 유사 같은 :

RelationshipId Follower Target 
Int    Int  Int 

Follower는 UserA의 ID이고 Target은 UserB의 ID이며 UserA는 UserB를 따릅니다.

관련 문제