我有一个存储邮件的表 Mails(谁会想到... ;))。
通过 tinyint MailStatus,我决定这是 SentMail、Draft 还是 ReceivedMail。
现在我想知道 Table-Split 是否更合适,说有:
已发送邮件
邮件草稿
收到邮件
代替 MailStatus tinyint 标志。
但这也意味着我需要在用户删除或移动邮件时移动行(在一个表中插入,在另一个表中删除),而不是仅仅切换 int 值。
你对此有何看法?
请您参考如下方法:
从代码的角度来看,处理枚举比处理不同类型要简单得多。
从数据库的角度来看,将非常相似的数据存储在不同的表中的原因是:
- 性能问题
- 大小问题(单个表变得太大)
- 数据库标准化问题(SentDateTime 字段的空值等)
在大多数情况下,您永远不会遇到任何大小/性能问题,因此问题在于您需要将数据标准化到何种程度。如果您真的不关心它,请不要让它变得比现在更复杂:将它留在一张表中,并在表中使用枚举 (int) 来区分状态。
