使用统一值

时间:2015-07-17 18:46:42

标签: mysql sql database database-design database-schema

我的情况是数据来自多个我无法控制的来源。 例如:

  • 来源1:位置=“德克萨斯州奥斯汀”
  • 来源2:位置=“Austin,Tx”
  • 来源3:位置=“奥斯汀”

在数据库中,我希望所有这些对应于我的位置表中的单行,以便于与其他表连接。

目前,位置表似乎是

| id | source_id | source_value | value      |  
+----+-----------+--------------+------------+
| ## | 1         | Austin Texas | Austin, Tx |
| ## | 2         | Austin, Tx   | Austin, Tx |
| ## | 3         | Austin       | Austin, Tx |

如果我们有一个类似tbl_user_location的表

| user_id | location_id |

如果用户在奥斯汀,我们需要在用户位置表中添加三行,以确保涵盖所有数据源。

虽然这有效,但它相当刺激并且感觉很脆弱。

我考虑的另一个想法是有两个表 - 一个位置表和一个指向“正确”位置的别名表。
这似乎可行,但对于从多个数据源获取数据的所有表,它会使表的数量加倍。

另一个想法是拥有一个像

这样的大型别名表
| id | table_id     | source_id | source_value | unified_row_id  |
+----+--------------+-----------+--------------+-----------------+
| ## | loc_tbl_id   | 1         | Austin Texas | loc_austin_id   |
| ## | loc_tbl_id   | 2         | Austin, Tx   | loc_austin_id   |
| ## | other_tbl_id | 1         | Some Value   | proper_value_id |

有没有正确的方法来解决这个问题?如果没有,哪个解决方案似乎最易维护,稳定,快速?

0 个答案:

没有答案