想做个MAIL的个人通讯录,希望可以按组划分,譬如“亲戚”“朋友”等,每个人名可以在多个组下,譬如一个人既是是我朋友也是我亲戚。
    我现在是建2张表,组名一张(groupname),还有个人的基本资料一张。(name....),想法是组名表添加一个记录,就在个人表添加一个以该组名为名字的字段。这样哪个组有这个人,就在该字段下赋值“1”。
   请问这样建表好不好?有更好的表结构方法吗?

解决方案 »

  1.   

    不好
    可以这样
    groupname   编号   组名
    name        编号   姓名    组编号
    groupnam 增加一条记录后
    如果选中某个人加入改组就在name中增加一条记录
    例如groupname 01    朋友
                  02    亲戚
        name      01    xiaowang     01
                  02    xiaoli       02
    groupname 增加记录后
                  01    朋友
                  02    亲戚
                  03    同事
    选中xiaoli 加入同事组后name 变为
                  01    xiaowang     01
                  02    xiaoli       02
                  01    xiaoli       03 
                  
                  
      

  2.   

    这样,组越多你的表不就越大?而且冗余信息很多!建议建3张表。例如:人员基本信息
    ID    PNAME     ...
    1     张三
    2     李四组的基本信息
    ID    GNAME     ...
    1     亲戚
    2     朋友
    3     邻居分组情况
    ID    GID   PID  ...
    1     1    1
    2     1    2
    3     3    1当然,最后一张表也可以这样,上面是我的习惯,表的ID字段通常是自增的!
    ID    GNAME   PNAME  ...
    1     亲戚        张三
    2     邻居        张三
    3     邻居        李四 这样,无论查找组的成员,还是以组分类查找个人都很方便,且没有冗余信息!