0
我目前正在爲一個網站開發一個PM系統,用戶必須能夠將PM發送到多個收件人。當然,這意味着如果消息已經發送給用戶A,B和C,則用戶C可以刪除該消息,而用戶A和B不會。 問題是這樣一個系統最好的數據庫表結構是什麼,當然要避免一個消息的多個副本。 目前,我認爲這表結構:具有多個收件人表結構的PHP/MySQL PM系統?
msgid (int),
parentid (int),
timestamp (timestamp),
senderid (int),
receipients (varchar),
subject (varchar)
text (text),
deletedby (varchar),
readby (varchar)
這將是唯一的表。線程是基於parentid創建的(如果沒有parentid消息是線程中的第一個線程),並按時間戳排序。收件人以逗號分隔存儲在一列中,並使用WHERE userid IN(msg.receipients)進行檢查。 deletedby列包含已刪除郵件的所有用戶名(以逗號分隔),就像readby列一樣。
但是我不確定這是否是理想的表格結構。在我開始編碼之前,我想聽聽你的想法。如果你有更好的主意,請告訴我。
感謝
好的,簡而言之,你建議有兩個表格,一個是消息,一個是爲每個接收者插入一行,對嗎? – carlo
是的。如果您需要修改列表,在字段中使用逗號分隔值非常痛苦。搜索並不是很糟糕,因爲mysql具有find_in_set(),但在其他數據庫系統中,它變得很難看。無論底層系統如何,從csv中刪除特定值都是痛苦的。 –
好的,謝謝。你對線程系統有什麼看法?我的例子中的parentid和時間戳排序模型是否可以? – carlo