我并不是真的想压缩数据库。这更像是一个逻辑问题。是否有任何算法将数据表包含大量列和重复数据,并找到一种方法将其组织到许多具有ID的表中,使得总共尽可能少的单元格,并且这些表可以是然后加入查询以复制原始查询。
我不关心任何特定的数据库引擎或语言。我只想看看是否有合理的方法。如果您要发布代码,我喜欢C#和SQL,但您可以使用任何代码。
答案 0 :(得分:1)
我不知道任何自动算法,但您真正需要做的是对数据库进行大规模规范化。这意味着要查看您的实际功能依赖关系,并在任何有意义的地方将其分解。
尝试在计算机程序中执行此操作的问题在于,并不总是清楚您当前存储的数据集是否代表所有可能的问题情况。您不仅可以查看值的数量。将布尔分解成自己的表是没有意义的,因为它们只有两个值,例如,这只是冰山一角。
我认为,在这一点上,没有任何事情可以打败那些耐心,手工制作的正常化。这是手工做的事情。任何可能的计算机算法都会使事情变得混乱,或者让你定义关系,以便你自己也可以这样做。