找到这个问题:http://topic.csdn.net/u/20111122/00/81057c79-ed5b-4be7-b301-9ebc7baea9be.html
但是只提到了用户表和员工表是否应该分开的问题。
我的OA中这两个表是分开的,
用户表中有临时的帐号信息;员工可能有用户信息;用户可能有员工信息;员工中有UserID字段来关联员工表:
员工表:Employee
ID,Name,DeptID,UserID...
用户表:User
ID,UserName,UserPwd,DeptID...
现在关键是,这两个表中都有部门信息,更新了用户表,关联的员工表也要更新;更新了员工表,关联的用户表也需要反填。
问问大侠们是怎么处理的呢?

解决方案 »

  1.   

    用触发器可以实现
    create trigger tri_update1 on 员工表
    after update
    as
    begin
     update 用户表
    end
    create trigger tri_update2 on 用户表
    after update
    as
    begin
     update 员工表
    end
      

  2.   

    LZ是要解决冗余的问题还是表结构无法修改要保持数据同步的问题?
    冗余的话就若用户和部门没有必然联系的话把用户里的dept删掉。
    表结构动不了的话,要么添加触发器,要么添加时在过程里同步更新。
      

  3.   

    如果楼主这么在意DeptID冗余的问题
    直接干掉User表中的这个字段啊
    反正是冗余的,而且听你的描述好像User可以不是员工
    那可能很多DeptID都是空。除非你需要从这个表中查DeptID,否则我觉得干掉更好
      

  4.   

    个人认为去掉用户表的DeptId字段比较合适
      

  5.   

    删掉用户表里面的DeptID不行啊,如果这个用户没有员工信息,那这个用户就失去部门信息了,根据部门查询,它就丢掉了
      

  6.   

    我只知道两个方法:
    1.不动表,反填或者触发反填字段。
    2.去掉这两个表中的DeptID,新建一个表:
    ID,EmployeeID,UserID,DeptID。
    来存储两个表的部门。EmployeeID可以为空,UserID可以为空。第二种改动较大一点。但不知道这两种哪个好一点。想知道你们怎么处理这种问题的。