【发布时间】:2012-04-19 16:04:25
【问题描述】:
我正在查看一些重要的论坛,例如 SMF 论坛、PhpBB 或 VBulleting 论坛,我意识到它们不在 3rd FN 中。
他们有许多 NULL 字段,例如,在 SMF 论坛中,成员行可以将所有这些列都设置为 NULL:
pm_ignore_list, messageLabels, personalText, websiteTitle, websiteUrl, location, ICQ, AIM,YIM, MSN, timeFormat, userTitle, notifyAnnouncements, secretQuestion, secretAnswer, validation_code, additionalGroups, smileySet
所以...假设 18 个字段在表的任何 ROW 中都可以为 NULL。 那不是第三个NF...
他们为什么这样做?我相信他们对BD很了解...... 谢谢。
【问题讨论】:
-
出于什么原因他们需要在这些空白字段中插入一些内容?
-
3NF 要求非关键字段中没有空值? Per Bill Kent:“[每个] 非密钥 [属性] 必须提供关于密钥、整个密钥的事实,并且只提供密钥。” null 在此处执行此操作。
-
@JonathanM:1NF 不需要空值,这取决于您接受谁的 1NF 定义。
-
@Hajo,这些字段被认为是“可选”的。成员可以将它们设置为 NULL 或带有一些数据。 JonathanM, 3rd NF 在许多情况下避免空字段,这就是其中之一。如果你这样做,每个可选字段都会有很多表。
标签: php mysql sql database forum