为什么有人会通过执行以下操作将实体(例如user)分配到多个表中:
user(user_id, username)
user_tel(user_id, tel_no)
user_addr(user_id, addr)
user_details(user_id, details)
你从这个数据库设计中得到什么加速奖励吗?这是非常违反直觉的,因为看起来执行链连接来检索数据听起来比使用选择投影要糟糕得多。
当然,如果只使用 user_id 和 username 来执行其他查询,那是一种加速,但值得吗?那么,真正的优势在哪里,以及适合这种数据库设计策略的兼容工作场景是什么?
后期编辑:在这篇文章的细节中,请假设一个完整的、唯一的实体,其属性在数量上没有变化(例如,汽车只有一种颜色,而不是两种,用户只有一个用户名/社交 sec 编号/入学编号/home address/email/etc.. 也就是说,我们处理的不是一对多关系,而是一对一、完全一致的实体描述。在上面的示例中,就是这种情况其中单个表已被“拆分”为与其拥有的非主键列一样多的表。