2009-05-19 6 views
2

Bebo/Facebook 및 기타 소셜 네트워킹 사이트와 같은 비공개 메일 기능을 구현하는 방법은 무엇입니까?웹 사이트 용 개인 메일을 구현하는 방법은 무엇입니까?

회원 프로필에 공개 의견을 게시 할 수 있지만 개인 메일을 보낼 수도 있습니다.

XML을 사용하여 특정 사용자의 레코드 필드로 저장하는 것을 고려하고있었습니다. 이것은 나쁜 생각처럼 들리니?

누구나 더 좋은 제안이 있으십니까? 어떤 솔루션이 가장 좋을지 확신 할 수 없습니다.

+0

일반 댓글을 저장하는 것과 다른 이유는 무엇입니까? 그들은 "읽기"/ "읽지 않은"상태가 필요하기 때문에? – Tormod

+0

유일한 차이점은 개인 메시지라는 것입니다. SQL Server의 필드에 XML로 주석을 저장하고 있으므로 개인 메일을 필드로 만드는 방법을 보호하고 있습니다. 나는 사적인 메일이 어떻게 구현되었는지에 대해 혼란스러워했다. – James

+0

죄송합니다. 귀하의 의견을 잘못 읽었습니다! 그래, 평범한 의견보다 약간 다른 점은 일반인이 아니고 읽음/읽지 않은 상태가 있다는 것입니다. – James

답변

2

난 당신이 원하는 것을 오해,하지만 어떻게 예를 들어

  • 보낸 사람
  • 수신자
  • 주제
  • 메시지
  • 보낸
  • 읽기와 메일 테이블을 만드는 방법에 대한 수도 (bool)

누군가가 누군가에게 개인 메시지를 보내면 그 테이블에 행을 추가하십시오.

+0

그래, 그 옵션을 회원 필드로 유지하는 것이 현명한 성과라고 생각하지 않았습니까? 이런 글로벌 테이블이 커지면? 마치 구성원 XML 필드 인 것처럼 상당히 작습니다. 그러나 XML이 항상 구문 분석하는 것이 가장 빠르다고 들었습니다. – James

+0

이것이 제 제안보다 더 대중적인 방법이라고 생각합니다. 댓글 용으로 하나씩, 사설 메일 용으로 두 개의 별개의 테이블을 갖는 것이 합리적이라고 생각하십니까? 또는 Message라는 하나의 메소드를 가지고 있고 Private 인 Property는 부울입니다. – James

+0

글쎄, 당신은 두 가지 방법으로 할 수 있습니다.난 아마 두 개의 별도의 테이블에, 의견은 일반적으로 기사 등으로 연결되어 있기 때문에 생각하지만, 그것은 (페이스 북의 wallpost처럼) 그냥 공개 메일 일이라면, 나는 당신의 방식으로 일할 수 있다고 말할 것입니다 :) – Svish

2

사용자 테이블의 필드에 메시지를 저장하지 말 것을 강력히 권합니다. 응용 프로그램이 커짐에 따라 성능 문제가 발생할 가능성이 큽니다. 다른 대답이 제안한대로, 나는 특별히 메시지 데이터를 저장하기위한 테이블을 추가 할 것이다. 다음은 테이블이 어떻게 생겼는지에 대한 의사 코드 예제입니다.

UserTable 
{ 
    ID INT, -- a unique system generated ID 
    USER_ID CHAR(20), -- also unique, this is a user provided ID 
    FIRST_NAME CHAR(40), 
    LAST_NAME CHAR(40), 
    BIRTH_DATE DATE 
} 

UserEmailTable 
{ 
    ID INT, -- a unique system generated ID 
    USER_ID CHAR(20), -- this ties the entry to the record on UserTable 
    EMAIL_ADDR CHAR(128), -- user provided email 
    PRIORITY INT, -- Specifies the users 0..N-th address 
} 

MailTable 
{ 
    ID INT, -- a unique system generated ID 
    SENDER_ID INT, -- this ties the entry to the record on UserTable 
    RECIPIENT_ID INT, -- this ties the entry to the record on UserTable 
    CREATE_DATE DATE, -- record when the message was created by sender 
    READ_DATE DATE, -- record when the message was read by recipient 
    PRIVATE BOOL, -- indicates if this is a private message 
    MESSAGE BLOB -- the message body 
} 

이것은 단지 예이며 응용 프로그램의 특정 문제를 해결하지 못할 수도 있습니다.

마지막으로 한 가지 생각 : 실제 XML을 필드에 직접 저장하거나 XML < -> SQL 매핑 도구를 사용하여 저장할 계획입니까? XML을 직접 저장하는 경우 데이터베이스의 기능을 이용할 수 없습니다. 성능에 대한 귀하의 우려는 유효하지만 잘 설계된 & 조정 데이터베이스는 단일 테이블에서 수백만 개의 레코드를 쉽게 처리 할 수 ​​있어야합니다.

희망이 있습니다.

+0

제이슨, 내 관심사는 메일/댓글 전용 테이블을 만들면 모든 회원에게 글로벌로, 테이블이 커질 것입니다. 내가 각 회원 기록에 필드를 만든 것처럼 확실하게 회원 정보를 검색 할 필요가있을 때 더 빨리 검색 할 수 있습니까? SQL Server 2005에서 XML 필드를 지원하고 Guids를 주석/메일의 고유 ID로 사용하므로 XML을 데이터베이스에 직접 저장하려고합니다. 당신의 생각은 무엇입니까? – James

+0

필자는 어떤 용도로든 파싱해야하는 거대한 텍스트 데이터 열이있는 테이블보다 큰 테이블을 갖고 싶어합니다. – Svish

+0

머리카락을 나눌 필요는 없지만 '거대한'과 '거대한'을 수량화 할 수 있습니까? 현대 DB에서는 수억 개의 레코드가 비교적 일반적입니다. 수십억 또는 심지어 수십억 개의 레코드가 전례가 없습니다. 메시지를 사용자 테이블의 필드에 넣으면 응용 프로그램이 제대로 확장되지 않습니다. 그 밖의 것이 없다면 성능이 문제가되는 경우 자신의 테이블에 메시지를 넣으면 더 많은 옵션이 제공됩니다. –

관련 문제