2011-04-02 234 views
0

我正在嘗試制定一個數據模型,其中重要的是保留某些聯繫人信息(如電子郵件地址)的歷史記錄。我如何獲取電子郵件地址的結束日期,而無需將我的電子郵件表中的屬性作爲空值等待填入?捕獲數據庫中聯繫人信息的歷史記錄

回答

0

最強大的解決方案是使用第三方日誌記錄工具,它可以讓您記錄插入,更新,刪除甚至選擇。但是,如果您只需要一個簡單的跟蹤系統,我會爲當前數據創建一個表格,爲歷史創建另一個表格。然後,只要進行插入或更新,就可以使用觸發器填充歷史記錄表。


第三方審計或數據庫actvity爲MySQL監控應用:

Idera Database Activity Monitoring

Hedgehog Enterprise

SQL Shark(更多的是監測工具,但可以用來存儲變化)

DB Audit

+0

您是否知道您提及的那些可與MySQL結合使用的工具,以便我可以追查更多關於它們的信息? – swisscheese 2011-04-02 01:28:48

+0

@swisscheese - 我已經發布了一對夫婦。也可能有一些庫管理觸發器創建以填充歷史記錄表。 – Thomas 2011-04-02 03:54:26

0

如何我想捕捉的 電子郵件地址的結束日期,而不在我的電子郵件坐在桌子作爲 一個空等待在填寫具有 屬性?

的純粹的方式來捕捉結束日期是創建一個新表使用相同的密鑰作爲現有表和結束日期:

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,則此方法將會有性能損失。您擁有的密度越高的密碼(具有結束日期的電子郵件佔比越高),這種方法就越糟糕。另一方面,如果沒有或很少的查詢關心結束日期以及那些對結束日期特別感興趣的查詢,那麼上述方法往往會表現得更好。您擁有的數據越稀疏(具有結束日期的電子郵件百分比越低),此方法執行得越好。

相關問題