【发布时间】:2011-08-15 09:09:59
【问题描述】:
我正在开发一个预测工作中足球比赛的系统。我有几个预先存在的数据库,每个数据库都包含大致相同的数据,尽管一些供应商提供的数据比其他供应商多。我的应用程序使用了一组核心字段,并且所有供应商都提供了这些字段:
homeTeamId、awayTeamId、fullTimeHomeGoals、fullTimeAwayGoals、homeShotsOnTarget、awayShotsOnTarget 等...
因为这些数据库来自不同的来源,所以字段名称会有所不同。此外,其中一些数据是主观的(对目标的射击的定义各不相同)。这意味着我需要知道匹配来自哪个供应商。也有重叠,因为几个供应商将拥有特定匹配的数据。
目前我们一次使用一个数据源,但我们将根据该供应商所涵盖的竞争一次使用两个或更多供应商(通过基于竞争进行选择,我们消除了重复匹配的问题)。
我的解决方案是使用 XML 来存储 fieldName 的映射。例如
<Schemas>
<Schema>
<SchemaName>VendorA</SchemaName>
<TableName>VendorA_MatchResults</TableName>
<FullTimeHomeGoals>homeFullTimeScore</FullTimeHomeGoals>
Etc...
</Schema>
</Schemas>
然后,每当我需要一个 sql 查询字段时,查看用户在作业配置 XML 中指定的供应商,并查找与该数据供应商相关的字段。当我们开始使用来自两个供应商的结果时,我计划使用一个视图并将其视为 XML 中的一个新供应商。
这一定是一个相当普遍的问题,但我在网上找不到任何讨论如何解决它的内容。我的直觉说,数据库应该能够在内部处理这个问题,也许有一个视图?
如果您有任何建议或想法,我将不胜感激。
作为背景,我正在使用 MySql 和 Java 来开发这个应用程序。
【问题讨论】:
-
听起来像是ETL 的问题。