这可能不是一个“规范化”问题,它更像是我正在保存的数据类型。基本规范化问题
我刚刚完成了一个消息和电子邮件系统的规范。这个想法是我需要保存我的Web服务内部的所有消息,但也知道邮件是否与该消息一起发送。
这是规范。
规范
- 的任何消息被存储在一个表中。
消息可以来自未注册的用户或注册用户。
未注册的用户信息将只是有一个返回电子邮件地址
注册用户的信息将有发送者的用户ID
的消息或者归用户(意味着它们是发送给)或消息由用户角色共享。
当消息被用户所拥有,我们记录有关此消息的一些信息(同桌的消息)。
a)用户是否打开/阅读消息?
B)为一个_ 电子邮件发送 _到消息的所有者或只是内部消息
C)日期的信息是第一读
d)日期被发送的消息
当消息被发送到一组用户,这意味着它们被发送到“所有用户”或“所有业主”或“所有超级管理员” ......
一)信息被保存一次Ë
messages
表,每个人开放的是在一个单独的表c)一个字段记录跟踪的发送日期
b)如直接_ 邮件已发送 _,或者如果它只是内部保存在系统中。 (单独的表)
消息可以是带螺纹的,这意味着,如果一个消息响应,它是儿童或原始消息。
消息有不同的“类型”,这意味着一个消息可以是“系统公告”,“探究”,“个人信息”,“悄悄话”,“交易信息”
链接到产品查询的消息将保存他们正在查询的产品的ID。 (即相关财产)。
最终规格
现在的实际问题...
正如你可以在子弹1见)(B)我录制这被发送到一个消息个人用户,如果电子邮件也发送了该消息。
但是,当一封电子邮件发送给一组用户时,我会记录一封电子邮件是否以完全不同的表格发送。 很明显,因为我无法将这些信息保存在同一张表中。
您对此模型有何意见?我没有复制任何数据,但我分开保存数据的位置。我是否应该有一个email_sent表来记录所有这些信息。
这不是很在同一条信息两个地方,我只能保存一次国旗,但同一个“类型”的信息需要保存在两个地方。我想你明白了,只是很难指出,email_flag只会被保存一次,但如果是单个电子邮件,它在邮件表中,并且如果它是一个组角色电子邮件,则它在单独的表中。 – Layke
听起来对我来说,也许你最好将属性分开,除非您决定将两种类型的电子邮件放在一张表中更好。决定因素应该是消息表可以/应该一起走,而不是应该将email_sent标志放在一起。 –
是的,我绝对把每条消息都写入消息表中。 – Layke