我应该将联系信息放在一个单独的表中吗?

时间:2010-07-15 08:07:16

标签: mysql database-design street-address

我正在计划一个数据库,其中有几个表包含大量地址信息,城市,邮政编码,电子邮件地址,电话号码,传真号码等等(约11列值),一张表是一个组织表,包含(最多)2个地址(他们实际应该使用的合法联系人和联系人),以及每个用户都有与他相关的相同信息。

我们将不得不在这些地址上运行一些地理定位的东西(比如距离另一个地址的X公里范围内的每个地址)。

我有很多选项,每个选项都有自己的问题:

  1. 我可以将所有信息都放在每个表中,但是这会使得列表数量非常大的表格存在索引问题,如果我更改了地址格式,则需要一段时间来修复它。
  2. 我可以将所有信息放在一个数组中并对其进行序列化,然后将序列化信息存储在一个字段中,与前一个方法存在相同的问题,列数少一些,通过mysql查询可用性更低
  3. 我可以创建一个包含地址信息的单独表格,并通过

    将其链接到其他表格
    1. 在用户和组织表中放置一个address_id列
    2. 在地址表中放入related_id和related_table列
    3. 这应该保持更整洁的东西,但它可能会产生一些无法预料的过度加入或其他问题。

      我个人认为解决方案3.2是最好的,但我对此并不太自信,所以我要求提出意见。

1 个答案:

答案 0 :(得分:0)

选项2肯定是出局的,因为它会将过滤逻辑放入代码中,而不是让DBMS处理它们。

选项1或3取决于您的需要。

如果您需要快速访问所有数据,并且您通常访问这两个地址以及组织信息,那么您可能会考虑选项1.但如果表格也变得很难查询(即很慢)在mysql中很重要。

如果正确索引表,

选项3是好的。

相关问题