毫无疑问, 对于一般数据库肯定是采用第一种方案较好.但是对于大型数据库, 是否适合呢? 如果关联的表都是100万级的大表, 会不会导至效率低下呢? 是否采用冗余设计更好一点呢? 尽管有点难看.
盼有大型数据库开发经验的朋友给一个权威的答案!!!再次谢谢大家!!!

解决方案 »

  1.   

    现在硬盘很大,电脑速度很快,第二种也可以的,对用户速度影响也不大。
    具体情况具体分析,如果你要关联的表很多的话不方便。
      

  2.   

    我觉得看你的需要而定吧.假如你的合作伙伴的信息会出现在一些重要的资料上,比如合同,或者订单.我认为用第二种好一点.因为你的这些文档会打出来发给客户,假如你采用第一种,你每次查看那些合同/订单资料时,合作伙伴的信息每次都从数据库中读取,也是就是说你的活作伙伴的信息永远显示最新的,这样就会一个问题,早期那些文档中存在他的信息也会自动的更新了.  呵呵,所以看你的需要,如果不需要更新,用第二种.反之.我也遇到你这样的问题,我选择了第二种
      

  3.   


    第一种,这种冗余在事务处理性的数据库中是不必要的。而且你冗余的字段都是名称等较长的字符串,极大增加了数据的存储空间,这本身又会降低查询和更新的性能。
    建议的冗余:如存在价格、数量,金额虽然可以通过价格*数量得到,但是最好冗余一个金额的字段,这种字段可以优化计算,但并不占用太多存储空间。