我们应该总是组合一对一的表吗?
我有一个用户ID uid,一个包含基础知识的表:
uid, name, address, etc..
和另一个基本相同的表,在前一个用户表上使用外键
uid, stats, etc..
我应该把它们组合起来吗?什么时候才有意义?何时我不想?
答案 0 :(得分:6)
在Five Normal Forms for Relational Databases上查看此资源。在其中,您将找到一些指导,用于决定如何组合信息或将其拆分为表格。
简而言之,请遵循以下经验法则:
答案 1 :(得分:3)
将第二个表中的字段填写不太常见时,将这些表分开是有意义的,因此使用第二个表可以在不填充该信息的情况下每行保存那么多内存。 / p>
在您的示例中,如果只有少数用户会拥有“统计信息等”,那么将该信息保存在单独的表中可能是个好主意。如果没有这些信息,请不要为那些用户创建一行。
答案 2 :(得分:1)
一对一关系是由ER model
定义的事物。
这可以通过多种方式映射到关系模型,最广泛使用的是:
使用两个实体的属性创建一个表。适用于严格的1:1
关系。
为每个实体创建一个表,并在另一个链接表中引用它们,并在两个链接字段上都有UNIQUE
个约束。适用于(0-1):(0-1)
关系以及为关系本身添加属性。
在FOREIGN KEY
字段上使用UNIQUE
约束为每个实体创建一个表并引用另一个表。适用于1:(0-1)
关系。
性能问题也会影响这种关系的关系表示的选择。
您可能希望在我的博客中阅读这篇文章: