Skip to main content
 首页 » 编程设计

c#之SQL : To split or not to split 中的邮件表

2024年01月28日29xxx_UU

我有一个存储邮件的表 Mails(谁会想到... ;))。

通过 tinyint MailStatus,我决定这是 SentMail、Draft 还是 ReceivedMail。

现在我想知道 Table-Split 是否更合适,说有:

已发送邮件

邮件草稿

收到邮件

代替 MailStatus tinyint 标志。

但这也意味着我需要在用户删除或移动邮件时移动行(在一个表中插入,在另一个表中删除),而不是仅仅切换 int 值。

你对此有何看法?

请您参考如下方法:

从代码的角度来看,处理枚举比处理不同类型要简单得多。

从数据库的角度来看,将非常相似的数据存储在不同的表中的原因是:

  • 性能问题
  • 大小问题(单个表变得太大)
  • 数据库标准化问题(SentDateTime 字段的空值等)

在大多数情况下,您永远不会遇到任何大小/性能问题,因此问题在于您需要将数据标准化到何种程度。如果您真的不关心它,请不要让它变得比现在更复杂:将它留在一张表中,并在表中使用枚举 (int) 来区分状态。