小编典典

您将如何实现非常广泛的“功能”?

sql

假设您要对具有许多属性(2400多个)的实体进行建模,该实体远大于给定数据库引擎(例如,约1000个SQL
Server)的物理限制。除了域/候选键之外,一无所知这些数据点的相对重要性(哪些是热点/最经常使用的),您将如何实现呢?

A)EAV。(嘘…本机的关系工具抛出了窗口。)

B)直走。第一个表有一个主键和1000列,直到上限。下一个表是1000,外键到第一个。最后一个表是剩余的400,也是外键。

C)跨ceil( n / limit )表均匀地条纹。每个表都有偶数列,外键指向第一个表。800、800、800。

D)还有别的…

又为什么呢?

编辑:这更多是一个哲学/一般性的问题,与任何特定的限制或引擎无关。

编辑^ 2:正如许多人指出的那样,数据可能未标准化。通常,当时的业务限制使得进行深入研究成为不可能。


阅读 143

收藏
2021-04-22

共1个答案

小编典典

我的解决方案:进一步调查。具体来说,确定该表是否真正被规范化(在2400列处,这似乎不太可能)。

如果不是,请进行重组,直到将其完全规范化为止(此时,每个表可能少于1000列)。

如果已经完全归一化,则为每个属性建立(尽可能)人口的近似频率。将最常出现的属性放在实体的“主”表上,对不那么频繁填充的属性使用2或3个其他表。(尝试将出现频率作为确定哪些字段应放在哪些表上的标准。)

仅将EAV视为人口极少的属性(最好完全不考虑)。

2021-04-22