为什么论坛数据库不在第三NF?

时间:2012-04-19 16:04:26

标签: php mysql sql database forum

我正在看一些重要的论坛,如SMF论坛,PhpBB或VBulleting论坛,我意识到他们不在第三届FN。

他们有很多NULL fiels,例如,在SMF论坛中,成员行可以将所有这些列都设为NULL:

pm_ignore_list, messageLabels, personalText, websiteTitle, websiteUrl, location, ICQ, AIM, YIM, MSN, timeFormat, userTitle, notifyAnnouncements, secretQuestion, secretAnswer, validation_code, additionalGroups, smileySet

所以......让我们说18个字段在表的任何行中都可以为NULL。 那不是第三个NF ...

他们为什么这样做?我相信他们对BD有很多了解...... 谢谢。

2 个答案:

答案 0 :(得分:6)

非规范化的首要原因是性能,这是许多讨论论坛的臭名昭着的问题。

最初,SQL并不是为了轻松存储分层数据而设计的,并且有许多不太理想的模式设计试图解决这个限制。

答案 1 :(得分:1)

这些原因中的一个或多个可能适用。

  • 数据库根本没有“设计”;它逐渐积累了越来越多的列,因为任何工作的程序员决定添加一个。 (程序员通常只接受过数据库设计方面的最低限度培训。)

  • “设计”,例如它,是委员会决定的结果。 (见上文。)

  • 众所周知,“设计”不是最好的主意,但是为了让软件能够发布而实施。潜在的幻想通常是在下一个版本之前正确修复它。 (通常永远不会得到修复。)

  • 为了更快的SELECT性能,表被非规范化。但根据我的经验,SELECT速度通常会受到以下影响:a)过度使用ID号和b)误解归一化而不是高度正常化。

相关问题