本帖最后由 totola147 于 2013-02-05 10:55:24 编辑

解决方案 »

  1.   

    如果只有student表,是符合3nf规范的。
    username和collegename作为student的属性依赖于主键。
    但是考虑到college还可能会有其他的属性(就算现在没有也应该考虑未来的需求),所以应该另外维护一张college表。
    但是lz的设计是违反3nf的。stu表内不应含有其他表的非主键。
    "为了避免过多的表联接",我不认为多join一个college表会造成过多的表join。何况这种为了避免表联接的设计一定会提高维护成本。建议还是存放collegeid。
      

  2.   


    “但是考虑到college还可能会有其他的属性(就算现在没有也应该考虑未来的需求),所以应该另外维护一张college表。”
    我的方案是中本来就有college表,现在的设计,如果college增加属性对student没有任何影响我举的这个只是个例子,并不是说生产环境中就只有一个表连接我想省去,而是有非常多的比如说学生表里有学院ID 社团ID  班级ID  专业ID  。这样的话 如果要查询学生的基本信息,要连接几张表呢您没有理解我的设计,也没有理解我设计的意图不过还是感谢您参与讨论