【发布时间】:2010-04-29 18:51:58
【问题描述】:
一对一的关系通常可以存储在同一个表中。是否有理由不将它们存储在同一张表中?
【问题讨论】:
标签: sql mysql one-to-one schema-design database-design
一对一的关系通常可以存储在同一个表中。是否有理由不将它们存储在同一张表中?
【问题讨论】:
标签: sql mysql one-to-one schema-design database-design
列的数量和类型。表中列的大小有限制。见here。每行最多 8,060 字节。
非常大的表也会影响性能,并且很难优化和索引。
这与保持概念上不同的数据不同,彼此分开。例如,一个国家和货币具有 1 对 1 的关系(说明性示例,我知道并非总是如此)。我仍然不会让他们在一起。
【讨论】:
create table big_row (a varchar(5000),b varchar(5000),c varchar(5000),d varchar(5000),e varchar(5000),f varchar(5000),g varchar(5000), h varchar(max));insert into big_row values (replicate('A',5000),replicate('B',5000),replicate('C',5000),replicate('D',5000),replicate('E',5000),replicate('F',5000),replicate('G',5000),replicate('H',10000)) 您的链接适用于 SQL Server,无论如何我认为问题是关于 MySql。但是,您对大表的看法(我假设您的意思是宽度,而不是行)是正确的。
您将在http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.html 下找到一些关于何时创建一对一关系有用的信息
最重要的是:
可能需要的关键指标 因为一对一的关系是 包含以下字段的表 仅用于特定的子集 该表中的记录。
【讨论】:
我这样做是为了防止锁定/阻塞,将读取的重列放在一个表中,将更新重的列放在另一个表中,就像一个魅力。大量的大型更新事务正在减慢大量读取速度。
【讨论】:
一到零或一的关系很常见,并且从可选关系到强制关系——http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.html 中给出的示例就是这种关系,而不是一对一关系。类型/子类型关系可以这样实现。
当每一个都代表一个明确的、有意义的实体时,就会发生一对一的关系,在不同的上下文中,它可能处于某种不同的关系中,并且对需求的微小变化可能会改变关系的基数。哪个链接到哪个链接是任意的,因此最好选择一个作为可选并将一转换为零或一。
【讨论】: