【发布时间】:2011-09-17 06:45:45
【问题描述】:
因此,例如,我有 City 列。 95% 的 City 值为 NULL。制作像 city_names(Id PK, City) 这样的表并将 City 替换为新列 City_id (FK 引用 city_names(id))是个好主意吗?这是我对此的看法。它们基于一般的计算思想。请纠正我,这不适用于 RDMS。
第一种方式:O(n) 存储 O(n) 批量操作 O(1) 随机访问
第二种方式:O(n) 存储 O(n * logn) 批量操作,由于对索引结构的 n 个请求(例如,B 树)O(lon n) 随机访问
这是全图。我有 1M 行表。它长大了。像City一样有80列。他们几乎都归零了。但是,它们是社区可编辑的。所以我必须在其中提供全文搜索、快速编辑时间和复杂查询(针对高级用户或机器人)。在某些将来,根本不会有 NULL。所以我必须使用绞盘方案来编辑阶段和最终形状的桌子?
如果重要的话,我会使用 postgres\mysql。
【问题讨论】:
-
我不只要求其中一种解决方案。您可以建议任何技术。
-
这叫做规范化,是的,这是个好主意...
-
@Mitch Wheat 但我的性能损失很大。此外,会有太多的连接。这里出了点问题,我觉得它被过度设计了。
标签: mysql sql database postgresql database-design