新手问题,请高手多鼓励,支持。比如说有一个集团,下面有很多子公司,每个子公司下面又有多个子部门,每个部门下又有多个业务线。现在准备建一个员工表,有个部门字段,保存员工所属部门信息,比如能确定某员工是 A公司A部门A业务线的员工。又准备建一个部门表,保存各个子公司,每个公司的子部门和业务线名称等信息,请问部门表应该有哪些字段,如何关联2个表。谢谢。

解决方案 »

  1.   

    首先:你的部门表一定有DeptID,CompanyID这两个字段.
    其次你的问题是部门表是DeptID做主键,还是DeptID+CompanyID做主键??如果是以DeptID做主键,员工表加入DeptID就可以了,否则,还需要加入CompanyID.业务表也是同理.  至于关联,3个join就可以了.
      

  2.   

    谢谢 IhaveGotYou(扬扬) 继续等待高人!
      

  3.   

    比如说有一个集团,下面有很多子公司,每个子公司下面又有多个子部门,每个部门下又有多个业务线。现在准备建一个员工表,有个部门字段,保存员工所属部门信息,比如能确定某员工是 A公司A部门A业务线的员工。又准备建一个部门表,保存各个子公司,每个公司的子部门和业务线名称等信息,请问部门表应该有哪些字段,如何关联2个表。谢谢。
    emp (员工表)
    字段:
    emp_id varchar2(12) : 每3位分割一类信息,例如:1~3(公司代码)4~6(部门代码)7~9(业务线代码)10~12(业务线中员工代码)“位数可由具体人数部门数公司数确定”
    emp_name varchar2(50): 员工姓名 
    ....其他员工信息字段
    dept(员工所属信息表)
    line_id varchar2(3)业务线信息代码
    line_nmae varchar2(50)业务线名称
    dept_id varchar2(3)部门代码
    dept_name varchar2(50)部门名称
    comp_id varchar2(3)子公司代码
    comp_name varchar2(50)子公司名称
    上面每两组也可以单独建立表但规则要和员工代码编制规则相同3位确定一类信息
      

  4.   

    两个表关联只要限定员工代码相应位数字符等于“员工所属信息表”各字段代码值即可如:
    select a.* from emp a,dept b
    where substr(a.emp_id,1,3)=b.comp_id --限定公司代码
    and substr(a.emp_id,4,3)=b.dept_id --限定部门代码
    and substr(a.emp_id,7,3)=b.line_id --限定业务线代码
    ;
    因为oracle 9i以后的数据库支持 substr()函数建立的索引,因此这样设计的表不会影响建立索引的问题。
      

  5.   

    sorry,差点忘了结贴,谢谢 hrui99(助人为本,潜水为行) 。
    谢谢各位的解答,给分了。