我应该将可选记录属性放在单独的表中吗?

and*_*ewb 6 database ms-access database-design ms-access-2007 normalization

我有一张约1,000条记录的表格.其中大约一半将使用包含某些特征的一组字段.大约有10个相关领​​域.另一半记录不需要填写这些信息.

该表是数据库的核心,将占用大部分操作.虽然只有大约1,000条记录,但并不多.

存储数据库的硬件既旧又慢(旋转硬盘而不是SSD ......)所以我希望有一个相当优化的结构来充分利用它.显然,由于空白字段而单独增加数据库的大小并不是一个主要问题,但如果它减慢了查询的速度,那么这并不好.

我想我应该描述一下设置.目前Access 2007客户端和Access后端,虽然后端将很快转移到SQL服务器.目前后端位于主服务器机架上,但当移动到SQL Server时,它将获得自己的旧服务器机架.

那么我应该创建一个单独的表来存储上述特征集,还是应该保留原样?

ane*_*oid 5

将可选字段放入一个单独的表然后使用联接的查询开销对大小或数据管理没有太大好处。特别是在您的示例中是1对1时。对于大小,可选字段为NULL对您影响不大。是的,对于何时应该开始移动内容,75%是一个很好的随机阈值,但是即使那样,您实际上也不会通过移动可选字段来规范任何内容(如果它们与记录是一对一的,那么您将始终与主要记录一起获取)。

值得注意的是:对于大多数数据库,在单个查询中获取大行要好于几个小型查询...以防万一您后来急于在单独的查询中获取第二个表中的可选数据。在Access 2007中,这可能不太重要。

并且,无论是否将这些可选字段都移出,都可以在where/ having/中使用这些字段的索引join