2NF数据库与空值数据库的效率

时间:2014-10-30 06:51:26

标签: database hibernate

我在之前开发的应用程序中构建了一些新表,我遇到了数据库的问题。具体来说,我的数据看起来像这样(第一列是父代码,其余的是子代,如果有意义的话):

abc-1  ab     NULL   NULL
abc-4  ab(1)  ab(3)  NULL
abe-2  ac(2)  ac(1)  ac                  **NOT NORMALIZED**
abe-3  ad(7)  NULL   NULL

(and so on...)   

可以这样构建它:

abc-1  ab
abc-4  ab(1)
abc-4  ab(3)
abe-2  ac(2)                             **NORMALIZED**
abe-2  ac(1)
abe-3  ad(7)

(and so on...effectively disallowing all NULL values)
然而,我在概念上磕磕绊绊的是哪一个更有效。我正在使用SQL服务器(Microsoft)和Java的Hibernate和JPA框架。最初我以为我会使用前一个选项并在后面的代码中“过滤掉”NULL值。一位同事建议我做后者并创建映射到唯一键的多个表。我理解这是从数据库角度来看的理想方式,但我想我会问社区是否有任何效率原因我应该避免前者支持后者。

附加信息: 我的表有多对多的关系,所以我认为这比我可能意识到的更复杂。作为一个更明确的例子,关系表看起来像这样:

abc-1   ab
abc-4   ab(1)
abc-4   ab(3)
abc-1   ab(1)

...etc...

因此,您可以看到“父级”列中abc-1可能会映射到两个不同的子级,一个子级(例如ab(1))可能会映射回两个不同的父级({{1}和abc-4)。除非我完全弄错了,否则这是多对多的关系。

0 个答案:

没有答案