2011-01-20 2 views
2

현재 내 사이트의 사용자 메시징 시스템 (Facebook과 유사)을 개발 중입니다. 이미 사용자 테이블이 있으며 메시징 시스템을 통합해야합니다.사용자 메시징 시스템 (PHP/MySQL)

어제 (User messaging system)에 스레드를 시작했지만 약간의 진전이 있었지만 구조가 상당히 변경되어 새로운 질문이 시작되었습니다.

내가 알고 싶은 것은 본질적으로 테이블 구조가 어떻게 생겼을 까? 요구 사항은 다음과 같습니다.

  • 사용자간에 메시지가 교환되고 보낸 사람이 여러 명의받는 사람에게 메시지를 보낼 수 있습니다.

  • 메시지는 스레드 형식 레이아웃으로 1-1 대화 형식으로 표시됩니다. 즉, 각 수신자의 응답은 자체 스레드에 나타납니다.

  • 스레드가 생성되면 보낸 사람의 보낸 메시지 폴더에 나타납니다.받는 사람이 답장을 보내지 않으면받은 편지함에 나타나지 않습니다.

  • 개별 메시지는 삭제할 수 없지만 스레드는 삭제할 수 있습니다. 스레드를 삭제해도 메시지는 삭제되지 않고 사용자의받은 편지함 (또는 '보낸 메시지'폴더)에서 해당 스레드가 제거됩니다. 다른 사용자는 자신의받은 편지함 (또는 '보낸 메시지'폴더)에서 삭제하지 않은 경우 해당 스레드에 계속 액세스 할 수 있습니다.

  • 메시지 또는 회신을 보내면 '읽음 상태'가 '읽지 않음'으로 설정되지만 발신자에게는 영향을 미치지 않습니다. 즉 수신자 만 '읽지 않음'으로 인식해야합니다. 우리가 각받는 사람에 대한 별도의 메시지를 저장해야 여러받는 사람에게 같은 메시지를 보내는 경우에 대해 생각하는 다른

     
    Table messages 
    ============== 
    id 
    thread_id 
    from_user_id 
    subject 
    body 
    sent_date 
    
    Table message_threads 
    ===================== 
    id 
    message_id 
    to_user_id 
    from_user_id 
    read_status 
    

    무엇인가, 아니면 그냥 : 여기

내가 지금 무엇을 가지고 하나의 메시지?

모든 안내는 매우 높이 평가됩니다.

+2

여러 개의 메시지가 더 쉽게 관리 할 수 ​​있습니다. – Edmhs

답변

2

@Eddsstudio에 동의합니다 : 사용자가 "보낸 폴더"에 사본을 넣고받는 사람의받은 편지함에 사본을 넣을 때 동의합니다. 모든 답장 : 이전 메시지 (예 : 보낸 폴더의 메시지에 대한 링크 없음)에 연결되지 않고 기본 보낸 사람받은 편지함에 새 메시지를 만듭니다.

메시지가 화면에 사용자에게 표시되는 방식으로 대화 대화처럼 보이게 할 수 있지만 다중 메시지 백엔드는 훨씬 적은 두통을 만듭니다.

0
$query = 'CREATE TABLE IF NOT EXISTS ' . $db->prefix . 'pm (
    `post_id` => $post->ID, 
    `role_id` => $role_id, 
    `sender` varchar(60) NOT NULL, 
    `recipient` varchar(60) NOT NULL, 
    `date` datetime NOT NULL, 
    `read` tinyint(1) NOT NULL, 
    `deleted` tinyint(1) NOT NULL, 
    PRIMARY KEY (`id`) 
) COLLATE utf8_general_ci;'; 

나는이 성질로 구조화 된 것이 작동한다고 믿습니다.