注册 登录
Office中国论坛/Access中国论坛 返回首页

Superleistung的个人空间 http://www.office-cn.net/?249020 [收藏] [复制] [分享] [RSS]

日志

在数据表中添加辅助字段的构想(一)

已有 2109 次阅读2016-5-31 11:46 |个人分类:数据库结构| 数据库备份, 数据表, 管理员, 记录, 如何恢复

刚刚学习Access不久,在建立表的过程中发现一个问题:
如果允许用户通过窗体直接从数据表中删除数据,可能不安全。会出现一种情况——即,用户删除了他权限上允许他删,而事实上却很重要的数据(出于误删,或是根本就是恶意删除)。这时候就需要找回数据,应该做恢复数据及回滚覆盖操作。这就有个如何安全恢复的问题。
假设:恰好数据被删除掉之后没有立刻发现,很多员工又继续用了相当长一段时间,产生了大量数据;而之前的数据库备份又比较久远,这就比较麻烦,以我现在的水平从Access底层是解决不了的。
受权限表的设计原理启发,我想到可以在数据表中添加辅助字段,形如"WantDelete"(是否删除字段),"WantHide"(是否隐藏显示字段)"IfActive"是否活动字段),"LastEdit"(上次编辑记录的ID字段),"DeleteTime"(记录编辑时间字段),"EditTime"(记录编辑时间字段)来控制用户端的操作:
我的构想是:
1.新增:用户的新增操作像以前一样可以进行,新加的"WantDelete","WantHide"字段默认为否,"IfActive"默认为真,"LastEdit""DeleteTime"字段为空"EditTime"字段为新增时间。
2.删除:用户的任何删除操作都不是对表中数据做任何实际操作的,而是对"WantDelete""WantHide""IfActive"打钩,程序对"WantDelete""WantHide"已打钩项目进行隐藏操作;在查询的时候对"IfActive"进行判断,对不活动的记录不进行操作;同时将删除操作的时间记入"DeleteTime"字段。
3.编辑:编辑操作转变为
->对原纪录做Copy新增
->在Copy记录中的"LastEdit"中写入原记录的ID
->在Copy记录中"EditTime"记下当前时间
->将Copy记录的"WantDelete","WantHide"字段设置为否,"IfActive"设置为真"DeleteTime"字段设为空
->在原记录中,设置仅将"WantHide"值为真,"IfActive"设置为否"DeleteTime"字段记录记下当前时间(不设置"WantDelete"为真是为了方便管理员区分编辑和删除操作
->刷新显示的时候,实际上是做的数据筛选,将"IfActive"设置为否的记录隐藏掉。
4.查询:设计查询的时候,把"IfActive"为否的记录筛掉不做操作,这样就可以做到类似显示真实删除掉记录后的效果。
      可以方便的在管理员界面进行管理,提取数据生成日志报表,并对真的需要删掉的记录由管理员进行最终的备份+删除操作。

关于数据恢复的操作:
恢复数据操作的主体应该是管理员,由管理员对隐藏掉的数据进行回溯查询,找到数据记录正确的数据条,修改其相应的"WantDelete","WantHide""IfActive""LastEdit""DeleteTime""EditTime"字段的值即可。

后记:
后来想了一下,这个设计应该能做的更好:其实应该将记录添加人,删除人,编辑操作人作为单独的字段独立出来,记录下做操作的员工ID对后续的管理会更有帮助。

先把这个实现以后调试一段时间看看效果,感觉这里面应该还可以深入,放在以后讲。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-23 18:18 , Processed in 0.050194 second(s), 17 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部