我正在運行MySQL 5.1.36並且有一個用於基於Web的幫助臺系統的數據庫。該數據庫有三個表我想跟蹤更改:跟蹤MySQL數據庫更改
CREATE TABLE IF NOT EXISTS `tickets` (
`TicketNum` int(11) unsigned NOT NULL,
`SubmittedFromIP` tinyblob,
`SubmittedFromDevice` varchar(255) DEFAULT NULL,
`EntryDate` datetime DEFAULT NULL,
`ClosedDate` datetime DEFAULT NULL,
`LastName` varchar(50) DEFAULT NULL,
`FirstName` varchar(50) DEFAULT NULL,
`Email` varchar(50) DEFAULT NULL,
`Location` varchar(4) DEFAULT NULL,
`InventoryNumber` varchar(50) DEFAULT NULL,
`DeviceName` varchar(50) DEFAULT NULL,
`Description` text,
`Notes` text,
`Agent_ID` smallint(5) unsigned NOT NULL DEFAULT '1',
`TotalHoursSpent` float NOT NULL DEFAULT '0',
`Status` smallint(5) unsigned NOT NULL DEFAULT '1',
`Priority` tinyint(4) NOT NULL DEFAULT '0',
`LastUpdatedByAgent_ID` smallint(5) unsigned DEFAULT NULL,
PRIMARY KEY (`TicketNum`),
KEY `ClosedDate` (`ClosedDate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `ticketsolutions` (
`Entry_ID` int(10) unsigned NOT NULL,
`TicketNum` mediumint(8) unsigned DEFAULT NULL,
`EntryDateTime` datetime DEFAULT NULL,
`HoursSpent` float DEFAULT NULL,
`Agent_ID` smallint(5) unsigned DEFAULT NULL,
`EntryText` text,
`LastUpdatedByAgent_ID` smallint(5) unsigned DEFAULT NULL,
PRIMARY KEY (`Entry_ID`),
KEY `TicketNum` (`TicketNum`),
KEY `EntryDateTime` (`EntryDateTime`),
KEY `HoursSpent` (`HoursSpent`),
KEY `Rating` (`Rating`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `tickettagsmap` (
`TicketNum` int(11) unsigned NOT NULL,
`Tag_ID` int(10) unsigned NOT NULL,
`AddedByAgent_ID` smallint(5) unsigned NOT NULL,
`DateTimeAdded` datetime NOT NULL,
PRIMARY KEY (`TicketNum`,`Tag_ID`),
KEY `Tag_ID` (`Tag_ID`),
KEY `fk_AgentID` (`AddedByAgent_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
基於我讀過,來處理這個最好的方法是創建重複表格中,只有每桌兩個附加字段:
ModifiedDateTime
Action
這真的是最好的方法嗎?每當即使對記錄做出最輕微的改變,整個記錄都會被插入到相應的歷史記錄表中。這似乎是對空間的巨大浪費。有一個更好的方法嗎?
**要看你的需求的最佳途徑,你想知道這些是什麼變化以及你想要什麼。 – Johan 2011-04-29 15:40:53
我想知道什麼時候_anything_會隨着票證發生變化。例如,如果用戶提交的問題描述較差,則代理會更新描述以更好地描述問題。不過,我仍然想看看原始描述是什麼。我還想跟蹤票證的優先順序何時更改,何時將標籤添加到票證中,何時更改票證的狀態等。 – Paul 2011-04-29 15:49:57
如果您想恢復某些內容以查看更改之前的狀態,則必須存儲您已知道如何執行的完整數據。 – Johan 2011-04-29 16:01:12