mysql - 标准化数据(1NF)仍然有意义吗? (表中有空字段有什么问题?)

标签 mysql database database-design normalization denormalization

考虑到磁盘空间很便宜,normalize data (1NF) 有意义吗?而不是将其全部存储在一个地方以加快查询速度?

背景:

  1. 我们有一个用户表 - 事件组织者和事件参与者
  2. 两者都有一些共同的领域,但组织者有更多的领域
  3. 现场参加者的数量远多于组织者

问题:(在很久以前)我们将现有的单独表格组合起来,并将它们制成类似于以下的表格:

   Table_Users
   UID, Name, Email, CommonField1, OrgSpecificField1, OrgSpecificField2

现在,我们只有一张公用表供这两种类型的用户使用。对于与会者来说,最后两个字段为 NULL。

将上述结构与:

   Table_Users
   UID, Name, Email, CommonField1

   Table_UsersOrganizers
   UID, OrgSpecificField1, OrgSpecificField2

这需要加入。现在,从站点速度的角度来看,公共(public)集成表和分离表哪个检索速度更快?请记住,我们将不断获取这些记录。

最佳答案

标准化涉及数据完整性 - 准确地表示您尝试建模的现实。它与磁盘空间的成本无关。目标是至少达到 Boyce-Codd/第五范式,除非并且直到您找到一个令人信服的理由不这样做。

关于mysql - 标准化数据(1NF)仍然有意义吗? (表中有空字段有什么问题?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542831/

相关文章:

mysql - 在 Rails 应用程序中设置 MySQL

mysql - 允许用户删除拥有的前缀数据库

mysql - 数据库设计 : save different details of payment (credit or check)

php - 如何在symfony中加密数据库

MySQL:使用下一个用户记录的值更新用户记录

php - 使用 Laravel 和 AngularJS 从数据库获取用户特定信息

sql - SQL Master Detail 场景中主键的选择

mysql - MySQL数据库小型向中型过渡的解决方案

MySQL条件选择语句?

php - 如何从 MySQL 中获取 PHP 对象