在数据库设计中何时需要使用一对一关系?

| 我们何时需要在数据库设计中使用一对一关系?我认为,如果两个表是一对一关系,则可以将它们合并为一个表。这是真的?     
已邀请:
         大型表的垂直分区可减少I / O和缓存需求-经常查询而不是很少查询的单独列。 当“ 0”太“贵”时,在生产系统中添加一列。 超类型/子类型模式。 垂直分区可受益于表(联接)消除-提供优化程序 支持它(再次减少I / O和缓存)。 锚模型-类似于4,但低至6NF。     
        有时,它对于表锁很有用。当您向数据库中添加一列时,整个表将被锁定,直到完全重写为止。当数据库有10万行时,这几乎没有影响。但是,如果您有100M行或1B行,那就完全不一样了... 避免占用过多空间的死行也很有用。如果您使用的是MVCC,并且您的某些列会定期被覆盖,那么偶尔将它们放在单独的表中是有意义的。可以说,自动抽真空最终会开始,但是为了节省硬盘驱动器的工作,在一个单独的表中清理一些int字段要比一整堆充满文本,varchar(n)的行更好,并且谁知道其他什么。 最后一个原因是ORM中滥用了“ 1”。例如,如果您要存储图像或博客文章/文章,则将blob / text字段存储在单独的表中可能是有意义的。因为每次由于某种原因而加载时,您的ORM都将加载整个行。当您只需要图像或帖子的URL时,最后要做的就是从数据库中提取整个二进制/文本。但是您的ORM会做到这一点...     
        是的,一般。 一个例外情况是,如果您想对一列子集不同地分配特权。 还认为只有当双方都需要时,这才是正确的。     
        一个原因是将经常访问的数据放在一个表中,而很少访问的数据放在另一个表中。它将运行得更快并节省一些内存。 但是,在我这样做之前,我必须使自己的手臂扭紧。     

要回复问题请先登录注册