Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于数据库规范化的精确表_Java_Mysql_Database_Database Design_Database Normalization - Fatal编程技术网

Java 用于数据库规范化的精确表

Java 用于数据库规范化的精确表,java,mysql,database,database-design,database-normalization,Java,Mysql,Database,Database Design,Database Normalization,我正在考虑如何规范化数据库中的表,使其尽可能精确 我必须开发一个监控系统,系统应分析发送给客户的所有传出消息(电子邮件、SMS…)及其相关反馈(状态(0,1或更多)) 这意味着对于1条传出消息(对于ex-MAILID:123),我可以在不同的时间间隔收到多个不同的反馈(已发送、未发送、已发送、单击、打开…)。对于收到的一些反馈,我必须检索电子邮件服务提供商在“行动”方面所做工作的信息。他们是否再次向客户发送电子邮件?如果没有发送,他们是否设法解决了服务器问题?等等 编辑:很抱歉,事实上我的邮件I

我正在考虑如何规范化数据库中的表,使其尽可能精确

我必须开发一个监控系统,系统应分析发送给客户的所有传出消息(电子邮件、SMS…)及其相关反馈(状态(0,1或更多))

这意味着对于1条传出消息(对于ex-MAILID:123),我可以在不同的时间间隔收到多个不同的反馈(已发送、未发送、已发送、单击、打开…)。对于收到的一些反馈,我必须检索电子邮件服务提供商在“行动”方面所做工作的信息。他们是否再次向客户发送电子邮件?如果没有发送,他们是否设法解决了服务器问题?等等

编辑:很抱歉,事实上我的邮件ID列都是VARCHARS(Java字符串)。长话短说,事实上,我必须处理XML文件并将其解组到Java对象,并将它们持久化到Mysql数据库中,其中邮件ID的形式为BMM1EP_34022503920_1200180009

为了澄清,我想我应该有4个主表

带有列的表格消息

  • MailId VARCHAR主键(非空)
  • 表单名称varchar(50)
  • 语言varchar(10)
  • 输出模式varchar(10)
  • 带有列的表格反馈信息

  • IdINT自动递增主键(非空)

  • MailIdVARCHAR

  • 返回日期日期

  • 返回时间日期时间

    外键(MailId)引用消息(MailId)

  • 表格状态带列:

  • IdInt自动递增主键(非空)

  • MailIdVARCHAR

  • 状态VARCHAR(50) 外键(MailId)引用消息(MailId)

  • 表格操作带列:

  • Id Int自动递增主键(非空)

  • 采取的行动VARCHAR(100)

  • MailIdVARCHAR 外键(MailId)引用状态(Id)


  • 我的设计不好吗?非常感谢您的帮助,因为这是我第一次为一个具体项目设计一个真正的数据库。谢谢大家

    如果您使用半正式的自然语言来定义您的业务领域,这会有所帮助。据我了解:

    有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。我认为这将改变你提议的设计方式?我编辑了我的问题。再次感谢你的时间!不,对你如何布置表格没有影响-我我编辑了答案