是放在一张表里还是放在多张表里??现在有一个对象,这个对象有70左右的属性,也就是说有70多列了。内容有多有少,70多列分为6个部分吧。每个部分的内容有多有少。
请问这70多列是放在一张表中好呢? 
还是放在6张表中(每张表都设置Id 外键)好呢??请说说理由吧,大哥们。

解决方案 »

  1.   

    怎么说呢,我打个比方,你们看看到底该怎么分。比如有一个对象A,对象A有物理属性,化学属性……等属性。物理属性这块里面又有很多的小属性,比如说:大小,质量……
    化学……………………………………………………………………我在程序里显示页面的时候是根据大的部分显示的。比如一个对象我会做 N 个页面(分别显示物理属性和化学属性)。N是根据该对项大属性来定的,比如上面的对象A只有物理属性和化学属性这两个大属性,所以N为2。现在就是这么个情况,你们觉得怎么分表好呢? 1张表?? N张表??
      

  2.   

    如果这70多个列都是对象的基本属性,那么放在一张表里面好。
    否则今后同时维护6张表即不方便,对性能也没有什么太大好处,至少就多了关联这些表的开销。这种字段很多的表,尽量使用小的数据类型,比如能用smallint就不要去用int等等。字段很多表尤其要避免使用 select * 这种写法,否则还耗费资源,每个字段都被读进来。
      

  3.   

    LZ 从你8楼的描述来看,比较建议采用分开表设计。
    个人考虑是这样,供LZ参考。
    1、节约空间:不是所有的记录都具有所有的属性,放在一个表中会导致大量存放NULL值,造成空间浪费。
    2、提高操作性能:你的数据读取和写入是分部分进行的,分表操作避免了对大表的操作,在客户体验方面会好一些。
    3、扩展性好:由于分表操作,今后需要扩展记录的大类属性和属性只需建立新表就可以了。
    当然也带来一些麻烦:
    1、代码难度加大;
    2、当需要显示大量记录列表,而且显示的列又散布在不同的大类中将带来多表联合,性能肯定不理想。
      

  4.   

    感谢 JiangHongTao  其他人怎么看呢???
      

  5.   

    从实体(entity)的角度来考虑吧。如果一个实体有太多的属性,可能是实体划分不好。
      

  6.   

    建议分属性分表
    如果表分的太多,查询的时候,大量的表联合起来,效率也差很多如果不分表,大量的字段都是为null,造成空间的浪费,表里面有大量的字段,给程序编码也带来麻烦