基本工资标准表数据库怎么设计

2021-08-04 15:06:02 +08:00
 lskjdfgl

数据修改的时候怎么保留历史数据

岗位等级表
岗位 岗位等级 基本工资 岗位工资 基础工资
总经理 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
2062 次点击
所在节点    MySQL
8 条回复
gimp
2021-08-04 15:17:52 +08:00
新建一个历史表。
saulshao
2021-08-04 15:22:01 +08:00
建一个表,名字叫 基础工资标准_HIST 。对原始表修改或删除的时候,先按照主键把记录写(插入)到新表里面
polyang
2021-08-04 15:39:33 +08:00
直接搞一个历史记录表就行了,表结构可以和基本工资标准表保持一致,然后每次修改基本工资标准表都王历史记录表里插入数据。
PS:总经理的基本工资有点低啊[手动狗头]
dongxiao
2021-08-04 15:49:56 +08:00
可以考虑用拉链表
janus77
2021-08-04 15:52:24 +08:00
一张表怎么行,得多张表啊
一张表只写基本工资和构成,有些补贴项五花八门的,也不是每个人都有,这时候就要用到补贴项表了,同理还有奖励项、罚款项等等。
no1xsyzy
2021-08-05 10:05:46 +08:00
「表格」这个叫法很诡异,它包含三种完全不同的数据
一种是 form,正确的叫法是「表单」,但是日常也会叫表格(这可能是因为被简称为「表」之后又错误地拓展)
一种是 table,即每一行是一条记录,每一列是一个字段,是关系型数据库的 table 。
一种是 matrix,矩阵,组织形态上极容易与表格混淆,主要差异在于列的存在、列的数量并不固定,甚至可能是稀疏的。它和文档数据库有一些异曲同工。

如果考虑到补贴项等等五花八门的情况,它肯定是 matrix
matrix 用关系型数据库,是以 (行标, 列标, 值) 来存储的,每一个单元格构成一条记录。
这样的话也可以添加一个新的字段 修改时间戳,每次查当前状态时采用 group by (行标, 列标) order by 时间戳 desc limit 1 就可以。
当然,历史记录单独放一张表也可以,注意添加相应的抽象层。

当然,其实还有一种策略是把它写成 csv 并 git commit (
caroline1022
2021-08-05 10:21:23 +08:00
如果历史记录只用来做简单的记录没有频繁查询结算的需求的话,可以用一条更简单的变更记录表,就是楼上说的 matrix 这种(之前没听说过这个名字,受教了)
因为如果是做跟原表结构一致的历史表的话,维护开销会比较大,当原表结构有变更时,历史表也需要变更结构。更别说换了枚举值之类的情况,就更麻烦了。变更表可以以不变应万变
EscYezi
2021-08-05 20:39:48 +08:00
用一个表,加个可用性字段,修改的时候把旧数据置为不可用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/793618

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX