是否规范化 - 一对多或多列

时间:2016-03-31 20:40:24

标签: database database-design normalization denormalization

我无法决定是否对数据库的这一部分进行规范化或非规范化:

我列出了约50种在给定样本点存在或不存在的物种。这50个将来可能会扩展到75个,但不会更多。此数据库的主要用途是生成报告。因此,如果在给定区域内有10个站点,那么平均问题将是:我们在多少个站点中检测到物种?

我应该创建50个t / f位列:

网站,a,b,c,d,e ... n

1,t,f,t,f,t,t ....

2,f,t,t,f,t,f .....

或者我应该创建一对多表:

1 a

1 c ...

2 b

2 c ...

我知道趋势是规范化,70列对其他用户来说可能令人生畏,但我真的很喜欢从非规范化版本中提取数据。在这种情况下,一个人真的更好吗?

1 个答案:

答案 0 :(得分:0)

50柱解决方案的优势:

  • 访问给定样本点上的所有物种将是有效的。

一对多解决方案的优点:

  • 只需输入包含物种编号的新记录,即可在不重新设计数据库的情况下增加物种数量。

  • 访问包含特定物种的所有样本点将比50列设计更容易。

在这几十年的交易中,我一般都对这些要求持谨慎态度,并且未来可能会扩展到75,但不会更多"。但是如果物种的增加并不经常发生,并且如果你有时间停止你的申请并在那种情况下重组你的桌子,那么这个论点就不会太强大。但是,我也要警惕仅按物种查询数据的限制。在许多情况下,最终会出现相反方向的需要。