历史上对第四范式 (4NF) 的解释不必要地令人困惑

2024-12-07

文章探讨了关系数据库中第四范式 (4NF) 的解释及其历史渊源。作者认为,传统的 4NF 解释方式,即先展示一个三列的“组合”表设计,再将其“分解”成两个两列的 4NF 表,是不必要的且令人困惑的。文章指出,这种“组合”设计在实际中并不实用,开发者通常会直接设计成两个两列的表。作者认为,4NF 的核心在于使用两列的链接表来表示多对多关系,例如用 (developer_id, project_id) 来表示开发者和项目之间的关系。文章还解释了“多值依赖”的概念,认为它本质上就是一个 ID 列表,例如员工可掌握的语言列表。最后,作者呼吁教育者直接将 4NF 解释为独立的两列表,而跳过传统的“组合”设计和“分解”步骤。

阅读更多

无哨兵模式:一项思想实验

2024-07-20

本文探讨了在数据库设计中完全避免使用NULL和哨兵值的可行性。作者认为,传统的包含NULL和哨兵值的数据库设计会导致数据语义模糊,并增加查询复杂性。文章提出了“按属性分表”和“显式缺失数据原因”等方法,试图构建一个语义清晰、逻辑严谨的无哨兵模式数据库。

阅读更多