关于工资系统的问题请教
-----------
我现在的设计思路是每位员工在工资表中,每个月每人一条记录,
结构是:月份,编号,姓名,工资项目一,工资项目二,...,实发工资.
主键是:月份+编号
有一个问题如何处理.
2007/02 月工资已经做好了,也报到银行了,现金也取来了,发完了.
可是年底有些职工认为工资低了,公司决定再补发一次工资.
可是我的工资如何做呀.
1.我已经说了,我的工资表结构主键是:月份+员工编号,
也就是说每位员工在一个月中只能有一条记录呀.我不知加二条.(请问工资表中,一位员工每月可以有多条记录吗?),我只能重新将补发的工资累加到2007/02月,可是最难办的是扣税问题,比如这次发1000多元.本次发放还要将税一同扣出来.
2.如果不想覆盖已经生成的200702月工资表,那又该如何处理呢?
我以前没搞过的工资的系统,一点思路也没有,向大家请教.

解决方案 »

  1.   

    最好加一个"员工id",可能有重名的人
    --------------
    谢谢,其实我说的员工编号就是员工id
      

  2.   

    一开始的主键好像不应该放在 编号和员工上  应该建个identity 便于索引
    员工编号应该用一个列触发器 这样以后想加什么都会很方便
    触发器里判断如果同一个月编号出现两次了  rollback  这样  以后想要像你现在这样加的话可以禁止触发器就可以了  个人意见要是在你现在表上加入的话  还是用个别的员工编号  把两个编号联系在一起好些
      

  3.   

    象楼上说的 主键还是放在identity 列上 比较灵活
      

  4.   

    发放工资的明细表,加上ISBF(是否补发),工资年月,实发际年月
      

  5.   

    说实话   一般习惯性的加个identity这样可以把填充因子家满  索引都可以用别的列键非聚集索引键  这样可以预防突发事件  主键容易定死一些关系  不建议使用   现在很多设计这种工资表这样用虽然没什么错  但是有错的时候想改也改不了   比如你现在的情况 
    我楼上的   加发放次数也看不出来前后差  不如更新一下  临时写个触发器
    更新2月分的员工工资的时候自动把(要补发的钱)-总交税金-前面的税金
      

  6.   

    可不可以建立月度工资发放表我们可以这么考虑 大哥们你们的数据库原理都丢光了么员工是M  工资原来是1  M:1 的关系 所以直接就可以把工资放进员工的表中作为字段】现在:
    员工是M 工资是N M:N的关系 根据数据库系统的优化和设计理论
    有必要增加一个新表 作为实现公司发薪水“联系关系”的实现M:1 的时候  可以把1的字段加入M的表中
    M:N 的时候  需要在M和N中间增加表示关系的表表的主键是 M的主键 N的主键 加上限制条件 月份啦之类的大哥们 我是新人 自考的本科 你们也不能这么欺负我们新手啊时间长了会晕的 希望大家指正
      

  7.   

    建立工资项目编码表 会增加数据库的臃余度 而且会产生多值依赖会产生主键传递的函数依赖
    以上论断取自 自考第四章  ”关系模式的规范化设计“
    :
    "关系模式的冗余和异常问题,规范化(函数依赖、码、范式、2NF、3NF、BCNF、多值依赖、4NF),数据依赖的公理系统,模式的分解"
      

  8.   

    工资项目表,是必须要有的,如果你以前没有建议要建立一个,
    工资项目表要存每一个项目的自定义描述,包含名称,显示次序,进位方式等等一系列数据
    ----这样做有几个好处
    1.便于程序员维护
    2.可以为客户提供自定义工资项目功能
    3.为开发公式系统提供可能
    4.为上报报表数据提供便利
    -----------------------
    另外 GHOSTPE999 我也是自考本科,看来你并没有做过项目,这里很多人《数据库原理》分数都很高。
    向你提个建议:不要生搬硬套书中的理论,对你将来开发没好处,注意把基本原理和开发的实际结合起来,你以后如果完全按照书中的理论做,恐怕不会有几个成功的项目。
      

  9.   

    我这次查询的是每个职工 全年的津贴总额
    我就没有必要把8-9个字段长度的表全读入内存
    我只要选择合乎需要的关系行数据
    然后执行加法就可以不用把整个表全读入内存 
    然后选出符合的行数据   
    然后SELECT符合要求的行的字段 再加起来所以好处还是有的 性能上增强很多