我有一个excel电子表格我将变成一个数据库来挖掘数据并构建一个交互式应用程序。大约有20列和80,000条记录。实际上,所有记录都有大约一半的列数据为空,但哪一列的数据对于每条记录都是随机的。
选项是:
使用每个列的表创建一个更规范化的数据库,并使用20个联接来查看所有数据。我认为好处是没有NULL值的数据库,所以大小会更小。其中一个主要缺点是从应用程序端更新每个表的代码更多。
使用一个包含所有列的表创建一个平面文件。我认为应用程序端更容易进行更新,但会导致表中有一个空数据空间的对接负载。
答案 0 :(得分:2)
我不明白为什么你认为更新标准化数据库更难而不是平面表。反过来也是如此。
考虑在客户和产品之间插入关系(基本上是订单)。你必须:
第一次怎么样?你怎么处理初始的空值?你修改你的选择忽略它们吗?如果您想要空值怎么办?
如果删除最后一个产品怎么办?您是否将其更改为更新并为几列设置空值?
加入一边,使用规范化表格是琐碎的设计。你支付因其表现而无关紧要,这才是真正的权衡。
答案 1 :(得分:1)
如果您要使用关系数据库,则应该规范化表格,如果没有其他内容,以便简化数据维护并确保您没有重复数据。
您可以调查使用document database存储而不是关系数据库,尽管它是not the only option。
答案 2 :(得分:1)
一般来说,规范化的数据库最终会更容易编写代码,因为SQl代码在设计规范化表时会被分解。
答案 3 :(得分:1)
不必对所有列进行标准化,因此您提供的两个选项之间存在中间立场。一个好的经验法则是,如果您的列具有在记录中重复重复的值,则可以将这些列标准化为一个或多个单独的表。将每一列放在自己的表中并加入它们几乎肯定会过度使用它。
答案 4 :(得分:-4)
不要太正常化。随着应用程序的增长,很难维护规范模型。存储很便宜。由于20年前有效的担忧,不要被愚弄编码头痛。除非你需要它,否则不需要去nosql。