数据库表的设计什么时候可以存在冗余?
这个是今天的一个面试题,一般我们在设计表的时候至少需要满足第二范式,全满足第三范式可能会有很多表,在一个大型系统中,表的设计肯定是需要做冗余的但是什么时候做冗余呢我来举个例子
比如 一个订单表 需要和用户关联 一般情况是订单表加上一个userid 但是你为了不链表查询 在订单表加了一个username,这时候就不需要链表查了。
这时候就产生了冗余,而且如果用户改了登录名 这个查询结果就会有问题,所以次数的冗余是不合理的
其实把username放到user表 是消除了 订单表中的一个 函数依赖 userid->username
结论,如果有一列属性不会变化, 可以做这样的冗余 比如性别 出生年月等