我们什么时候需要在数据库设计中使用一对一的关系?在我看来,如果两张表是一对一的关系,可以合并成一张表。这是真的?
问问题
1209 次
4 回答
1
有时它对表锁很有用。当您将一列添加到数据库时,整个表将被锁定,直到它被完全重写。当您的数据库有 100k 行时,这几乎没有影响。但如果你有 100M 行或 1B 行,那就完全不同了……
避免占用太多空间的死行也很有用。如果您使用MVCC并且您的某些列经常被覆盖,则有时将它们放在单独的表中是有意义的。可以说,自动清理最终会起作用,但为了节省硬盘驱动器的工作,最好清理一个单独的表中的几个 int 字段,而不是一大堆充满文本的整行,varchar(n) 和谁知道还有什么。
最后一个原因是select *
在 ORM 中的滥用。例如,如果您要存储图像或博客文章/文章,则将 blob/文本字段存储在单独的表中可能是有意义的。因为每次由于某种原因或其他原因被加载时,您的 ORM 都会加载整行。当您只需要图像或帖子的 URL 时,您最不想做的就是从数据库中提取整个二进制/文本;然而你的 ORM 会做到这一点......
于 2011-06-15T02:31:51.887 回答
0
一般来说是的。
如果您想以不同的方式将权限分配给列的子集,则可能是一个例外。
还要考虑这只有在双方都需要时才成立。
于 2011-06-15T02:23:31.457 回答
0
一个原因是将经常访问的数据放在一个表中,而将极少访问的数据放在另一个表中。它会运行得更快并节省一些内存。
但在我这样做之前,我必须让我的手臂用力扭动。
于 2011-06-15T02:25:19.583 回答