why 要把用户资料拆成用户表主表Users,个人用户基本资料表UserProfile,个人用户详细资料表UserDetail呢?
"如果用户表不拆分,全部放到一起,很多记录的很多字段将是空的,并且对于这么多的字段,编程时好象不好处理"
==>这只是你编程上的问题,而且你可以通过设置字段缺省值或者在代码中做一个公共函数来处理null的问题,只不过不让你的程序引起error而已。没有必要因这样一个小问题,就把表拆成3个。

解决方案 »

  1.   

    系统数据关系图见http://www.gdcic.net/dotnetBank/pictures/20030827/990000000026/pic.jpg
      

  2.   

    不过在下面几种情况下,还是要考虑拆一下表:
    1 如果表中字段很多,总的长度加在一起,超过了行长度的最大限制(好像是8468吧,我也记不清楚了),那么create table是成功的,但是有warning,有可能会引起数据插入和更新错误的。为了保证永远能够插入和更新记录,这个时候可以拆分成两个1对1关系的表
    2 如果有很多text字段,可以考虑在主表中保留1个text字段,把其它text字段单独放到另外一个表中。
      

  3.   

    to enhydraboy:说得也是,这只是我的顾虑,因为太多字段,写insert和update语句好象很累,还要顾及null值检查。to pengdali:
    1、用户表的拆分
    这个要看你的实际情况,你这样做牺牲了速度提高了存储。但你为什么不能牺牲一点存储来提高索引速度呢?依你看是不是也没拆分的必要了????2、功能表是不是多余地
    是多余的,如果和角色是完全一对一,可以合并,但你如果要考虑以后可能会出现一对多的关系,可以保持现有这也正是我的想法。