2009-05-19 45 views
2

你會如何去實現私人郵件功能,如Bebo/Facebook和其他社交網站?如何實現網站的私人郵件?

您可以選擇在會員的個人資料上張貼公開評論,但您也可以發送私人郵件。

我正在考慮使用XML並將其作爲字段存儲在特定用戶的記錄中。這聽起來像一個壞主意嗎?

任何人有更好的建議嗎?我不確定哪個是最好的解決方案。

+0

爲什麼它會比存儲常規評論不同?因爲他們需要「讀取」/「未讀」狀態? – Tormod 2009-05-19 09:03:27

+0

這不是,唯一的區別是它是一個私人信息。我將註釋作爲XML存儲在SQL Server的字段中,因此您認爲只是將私人郵件設爲字段並保護其查看方式?我只是對如何實現私人郵件感到困惑,也就是說它是否是真正的郵件,比如交換等等。 – James 2009-05-19 09:08:27

+0

對不起,我錯讀了你的評論!是差不多比正常的評論是唯一的區別是他們不公開,並將有讀取/未讀狀態。 – James 2009-05-19 09:13:04

回答

2

我可能誤解了你想要的東西,但有關創建郵件表,與例如

  • 發件人
  • 收件人
  • 主題
  • 消息
  • 發送
  • 瞭解如何(bool)

然後,當有人向別人發送私人消息時,只需在該表中添加一行即可。

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,則可能無法利用數據庫的功能。您對性能的擔憂是有效的,但精心設計的數據庫應該能夠輕鬆處理單個表中的數百萬條記錄。

希望有所幫助。