一张表job_exchange(交接班记录)
一张表user(用户),
job_exchange表信息包括:记录创建人,交班值长,接班值长,
交班值班工(若干人),接班值班工(若干人),
交班实习人员(若干人),接班实习人员(若干人),
交班副值长,接班副值长,等等人如果在job_exchange表中代表人的字段都关联到user表,
会出现很多的关联字段,而且还会产生很多的关联表,如果在job_exchange表中只保存user的名字,多个名字用“,”号隔开,
这样会方便很多,可是如果要增加一些查询,比如说
查询所有张三参加过的交接班记录,就能只用名字来查,而不是ID,如果有人重名..。。该怎么设计job_exchange表好????

解决方案 »

  1.   

    在job_exchange里保存的是用户的id,不要直接保存名字
    你的这两个表可以处理完的,没问题。搜索出,使用id进行搜索
      

  2.   

    在job_exchange里保存的是用户的id,这样如果用hibernate的话,方便多了。
    外键关联多没关系的,系统会自己优化。
      

  3.   

    job_exchange 既保存user的id又保存name即可
    id1:name1;id2:name2...
    取得时候用逗号分割之后的每项再用冒号分割得到其值
      

  4.   

    一张表job_exchange(交接班记录)
    一张表user(用户),
    job_exchange表信息包括:记录创建人,交班值长,接班值长,
    交班值班工(若干人),接班值班工(若干人),
    交班实习人员(若干人),接班实习人员(若干人),
    交班副值长,接班副值长,等等人--建议可以这样处理
    job_exchange : 主键id,交接单编号,记录创建人(也应使用id,具体名字应道个人信息去获取),工种类型type,user_id
    采取每人一条记录的方式 通过type区分工种,归属在同一个交接单下
    这样一来:
    缺点: 交接单号和记录创建人会冗余,记录条数会有所增多
    优点:1、不需要拆分字段,查询效率会有所提高;2、数据组织形式比较灵活(可拆可和),可以满足各种形式的统计查询
    此表只需存贮user_id,用户的具体信息在user表中管理,1、减少数据的冗余,2、避免名字和user_id对应关系与用户表不一致的情况产生(比如某个用户修改了用户信息,比如改名)(数据一致性,保证所有具体信息来源一致,通过外键获取)。