Java 用于数据库规范化的精确表
我正在考虑如何规范化数据库中的表,使其尽可能精确 我必须开发一个监控系统,系统应分析发送给客户的所有传出消息(电子邮件、SMS…)及其相关反馈(状态(0,1或更多)) 这意味着对于1条传出消息(对于ex-MAILID:123),我可以在不同的时间间隔收到多个不同的反馈(已发送、未发送、已发送、单击、打开…)。对于收到的一些反馈,我必须检索电子邮件服务提供商在“行动”方面所做工作的信息。他们是否再次向客户发送电子邮件?如果没有发送,他们是否设法解决了服务器问题?等等 编辑:很抱歉,事实上我的邮件ID列都是VARCHARS(Java字符串)。长话短说,事实上,我必须处理XML文件并将其解组到Java对象,并将它们持久化到Mysql数据库中,其中邮件ID的形式为BMM1EP_34022503920_1200180009 为了澄清,我想我应该有4个主表 带有列的表格消息:Java 用于数据库规范化的精确表,java,mysql,database,database-design,database-normalization,Java,Mysql,Database,Database Design,Database Normalization,我正在考虑如何规范化数据库中的表,使其尽可能精确 我必须开发一个监控系统,系统应分析发送给客户的所有传出消息(电子邮件、SMS…)及其相关反馈(状态(0,1或更多)) 这意味着对于1条传出消息(对于ex-MAILID:123),我可以在不同的时间间隔收到多个不同的反馈(已发送、未发送、已发送、单击、打开…)。对于收到的一些反馈,我必须检索电子邮件服务提供商在“行动”方面所做工作的信息。他们是否再次向客户发送电子邮件?如果没有发送,他们是否设法解决了服务器问题?等等 编辑:很抱歉,事实上我的邮件I
我的设计不好吗?非常感谢您的帮助,因为这是我第一次为一个具体项目设计一个真正的数据库。谢谢大家 如果您使用半正式的自然语言来定义您的业务领域,这会有所帮助。据我了解: 有0..n封电子邮件 每个电子邮件将有0..n个反馈项 每个反馈项有1个状态,并且可能有其他操作信息 如果这是准确的,那么设计应该是这样的:
Table SentMessages with columns:
MailId varchar primary key(not null)
Form_Name varchar(50)
Language varchar(10)
OutPut_Mode varchar(10)
Table FeedBackMessages with columns:
Id INT AutoIncrement primary key (not null)
MailId varchar
Return_Date DATE
Return_Time DATETIME
Status VARCHAR(50)
ActionTaken VARCHAR(100)
FOREIGN KEY (MailId) REFERENCES SentMessages (MailId)
如果您使用一种半正式的自然语言来定义您的业务领域,它会有所帮助。据我了解: 有0..n封电子邮件 每个电子邮件将有0..n个反馈项 每个反馈项有1个状态,并且可能有其他操作信息 如果这是准确的,那么设计应该是这样的:
Table SentMessages with columns:
MailId varchar primary key(not null)
Form_Name varchar(50)
Language varchar(10)
OutPut_Mode varchar(10)
Table FeedBackMessages with columns:
Id INT AutoIncrement primary key (not null)
MailId varchar
Return_Date DATE
Return_Time DATETIME
Status VARCHAR(50)
ActionTaken VARCHAR(100)
FOREIGN KEY (MailId) REFERENCES SentMessages (MailId)
非常感谢您快速而有见地的回答。但是,我的mailid应该是VARCHARS。我想这会改变你提议的设计方式吗?我已经编辑了我的问题。再次感谢您的时间!不,对你如何布置表格没有影响-我编辑了答案非常感谢你的快速有见地的回答。但是我的邮件ID应该是VARCHARS。我认为这将改变你提议的设计方式?我编辑了我的问题。再次感谢你的时间!不,对你如何布置表格没有影响-我我编辑了答案