我正在和一些朋友谈论在MySQL中存储数据的“更新”方式,他们更多地谈论复制/编辑MySQL记录,而不是修改唯一的。
示例:
ID | NAME | EMAIL | DATE_UPDATED | STATUS
1 John jon@email.com 2018-01-01 05:00:00 PUBLISHED
因此,当UPDATE命令通过而不是编辑记录1时,它会将记录复制到类似的内容中。
ID | NAME | EMAIL | DATE_UPDATED | STATUS
1 John jon@email.com 2018-01-01 05:00:00 PUBLISHED
1.1 John jon@email.com 2018-01-01 05:00:00 REVISION
这可能不完全,但类似的概念。我不确定这样的确切术语,但我相信它已成为当今大多数应用程序的标准。
我正在寻找最佳处理/创造这样的东西的方向。 MySQL触发? PHP重复记录等。以及如何处理SELECT语句,现在情况发生了变化。
答案 0 :(得分:2)
像大多数“最好的方式......”问题一样,这里的答案是“它取决于”......
在详细介绍为什么会这样或那样的时候,一些最好的答案来自“你对未来的维护有什么理解和感觉?”
一张桌子:
有些项目受益于一种表格方法,因为它们更多地基于“交易化”数据集(例如,处理付款等 - 您需要知道对所发生的所有事情的完整跟踪)。
要收集最新值,只需使用'order by'执行MySQL查询,并且可能包含'limit 1'。
两个表(或更多):
我经常更喜欢多表系统,因为我们经常有一个表包含许多列的变量'profile'数据(userId,fname,lname,dob等),另一个包含其他'当前的'信息(信用等)
这些表可以是3-30列,如果试图只保留一个表(查找任何特定“列”的最新数据),则会变得非常混乱,因为事务可能会分散几天。
但是,我们仍然会保留一个事务表来跟踪更改(由谁,何时等)。通常这个表很简单
transID affectedID byID action timestamp
我们学到了什么,它可以在任何可能快速获得许多请求的表上使用毫秒时间戳(比如跟踪PHP中发生的各种后端进程),这样您就可以按时间排序。如果您使用常规时间戳,您将获得秒数,并且在那一秒内可能会有大量数据!