2012-04-04 2 views
0

커뮤니티 목록이 있습니다. 각 커뮤니티에는 회원 목록이 있습니다. 현재 구성원 이름을 쉼표로 구분하여 각 커뮤니티를 연속적으로 저장하고 있습니다. 작은 불변 커뮤니티에 좋습니다. 그러나 지역 사회의 규모가 커짐에 따라 7 만 5 천명의 회원들이 커뮤니티에 참여하는 것이 더 느리게 진행되고 있습니다. 또한 지역 사회의 부분 적재 (무작위로 10 명의 회원을 말하자)도 그다지 우아하지 않습니다. 이 시나리오에서 커뮤니티 테이블에 가장 적합한 테이블 구조는 무엇입니까? 여러 테이블을 사용하는 이유가 있다면 여러 테이블을 사용하는 것도 문제가되지 않습니다.MySQL의 커뮤니티를 저장하기위한 테이블 구조

답변

2

를 사용하여 세 개의 테이블 그리고

`community` 

| id | name | other_column_1 | other_column_2 ... 

`user` 

| id | name | other_column_1 | other_column_2 ... 

`community_user` 

| id (autoincrement) | community_id | user_id | 

는이

SELECT cu.id AS entry_id, u.id, u.name FROM `community_user` AS cu 
    LEFT JOIN `user` AS u 
    ON cu.user_id = u.id 
WHERE cu.community_id = <comminuty id> 
같은 일을 할 커뮤니티의 모든 사용자에 대한 사용자 정보를 얻을 수 있습니다
관련 문제