我正在创建一个数据库结构。我必须存储传入和传出的消息,我想知道哪种方法是执行此操作的最佳方法。
2 个单独的表或具有 ENUM('in', 'out') 列的相同表?
有什么建议吗?
最佳答案
如果您要从其他用户向用户发送消息,我要做的就是创建一个 sent_message
表和一个 message_to_users
表。
很可能您在任何时候都不想正确删除消息,因此我只是为此添加了标志。
sent_message
------------
sent_message_id
from_id int
subject varchar(128)
body text
status char(1)
sent_datetime datetime
message_to_user
-------
message_to_user_id int
sent_message_id int
to_id int
read_datetime datetime
status char(1)
sent_message
的状态为 s(ent)
或 d(eleted)
以及 message_to_user
将为 a(rrived)
、r(ead)
或 d(eleted)
此方法允许轻松实现“全部回复”功能,并且在向多个用户发送消息时可以节省空间。
关于sql - 使用两个表而不是具有 2 个不同值的列的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578775/