数据库表的设计什么时候可以存在冗余?

数据库表的设计什么时候可以存在冗余?
这个是今天的一个面试题,一般我们在设计表的时候至少需要满足第二范式,全满足第三范式可能会有很多表,在一个大型系统中,表的设计肯定是需要做冗余的但是什么时候做冗余呢我来举个例子

比如 一个订单表 需要和用户关联 一般情况是订单表加上一个userid 但是你为了不链表查询 在订单表加了一个username,这时候就不需要链表查了。
这时候就产生了冗余,而且如果用户改了登录名 这个查询结果就会有问题,所以次数的冗余是不合理的

其实把username放到user表 是消除了 订单表中的一个 函数依赖 userid->username

结论,如果有一列属性不会变化, 可以做这样的冗余 比如性别 出生年月等


版权声明:本文为weixin_38738049原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。