最好的方式来存储这些数据?

最好的方式来存储这些数据?

问题描述:

我刚刚被分配到翻新一个旧网站,我将它从一些古老的系统移到了drupal。唯一的问题是它是一个房地产系统,大量的数据被存储。目前所有的信息都存储在一张表中,一个id表示房屋,其他所有信息都是键/值对。每个地产可能有243个密钥,系统中有23840个地产。正如你可以想象的那样,这个系统很慢并且很难查询。最好的方式来存储这些数据?

我不认为与243行的表是一个非常好的主意,并可能比目前的情况更糟糕。我已经做了一些调查,这里是我发现的:

  • 缺少数据并不表示0值,数据是从两个唯一的源/格式合并而来。涉及一些猜测。我无法控制数据的来源。
  • 有4个按键是共同的 所有财产,所有的值看起来像 一些常用搜索 并可以被索引
  • 有10项是在[90-100)%范围
    • 其中8个是谁在销售它的信息,它是地址。
    • 另外两个似乎与下面范围属于
  • 有80项是在[80-90)%范围
    • 这个范围似乎大多只是列出房型类型以及如何许多房子有(例如,卧室可能,浴室,家庭房第三等)
    • 这个范围还包括一些小的信息,如学区,地址上的一两个更多的数据。
  • 179个键是在[0-80)%的范围内包括各种关于房地产杂项信息
  • 键是不静态和一些可以由被添加或移除的意愿投入(虽然很少见)。

我最好的想法是一个混合的方法,创建一个表,存储重要的,共同的信息,并保持一个较小的键/值表。

你会如何储存这些信息?

创建relational model

你已经有了

  • 房地产

  • 卖家

  • 地址

  • 地产N - 1卖方

  • 房地产1--1地址

  • 卖家1--1地址

  • 地产1 - N的客房

对于其他misc数据(动态?)创建一个ID /键/值表

您需要查看实体关系模型。然而,如果你已经有了一个吸盘表,你应该检查维基百科上的五个标准化阶段。他们可以将吸盘表转换成一组好表。

好吧,从某种意义上说,你很幸运,数据库已经完成了很多确定需要为你存储哪些数据的工作。令人遗憾的是懒惰的程序员不想被打扰去完成他们的工作。

我会放在一起存储所有不同的键值的关系表(你可以组合一些在一起,我会在那里有重复的值,只是略有不同的名称),至少有20%的记录。你的大部分领域将允许空值。

我认为你是正确的,定义最常见的东西,然后使用从这里添加的少数几个关键值。或者如果你想为非标准添加一个XML字段或文本字段信息。如果它不是标准的,它有多大可能被查询?

设置表格时,不要让它们太宽。 YOu可能希望创建具有1-1关系的单独表格,而不是具有宽表格。由于数据库如何存储数据页面的某些技术规格,这可以有助于提高性能。 JUst确保将所有必需的东西放在主表中,而不是扩展的东西。