0

When should one use one to one relationships? When should you add new fields and when should you separate them into a new table?

It seems to me that you'd use it whenever you're grouping fields and/or that group tends to be optional. Yes?

I'm trying to create the tables for an object but grouping/separating everything would require me about 20 joins and some even 4 levels deep.

Am I doing something wrong? How can I improve?

4

1 回答 1

6

首先,我强烈推荐阅读有关范式

规范化的关系数据库非常有用,正确地做到这一点是 Hibernate 等工具存在的原因 - 以帮助管理对象表示为关系映射和对象作为程序实体之间的差异。

任何具有一对一映射的东西都应该在同一个表中。一个人只有一个名字,一个姓氏。这些在逻辑上应该在同一个表中。没有必要引用名称表——特别是因为很少有关于名称的额外数据可以存储。显然,这并不总是正确的(词源数据库可能希望完全这样做),但对于大多数用途,您并不关心名称的来源 - 实际上您想要的只是名称。

因此,请考虑被表示的对象。一个人有一些单一的数据点,以及一些一对多的关系(例如,他们住过的地址)。一对多和多对多几乎总是需要一个单独的表(或两个,多对多)。遵循这两个准则,您可以非常快速地获得规范化的数据库。

请注意,应尽可能避免使用可选字段。通常情况下,有一个单独的表来保存该字段并引用回原始表。尽量保持你的桌子精简。如果一个字段不太可能有什么东西,它可能应该是它自己的表中的一行。许多这样的属性暗示了一个“属性”表,它可以保存特定类型的任意可选属性(即,应用于“人”)。

于 2012-04-10T23:30:56.670 回答