sql - 使用两个表而不是具有 2 个不同值的列的优点

标签 sql mysql database

我正在创建一个数据库结构。我必须存储传入和传出的消息,我想知道哪种方法是执行此操作的最佳方法。

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/

相关文章:

mySQL查询查找两行时间不满足条件的地方

sql - 如何从描述中提取数字(价格)

php - 从与其他 critarias 匹配的行中选择特定列中具有最低值的行

MySQL 根据字段中唯一值的数量对数据库中的元素进行计数

database - AFTER LOGON ON DATABASE 触发器是否在多个数据库实例上执行?

c# - cmd.ExecuteNonQuery() 在我的程序中到底做了什么

mysql - 如何创建额外的列使用列值?

sql - 在这个demo中,我应该在每一列上创建一个索引还是只创建一个非聚集索引(Index Scan、Seek)

php - 选择 1 个表,更新另一个

SQL Server 创建列唯一不为空且不为空的表(检查)