Php 为什么论坛数据库不在第三个NF中?
我看了一些重要的论坛,如SMF论坛、PhpBB或VBulleting论坛,我意识到它们不在第三个FN中 他们有许多空域,例如,在SMF论坛中,一个成员行可以将所有这些列设置为空:Php 为什么论坛数据库不在第三个NF中?,php,mysql,sql,database,forum,Php,Mysql,Sql,Database,Forum,我看了一些重要的论坛,如SMF论坛、PhpBB或VBulleting论坛,我意识到它们不在第三个FN中 他们有许多空域,例如,在SMF论坛中,一个成员行可以将所有这些列设置为空: pm\u忽略列表、消息标签、个人文本、网站标题、网站URL、位置、ICQ、目标、YIM、MSN、timeFormat、userTitle、NotifyAnnounces、secretQuestion、secretAnswer、验证代码、附加组、笑脸集 所以。。。假设18个字段可以在表的任何一行中为空。 那不是第三个NF
pm\u忽略列表、消息标签、个人文本、网站标题、网站URL、位置、ICQ、目标、
YIM、MSN、timeFormat、userTitle、NotifyAnnounces、secretQuestion、secretAnswer、验证代码、附加组、笑脸集
所以。。。假设18个字段可以在表的任何一行中为空。
那不是第三个NF
他们为什么这么做?我相信他们知道很多关于BD。。。
谢谢 非规范化的首要原因是性能,这是许多论坛中臭名昭著的问题
最初,SQL的设计不是为了方便地存储分层数据,有许多不太理想的模式设计试图绕过这一限制。这些原因中的一个或多个可能适用
- 数据库根本不是“设计的”;它逐渐积累了越来越多的专栏,因为任何从事它工作的程序员都决定添加一个专栏。(程序员通常只接受过最低限度的数据库设计培训。)
- 这种“设计”是委员会决定的结果。(见上文。)
- 众所周知,“设计”并不是最好的想法,但它的实现是为了让软件上市。潜在的幻想通常是在下一个版本之前正确地修复它。(通常情况下,这些问题永远不会得到解决。)
- 该表进行了非规范化,以提高SELECT性能。然而,根据我的经验,SELECT speed通常更多地受到a)ID号的过度使用和b)标准化的误解的影响,而不是受到高度标准化的影响