2012-12-01 2 views
0

누군가가 나를 좋아하는 사용자 목록 시스템 (즐겨 찾기 또는 블랙리스트 (금지) 할 수있는 데이터 모델을 보여줄 수 있습니까?) 가장 좋은 방법을 찾고 있는데 아무도 지금까지 내 질문에 잘 답변하지 않았습니다. 가장 좋은 방법은 우리가 덜 가입했습니다. 프로그램 작성. 내 사용자 테이블 블랙리스트와 favoritelist가있는 사용자 등록 시스템의 데이터 모델?

지금까지

uid(pk) | name | family | blah blah blah .. 
난 그냥 우리가 한 가입 이하가이 좋아하고 블랙리스트의 desgin하는 방법을 잘 모릅니다

?

나는 이것이 하나의 관계에 있어야한다고 생각하지만 어떻게 설계해야합니까?

답변

2

당신이 블랙리스트 및/또는 즐겨 찾기

테이블 ID (PK)를 나열하는 두 번째 테이블을 가질 수 | userid_src (fk) | userid_dst (fk) | 입력

다음 사용자 A 블랙리스트 사용자 B와 사용자 A의 즐겨 찾기 사용자 C와 사용자 B와 C 즐겨 찾기 서로 당신은이 ID 1, B의 ID 2 및 C 아이디 3

id(pk) | userid_src(fk) | userid_dst(fk) | type 
1  | 1    | 2    | blacklist 
2  | 1    | 3    | favourite 
3  | 2    | 3    | favourite 
4  | 3    | 2    | favourite 

곳이있을 경우 수정 : 각 사용자의 정보를 검색하려면 :

SELECT * from users 
LEFT JOIN users_connections as con ON users.uid = con.userid_src 
LEFT JOIN users as userCon ON userCon.uid = con.userid_dst 
WHERE users.id = XXX 

XXX는 (는) 현재 사용자의 ID입니다. 그런 다음 현재 사용자와 블랙리스트에 추가되거나 즐겨 찾기로 추가 된 각 사용자 간의 각 연결을 검색합니다.

+0

만약 내가 맞다면 id (pk) 자동 증가가됩니까? 그러면 우리는 10 명의 melyon 사용자가 있고 각 사용자는 블랙리스트와 즐겨 찾기 목록에 200 명의 사용자가 있습니다.이 ID는 2000 년입니다. melyon 이상이이 ok입니까? – HiDd3N

+0

데이터베이스, 서버 하드웨어/구성에 따라 다르 겠지만 괜찮은지 모르겠습니다. 그렇지 않으면 각 사용자의 "목록"에 즐겨 찾기/블랙리스트를 저장하는 테이블을 만들 수 있지만 결국에는 수백만 개의 테이블이 생깁니다. – koopajah

+0

이것을 생성 한 후에는 userid_src (fk)에서이 테이블과 usertable을 결합하고 userid_dst (fk)를 가져오고 그 다음에 각 사용자 정보를 선택해야합니다. 그러면 각 사용자의 가져 오기 정보에 대한 많은 쿼리가 발생합니다 – HiDd3N

2

기성품 데이터 모델을 찾는 한 곳은 databaseanswers.com입니다. 다음은 데이터 모델을 카탈로그 화하는 페이지입니다.

http://www.databaseanswers.org/data_models/index.htm

는 소셜 네트워킹 사이트에 대한 섹션이있다, 그러나 그것은 꽤 스파 스입니다.

+0

감사합니다. – OhadM