我正在运行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