是放在一张表里还是放在多张表里?? 是放在一张表里还是放在多张表里??现在有一个对象,这个对象有70左右的属性,也就是说有70多列了。内容有多有少,70多列分为6个部分吧。每个部分的内容有多有少。请问这70多列是放在一张表中好呢? 还是放在6张表中(每张表都设置Id 外键)好呢??请说说理由吧,大哥们。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎么说呢,我打个比方,你们看看到底该怎么分。比如有一个对象A,对象A有物理属性,化学属性……等属性。物理属性这块里面又有很多的小属性,比如说:大小,质量……化学……………………………………………………………………我在程序里显示页面的时候是根据大的部分显示的。比如一个对象我会做 N 个页面(分别显示物理属性和化学属性)。N是根据该对项大属性来定的,比如上面的对象A只有物理属性和化学属性这两个大属性,所以N为2。现在就是这么个情况,你们觉得怎么分表好呢? 1张表?? N张表?? 如果这70多个列都是对象的基本属性,那么放在一张表里面好。否则今后同时维护6张表即不方便,对性能也没有什么太大好处,至少就多了关联这些表的开销。这种字段很多的表,尽量使用小的数据类型,比如能用smallint就不要去用int等等。字段很多表尤其要避免使用 select * 这种写法,否则还耗费资源,每个字段都被读进来。 LZ 从你8楼的描述来看,比较建议采用分开表设计。个人考虑是这样,供LZ参考。1、节约空间:不是所有的记录都具有所有的属性,放在一个表中会导致大量存放NULL值,造成空间浪费。2、提高操作性能:你的数据读取和写入是分部分进行的,分表操作避免了对大表的操作,在客户体验方面会好一些。3、扩展性好:由于分表操作,今后需要扩展记录的大类属性和属性只需建立新表就可以了。当然也带来一些麻烦:1、代码难度加大;2、当需要显示大量记录列表,而且显示的列又散布在不同的大类中将带来多表联合,性能肯定不理想。 感谢 JiangHongTao 其他人怎么看呢??? 从实体(entity)的角度来考虑吧。如果一个实体有太多的属性,可能是实体划分不好。 建议分属性分表如果表分的太多,查询的时候,大量的表联合起来,效率也差很多如果不分表,大量的字段都是为null,造成空间的浪费,表里面有大量的字段,给程序编码也带来麻烦 select语句问题~ 3*.01=0.30000000000000004 数据库设计问题 求一个简单的SQL!!! select和delete在一起的用法请求帮助! 下面的存储过程用临时表怎么改,谢谢! 又想起来一个数据备份问题 为什么点.pjt .pjx进VFP时,总会提示"文件.prg不存在", 我已经把一个.prg设为主文件了啊 Sql 行列转换 动态Sql(Pivot) XP系统和2003系统的SQL版本数据库连接区别在哪? 怎样将EXCEL表转大批SQL数据库中 小疑问
化学……………………………………………………………………我在程序里显示页面的时候是根据大的部分显示的。比如一个对象我会做 N 个页面(分别显示物理属性和化学属性)。N是根据该对项大属性来定的,比如上面的对象A只有物理属性和化学属性这两个大属性,所以N为2。现在就是这么个情况,你们觉得怎么分表好呢? 1张表?? N张表??
否则今后同时维护6张表即不方便,对性能也没有什么太大好处,至少就多了关联这些表的开销。这种字段很多的表,尽量使用小的数据类型,比如能用smallint就不要去用int等等。字段很多表尤其要避免使用 select * 这种写法,否则还耗费资源,每个字段都被读进来。
个人考虑是这样,供LZ参考。
1、节约空间:不是所有的记录都具有所有的属性,放在一个表中会导致大量存放NULL值,造成空间浪费。
2、提高操作性能:你的数据读取和写入是分部分进行的,分表操作避免了对大表的操作,在客户体验方面会好一些。
3、扩展性好:由于分表操作,今后需要扩展记录的大类属性和属性只需建立新表就可以了。
当然也带来一些麻烦:
1、代码难度加大;
2、当需要显示大量记录列表,而且显示的列又散布在不同的大类中将带来多表联合,性能肯定不理想。
如果表分的太多,查询的时候,大量的表联合起来,效率也差很多如果不分表,大量的字段都是为null,造成空间的浪费,表里面有大量的字段,给程序编码也带来麻烦