ITPUB??ì3
ITPUB论坛 » 系统分析与UML » 人事工资表如何设计

标题: 人事工资表如何设计
离线 king_wjb
中级会员



精华贴数 1
个人空间 0
技术积分 733 (2547)
社区积分 5 (14954)
注册日期 2003-2-26
论坛徽章:0
      
      

发表于 2007-7-20 17:27 
人事工资表如何设计

请问做过人事系统的朋友,在设计工资表时一般是怎样设计的。
我知道的有两种方式:
1、把工资款项以多条记录的形式存储,如张三有基础工资、职务工资、工龄工资。。。一共10个款项,则数据库中存储10条记录。
2、把工资款项以列的形式存储,如table A ,col1、col2、col3。。。

第一种对性能肯定有影响,而且汇总查询起来很繁琐;第二种列数不好确定,不知道总共需要建多少列,而且很多列都是没用的。

其实还有第三种方案,就是table A ,col1、col2、col3。。。,对不同的员工类型不同的列代表不同的含义。但是也有缺陷,其一就是列数不好确定,另外就是查询起来也很麻烦,要在程序中不同的转换。

大家一起探讨探讨。


只看该作者    顶部
离线 snowmeteor
初级会员



精华贴数 0
个人空间 0
技术积分 14 (69716)
社区积分 0 (705208)
注册日期 2005-12-3
论坛徽章:0
      
      

发表于 2007-7-21 09:33 
飘过,觉得第一种好,汇总可以利用视图 (group by创建) ,查询起来应该会简单一些


只看该作者    顶部
离线 king_wjb
中级会员



精华贴数 1
个人空间 0
技术积分 733 (2547)
社区积分 5 (14954)
注册日期 2003-2-26
论坛徽章:0
      
      

发表于 2007-7-23 14:18 
第一种效率会比较低的


只看该作者    顶部
离线 yl_gz
初级会员



精华贴数 0
个人空间 0
技术积分 105 (15783)
社区积分 2 (23340)
注册日期 2002-10-24
论坛徽章:0
      
      

发表于 2008-2-14 08:56 
肯定是第一种好。如果是第二种,如果工资类型增加,则需要修改代码。


__________________
一天到晚编码的人
只看该作者    顶部
离线 lodge
肥猫猫


精华贴数 10
个人空间 0
技术积分 10393 (114)
社区积分 11568 (127)
注册日期 2002-12-15
论坛徽章:27
现任管理团队成员会员2007贡献徽章金色在线徽章2008北京奥运纪念徽章:射击生肖徽章2007版:虎生肖徽章2007版:鼠
2008年新春纪念徽章ITPUB新首页上线纪念徽章生肖徽章:猪生肖徽章:猪生肖徽章:猪生肖徽章:猪

发表于 2008-2-22 18:54 
第一种方式,是纯逻辑设计,或许在逻辑上比较简洁, 但由于和实际的工资单结构大相径庭,无法在上游工程中分析和解决设计上的问题,项目中会存在很大风险,质量控制也非常困难。至于将来的扩张性,牺牲设计方案的可分析性来保障是很不值得的。
第二种方式是接近实际的设计,因为可以同实物对照它分析起来会很容易,比如说在设计阶段就能够通过和工资单的对比来发现是否有缺失的字段等等。使用这样方案,程序设计和质量监控都很容易推荐使用。
第三种方式则完全脱离了关系型数据库的模式,它会做成什么样偶完全无法想象,不建议在产品开发中使用


__________________
只看该作者    顶部
离线 trigger_lau
学会适应,努力改变


来自 巢湖之滨
精华贴数 4
个人空间 70
技术积分 14139 (77)
社区积分 1985 (585)
注册日期 2002-4-13
论坛徽章:55
现任管理团队成员生肖徽章:羊    
      

发表于 2008-2-28 00:41 


QUOTE:
原帖由 lodge 于 2008-2-22 18:54 发表
第一种方式,是纯逻辑设计,或许在逻辑上比较简洁, 但由于和实际的工资单结构大相径庭,无法在上游工程中分析和解决设计上的问题,项目中会存在很大风险,质量控制也非常困难。至于将来的扩张性,牺牲设计方案的可分析性来保障是很不值得的。
第二种方式是接近实际的设计,因为可以同实物对照它分析起来会很容易,比如说在设计阶段就能够通过和工资单的对比来发现是否有缺失的字段等等。使用这样方案,程序设计和质量监控都很容易推荐使用。
第三种方式则完全脱离了关系型数据库的模式,它会做成什么样偶完全无法想象,不建议在产品开发中使用

我认为可以使用第一种,然后查询时使用动态的生成列。
单独建立表存储不同的类型,可以设置不同的类型的浏览权限。


__________________
论坛:
      多研究些问题,少谈些主义。-胡适如是说。
      请标好主题的标签,便于解答。 决定定期回答业务问题。

