示例:具有可选DateOfBirth字段的Employee表可以规范化为两个表,一个表专门用于保存具有已知出生日期的员工的DateOfBirth字段。但是这对于DateOfBirth表中缺少行没有任何语义含义,并且当您查询员工时,您几乎肯定需要将这些缺失的行外部连接回null。
答案 0 :(得分:1)
你在谈论两个完全不同的概念。一个与标准化有关,一个与查询结果有关。在查询结果中具有大量空值是完全可接受的,并且通常是可取的,以表示缺失值。表列中包含大量空值表示设计问题。通常,如果找到包含具有大量空值的列的表,则表将被非规范化。这可能适用于报告数据库或仓库类型数据库。但是,对于生产数据,您通常希望避免这种情况。