捕获数据库中的联系信息的历史记录

时间:2011-04-02 01:01:20

标签: database database-design null

我正在尝试制定一个数据模型,其中保留某些联系信息(如电子邮件地址)的历史记录非常重要。我如何捕获电子邮件地址的结束日期而不将我的电子邮件表中的属性设置为等待填写的Null?

2 个答案:

答案 0 :(得分:0)

最强大的解决方案是使用第三方日志记录工具,它可以让您记录插入,更新,删除甚至选择。但是,如果您只想要一个简单的跟踪系统,我会为当前数据创建一个表,为历史创建另一个表。然后,只要进行插入或更新,就可以使用触发器填充历史记录表。


MySQL的第三方审核或数据库活动监控应用程序:

Idera Database Activity Monitoring

Hedgehog Enterprise

SQL Shark(更多的监控工具,但可用于存储更改)

DB Audit

答案 1 :(得分:0)

  

我如何捕获一个结束日期   电子邮件地址没有   我的电子邮件表中的属性为   Null等待填写?

捕获结束日期的纯粹方法是创建一个新表,其中包含与现有表和结束日期相同的键:

create table email_end_date(
   email     datatype  not null
  ,end_date  datatype  not null
  ,primary key(email)
  ,foreign key(email) references the_email_table(email)
);

那张桌子将在6NF。

在走这条路之前我会三思而行,并尝试分析查询模式和数据分布。如果大多数查询需要检查end_date,则此方法将会降低性能。您拥有的数据越密集(具有结束日期的电子邮件的百分比越高),这种方法就会越差。

另一方面,如果您的查询中没有一个或几个关心结束日期,并且那些查询对结束日期特别感兴趣,则上述方法通常会表现得更好。您拥有的数据越稀疏(具有结束日期的电子邮件的百分比越低),此方法的效果就越好。