在需求中,有一个需求是:对于表修改,要求是保存上次数据及修改痕迹(永久保存历史数据)用来对比

注意,表容量比较大(即,字段比较多).

我的意思是:对于保存上次记录,我想新建一张表,

表结构:id(自增),update_date(记录当前修改的时间点),update_content(原表中所有重要的内容)

对于修改痕迹用来对比,到现在我还没有想出来有什么好方法.

请路过的同胞,帮我看看,有什么好的方法和见解..//我在网上查了好久,也没有查到.唉,郁闷..

我公司用的是spring2.x+hibernate3.x+struts2.x

评论
ddandyy 2007-12-17
这样好像就要处理条数有可能过多的问题
虽然说是可以建索引 不过还是尽可能的避免比较好吧
我还是觉得我那种方法是可以的
至于说有可能数据量过大
那么可以在插入的时候先在src里过一遍 把两条中相同的字段全清空 或者放上一个特定的标识符以节省空间 然后不相同的字段再正常插入

至于说修改的记录
完全可以在src或者显示的时候来做
没有必要要把"变更内容"或者什么的东西写在数据库里吧
saturn 2007-12-17

[quote="keenvi"][quote="ddandyy"]建议用两条记录 不要用一条记录的两个字段一条是原记录 一条是新记录也就是 ID TEXT1 TEXT2 1 AA BB 1 AA CC[/quote] ddandyy 朋友的写法只能记录指定的字段,在字段多的情况下不便记录各个字段的修改记录再就是如果字段内容体积大的话,那数据库体积涨速也很快以下为个人由于有字段多在不建立对应字段的修改记录表的话,所有(对每个字段)修改记录放一个表中每改动一次,就记录一次,该几个字段就记录几个字段,记录内容: 被修改的标志topicId, 被修改的列名称colName, 被修改前的值lastText 修改时间lastUpdateTime 主题表: id title content 1 ... 2 ... ... 10 '天上掉馅饼了111(原:天上掉馅饼了)' '为什么会掉下来呢111(原:天上掉馅饼了)' 修改记录表: id topicId colName lastText lastUpdateTime 1 10 title '天上掉馅饼了' 2007-12-10 11:30 第一次标题被修改 2 10 title '天上掉馅饼了000' 2007-12-12 11:30 第二次标题被修改 3 10 content '天上掉馅饼了' 2007-12-12 11:30 第一次修改内容 我在设计数据库的时候,经验很不足,不知道这样设计的是否合理,还请朋友给出更好的方案让我多学习学习[/quote]

谢谢哦,我觉得你这个建议很好,同时把两个问题解决了.我还想提个问题,我的原表中的字段90%以上的都是有可能被修改,那这样,此表就很庞大了,有可能会引发其他问题(如,速度).

saturn 2007-12-17

[quote="ddandyy"]建议用两条记录 不要用一条记录的两个字段一条是原记录 一条是新记录也就是 ID TEXT1 TEXT2 1 AA BB 1 AA CC[/quote]

我怎么知道那条记录是修改的,如何把修改的记录显列出来??我迷茫

keenvi 2007-12-15
ddandyy 写道
建议用两条记录 不要用一条记录的两个字段
一条是原记录 一条是新记录
也就是
ID TEXT1 TEXT2
1 AA BB
1 AA CC


ddandyy 朋友的写法只能记录指定的字段,在字段多的情况下不便记录各个字段的修改记录
再就是如果字段内容体积大的话,那数据库体积涨速也很快
以下为个人
由于有字段多
在不建立对应字段的修改记录表的话,所有(对每个字段)修改记录放一个表中
每改动一次,就记录一次,该几个字段就记录几个字段,记录内容:
被修改的标志topicId,
被修改的列名称colName,
被修改前的值lastText
修改时间lastUpdateTime

主题表:
id title content
1 ...
2 ...
...
10 '天上掉馅饼了111(原:天上掉馅饼了)' '为什么会掉下来呢111(原:天上掉馅饼了)'

修改记录表:
id topicId colName lastText lastUpdateTime
1 10 title '天上掉馅饼了' 2007-12-10 11:30 第一次标题被修改
2 10 title '天上掉馅饼了000' 2007-12-12 11:30 第二次标题被修改
3 10 content '天上掉馅饼了' 2007-12-12 11:30 第一次修改内容


我在设计数据库的时候,经验很不足,不知道这样设计的是否合理,还请朋友给出更好的方案
让我多学习学习
ddandyy 2007-12-14
建议用两条记录 不要用一条记录的两个字段
一条是原记录 一条是新记录
也就是
ID TEXT1 TEXT2
1 AA BB
1 AA CC
keenvi 2007-12-14
如果不想建立那么多表那么可以在字段中加一个修改的字段的名字

表结构(每个表都一样的结果):id(自增),update_date(记录当前修改的时间点),update_content(原表中所有重要的内容)
另外加上update_Id(被修改的表中对应的ID),
再加上update_colName(被修改的表中的字段)
keenvi 2007-12-14
为每个重要的字段建立对应的一张表

表结构(每个表都一样的结果):id(自增),update_date(记录当前修改的时间点),update_content(原表中所有重要的内容)
另外加上update_Id(被修改的表中对应的ID)
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

saturn
搜索本博客
最近加入圈子
存档
最新评论