拉链表
和流水表
都是为了记录数据的历史信息。
只是数据粒度的不同。
流水表精确到每天的每一条变化都记录其历史。而拉链表的粒度可控,一般选择每天为粒度,即每天的最终变化才记录。
所以理解了拉链表,自然就知道流水表了。
下面通过一个例子理解一下拉链表
2019-9-10
用户id | 金额 | 时间 |
---|---|---|
001 | 500 | 2019-9-10 12:00:00 |
002 | 600 | 2019-9-10 7:00:00 |
003 | 700 | 2019-9-10 16:00:00 |
此时的拉链表
用户id | 金额 | 时间 | 到期时间 |
---|---|---|---|
001 | 500 | 2019-9-10 12:00:00 | 9999-99-99 99:99:99 |
002 | 600 | 2019-9-10 7:00:00 | 9999-99-99 99:99:99 |
003 | 700 | 2019-9-10 16:00:00 | 9999-99-99 99:99:99 |
这里的到期日期只是一个标志,用来标记这个数据是当前的数据还是历史数据。
9999-99-99 99:99:99 这个时间是可以自定义的。甚至不用时间用任意自定义的标识符都行。
2019-9-11
用户id | 金额 | 时间 |
---|---|---|
001 | 500 | 2019-9-11 12:00:00 |
002 | 200 | 2019-9-11 17:00:00 |
003 | 800 | 2019-9-11 10:00:00 |
变更记录
用户id | 金额 | 时间 | 备注 |
---|---|---|---|
002 | 400 | 2019-9-11 10:00:00 | 取款200 |