有关于数据库冗余的讨论

  首先,什么是数据库冗余呢?打个比方

  表一:用户   地址id

    表二:用户  省 市  县  镇  村

  表三:地址id  地址  上级地址id

  上面三张表中已知用户的情况下想要获取地址有2种方法,

  方法1、通过表一和表三的联合查询来获取地址;

  方法2、通过表二直接获取地址

  上面两种方法中方法2是存在数据库冗余的,因为如果地址发生改变的时候需要改变地址  如果按照第一种方法设计数据库就不存在数据库冗余,但是按照第二种方法更新地址时,这时候表2中的用户的地址也需要更新  如果不更新的话数据就是错误的数据了。

  数据冗余的好处是查询起来会非常的方便,但是如果数据需要改变,这时候修改起来会比较麻烦,因为如果各个表都有地址的话  那每个表的地址都需要改变;

  没有数据冗余的好处是修改数据的时候会非常的方便,因为只需要修改表三,不用修改其它的地方。但是查询效率会比之前有数据冗余要差,至于差多少取决于数据库的设计,SQL文的优化,视图存储过程索引等的使用等等

  我查询了一下网上对于数据库冗余的看法,好多人支持适当的使用数据库冗余,因为这样便于提高查询的效率。但是也有好多人不支持使用数据库冗余,因为在更新数据的时候,使用数据库冗余的更新不全面的话,会出现很多错误数据,这样的设计和程序无疑是失败的。我个人的看法也是偏向于不使用冗余或者尽量少使用,因为一方面我们不用担心更新的时候会不会有哪张表没有更新到,有利于专心写代码,另一方面,在不使用冗余的情况下,我们会试着使用索引  视图  优化SQL等方法来提高查询的效率,这样有利于自己水平的提高

转载于:https://www.cnblogs.com/hongcong/p/6588812.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值