我试图弄清楚如何设计我的数据库表以允许撤消重做。
假设您有一个具有以下结构的任务表:
id <int>
title <varchar>
memo <string>
date_added <datetime>
date_due <datetime>
现在假设在几天内多次登录并进行了多次编辑;但用户想回到其中一个版本。
- 您是否有一个单独的表来跟踪更改 - 或者 - 您是否会尝试将更改保留在任务表中(“幽灵”行,因为没有更好的术语)?
- 您会跟踪所有列还是只跟踪每次更改的列?
如果重要的话,我正在使用 MySQL。另外,如果重要的话,我希望能够显示历史记录(ala Photoshop)并允许用户切换到任何版本。
额外问题:您会在更改时保存整个memo
单元格还是尝试仅保存增量?我问的原因是因为memo
单元格可能很大,每次修订只能更改一个单词或字符。诚然,保存增量需要解析,但如果不经常期望撤消,那么节省空间而不是处理时间不是更好吗?
感谢您的帮助。