数据库表用于存储对文本文档的编辑更改。
数据库表有四列: { id
, timestamp
, user_id
, text
}
每次用户编辑文档时,都会向表中添加一个新行。新行具有自动递增的 id,以及与数据保存时间相匹配的时间戳。
为了确定用户在特定编辑期间进行了哪些编辑更改,将text
响应他或她的编辑而text
插入的行中的 与先前插入的行中的 进行比较。
要确定哪一行是先前插入的行,可以使用id
列或timestamp
列。据我所知,每种方法都有优点和缺点。
使用确定创建顺序id
优点:不受错误设置系统时钟导致的问题的影响。
缺点:似乎是对
id
列的滥用,因为它为列规定了除身份之外的含义id
。管理员可能出于任何原因(例如,在数据迁移期间)更改一组 id 的值,因为只要它们是唯一的,这些值是什么并不重要。然后无法再确定行的创建顺序。
使用确定创建顺序timestamp
- 优点:该
id
列仅用于标识,而timestamp
用于时间,因为它应该是。 - 缺点:只有在每次将行插入表时都知道系统时钟已正确设置时,此方法才可靠。怎么能相信每个插入的系统时钟都正确设置了呢?如果发现系统时钟在过去某个不准确的时期被错误地设置,那么如何修复表的状态?
我寻求一个强有力的论据来选择一种方法而不是另一种方法,或者描述另一种比我正在考虑的两种方法更好的方法。