做人:
     知之为知之,不知为不知。
     学习装死,可以骗过狗熊!
     忽然之间感觉做个懒熊挺好的,肥肥的。

做事:
      很多时候1+1并不等于2。  
      如果ERP是围城,那我就多到城墙上去看看外面  


MSN:    trigger_lau@hotmail dot com
POPO:  trigger_lau@163 dot com(发邮件用这个)
QQ:      35253443

(加我的请说明理由)
只看该作者    顶部
离线 lodge
肥猫猫


精华贴数 10
个人空间 0
技术积分 10393 (114)
社区积分 11568 (127)
注册日期 2002-12-15
论坛徽章:27
现任管理团队成员会员2007贡献徽章金色在线徽章2008北京奥运纪念徽章:射击生肖徽章2007版:虎生肖徽章2007版:鼠
2008年新春纪念徽章ITPUB新首页上线纪念徽章生肖徽章:猪生肖徽章:猪生肖徽章:猪生肖徽章:猪

发表于 2008-2-28 06:20 


QUOTE:
原帖由 trigger_lau 于 2008-2-28 00:41 发表



我认为可以使用第一种,然后查询时使用动态的生成列。
单独建立表存储不同的类型,可以设置不同的类型的浏览权限。

恩, 先明确一哈两种方式
第一种
姓名*, 款项*, 工资额

第二种
姓名*, 基础工资, 职务工资, 工龄工资,。。。

第一种方式和我们见过的工资单很不相同, 很多要求都木有明确, 因此 在前期设计阶段无法确定设计方案是否和需求相符. 只有等到项目实施阶段, 把工资的各个款项都写进DB, 才能够根据运行结果作出判断, 这种方式提高了抽象的层次, 赋予了系统很大的可扩张性, 但同时却牺牲了设计方案的可分析性. 这个牺牲的直接后果, 就是把本来可以提前测试的功能点, 推迟到系统测试之后, 既加大了系统测试的压力, 也大大增加了项目在最后阶段出现重大BUG的可能性, 提高了开发实施的风险. 如果是为少数企业做定制开发, 这种设计弊大于利. 但是, 如果是做用于二次开发的管理模块, 比如说做SAP的ERP模块, 这个方案还是有可取之处的.

另外, 可为第二种方案预设一定数量的保留字段, 以便将来增减款项时使用. 比如说, 使用以下方式


工资表
姓名*, 基础工资, 职务工资, 工龄工资,。。。,预备款项1,预备款项2,预备款项3。。。

如果所有员工的工资构成都相同则可以这么做
工资构成表(仅一条记录, 使用注册表或者INI文件也可以)
基础工资标志, 职务工资标志, 工龄工资标志,。。。,预备款项1标志,预备款项2标志,预备款项3标志。。。

如果每个员工的工资构成都不同, 则这么做
工资构成表(也可以考虑和工资表合并)
姓名*, 基础工资标志, 职务工资标志, 工龄工资标志,。。。,预备款项1标志,预备款项2标志,预备款项3标志。。。

[ 本帖最后由 lodge 于 2008-2-28 06:36 编辑 ]


__________________
只看该作者    顶部
离线 developerm
海豚


精华贴数 0
个人空间 0
技术积分 2936 (511)
社区积分 2227 (535)
注册日期 2005-3-21
论坛徽章:24
现任管理团队成员ITPUB元老会员2007贡献徽章嫦娥生肖徽章2007版:羊2008北京奥运纪念徽章:田径
ITPUB新首页上线纪念徽章生肖徽章:猪    

发表于 2008-3-18 17:58 
个人感觉还是第一种方法方便些,第二种方法实用


__________________
不以物喜,不以已悲,达则兼济天下、穷则独善其身!
只看该作者    顶部
离线 louis_xu
来无踪去留影


来自 深圳
精华贴数 0
个人空间 0
技术积分 1823 (883)
社区积分 322 (1760)
注册日期 2008-1-18
论坛徽章:8
生肖徽章2007版:蛇生肖徽章2007版:蛇生肖徽章2007版:蛇   
      

发表于 2008-3-20 17:50 
设计表要保证所以字段信息与主键的关联唯一


__________________
拼命赚钱买彩票!
只看该作者    顶部
离线 DragonBill
武陵愚生


精华贴数 1
个人空间 10
技术积分 3260 (443)
社区积分 391 (1582)
注册日期 2006-12-18
论坛徽章:13
2008北京奥运纪念徽章:击剑生肖徽章2007版:虎    
      

发表于 2008-3-24 16:36 
在Oracle下, 我会把它设置成Nest Table形式
另外像 基础工资、职务工资、工龄工资 这种最基本工资外, 其它都应该是根据职位或工龄的比例来的
因此可以设置一个比例表, 再Join计算(在其它DB,如MSSQL中我常采用这种做法)


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问