数据修改的时候怎么保留历史数据
岗位等级表 | ||||
岗位 | 岗位等级 | 基本工资 | 岗位工资 | 基础工资 |
总经理 | 1 | 2000 | 4000 | 6000 |
2 | 2000 | 3500 | 5500 | |
3 | 2000 | 3000 | 5000 | |
总监、副总 | 4 | 800 | 2600 | 3400 |
5 | 800 | 2300 | 3100 | |
6 | 800 | 2000 | 2800 | |
部门经理 | 7 | 600 | 1800 | 2400 |
8 | 600 | 1600 | 2200 | |
9 | 600 | 1400 | 2000 | |
部门副经理 | 10 | 500 | 1300 | 1800 |
11 | 500 | 1200 | 1700 | |
12 | 500 | 1100 | 1600 | |
技术员 | 13 | 400 | 950 | 1350 |
14 | 400 | 900 | 1300 | |
15 | 400 | 850 | 1250 | |
16 | 400 | 800 | 1200 | |
科员 | 17 | 400 | 850 | 1250 |
18 | 400 | 800 | 1200 | |
19 | 400 | 750 | 1150 | |
20 | 400 | 700 | 1100 |
1
gimp 2021-08-04 15:17:52 +08:00
新建一个历史表。
|
2
saulshao 2021-08-04 15:22:01 +08:00
建一个表,名字叫 基础工资标准_HIST 。对原始表修改或删除的时候,先按照主键把记录写(插入)到新表里面
|
3
polyang 2021-08-04 15:39:33 +08:00
直接搞一个历史记录表就行了,表结构可以和基本工资标准表保持一致,然后每次修改基本工资标准表都王历史记录表里插入数据。
PS:总经理的基本工资有点低啊[手动狗头] |
4
dongxiao 2021-08-04 15:49:56 +08:00
可以考虑用拉链表
|
5
janus77 2021-08-04 15:52:24 +08:00
一张表怎么行,得多张表啊
一张表只写基本工资和构成,有些补贴项五花八门的,也不是每个人都有,这时候就要用到补贴项表了,同理还有奖励项、罚款项等等。 |
6
no1xsyzy 2021-08-05 10:05:46 +08:00 1
「表格」这个叫法很诡异,它包含三种完全不同的数据
一种是 form,正确的叫法是「表单」,但是日常也会叫表格(这可能是因为被简称为「表」之后又错误地拓展) 一种是 table,即每一行是一条记录,每一列是一个字段,是关系型数据库的 table 。 一种是 matrix,矩阵,组织形态上极容易与表格混淆,主要差异在于列的存在、列的数量并不固定,甚至可能是稀疏的。它和文档数据库有一些异曲同工。 如果考虑到补贴项等等五花八门的情况,它肯定是 matrix matrix 用关系型数据库,是以 (行标, 列标, 值) 来存储的,每一个单元格构成一条记录。 这样的话也可以添加一个新的字段 修改时间戳,每次查当前状态时采用 group by (行标, 列标) order by 时间戳 desc limit 1 就可以。 当然,历史记录单独放一张表也可以,注意添加相应的抽象层。 当然,其实还有一种策略是把它写成 csv 并 git commit ( |
7
caroline1022 2021-08-05 10:21:23 +08:00
如果历史记录只用来做简单的记录没有频繁查询结算的需求的话,可以用一条更简单的变更记录表,就是楼上说的 matrix 这种(之前没听说过这个名字,受教了)
因为如果是做跟原表结构一致的历史表的话,维护开销会比较大,当原表结构有变更时,历史表也需要变更结构。更别说换了枚举值之类的情况,就更麻烦了。变更表可以以不变应万变 |
8
EscYezi 2021-08-05 20:39:48 +08:00 via iPhone
用一个表,加个可用性字段,修改的时候把旧数据置为不可用
|