2011-03-16 6 views
1

저는 데이터베이스 디자인의 초보자입니다. 사용자 의견에 답하고 잠재적으로 사용자가 작성한 모든 의견을 표시 할 수있는 의견 시스템을 만들고 싶습니다. 또한 각 페이지에는 댓글을 달 수있는 섹션이 있습니다.코멘트 시스템 구조에 대한 조언

지금까지 논평 시스템을 구성하기위한 두 가지 잠재적 인 데이터베이스 디자인을 생각해 냈습니다. 처음에는 각 페이지의 주석에 대한 테이블과 각 사용자의 주석에 대한 테이블이 있습니다. 페이지 주석 테이블에는 테이블 연결 목적을위한 user_id 및 page_id 필드가 있습니다.

두 번째 잠재적 인 설계 구조는 테이블 연결에 대한 comment_id 및 user_id 필드가있는 커다란 분할 된 테이블을 갖는 것입니다. 회신 기능에 아직 접근하는 방법을 생각하지 않았습니다. 그 문제를 해결하기 전에 설계 접근법이 효율적으로 수행 될 것이라는 의견을 얻고 싶었습니다.

답변

2

나는 두 개의 테이블로 갈 것이다 : 하나는 주석 쓰레드 용이고 다른 하나는 주석 용이다.

id 
/* Other bookkeeping things like created time and such */ 

및 의견 :

id 
thread_id 
user_id 
comment 
parent_id 
/* Other bookkeeping stuff */ 

그런 다음 페이지 테이블에 comment_thread_id 열을 추가하여 페이지에 실을 부착 코멘트 스레드는 다음과 같이 보일 것이다.

별개의 고유 한 주석 스레드를 사용하면 향후 액세스 제어 또는 유사한 확장을 첨부 할 수있는 편리한 위치를 제공하며 주석 스레드를 사물에 첨부 할 수도 있습니다. 다른 방법이 아닌 주석 스레드를 페이지에 첨부하면 나중에 시스템의 다른 개체에 주석 스레드를 쉽게 추가 할 수 있습니다.

1
comments 
    id 
    user_id 
    comment_text 
    page_id 
    parent_id 

페이지의 메모를 저장하는 데 사용합니다. parent_id은 다른 댓글의 답글 인 댓글입니다. 페이지에 대한 주석의 경우 parent_id는 0 (상위 주석 없음)이지만, 응답의 경우 parent_id는 0이 아니며 응답이 속한 주석의 ID가됩니다.

예를 들어, 당신은 고려해 수도

id user_id comment_text page_id parent_id 
1 6   sdh   1  0   <-- comment on the page 
2 9   gfdf   2  0   <-- another comment on other page 
3 4   reply xzy 1  1   <-- reply to comment id 1 by user id 4 on page 1 

등의 데이터를해야합니다 timestamp, flagged, 정렬 순서, 필터링, 모니터링 및 코멘트를 소프트 삭제에 당신을 도울 수 deleted 등 필드. 페이지별로, 사용자별로, 상위별로 그룹화 할 수 있습니다.

+0

쿼리하기가 너무 어렵습니다.이 approch – tyan