如何处理包含相同数据的多个模式

时间:2011-08-15 09:09:59

标签: java mysql database

我正在研究一种预测足球比赛的系统。我有几个预先存在的数据库,每个数据库包含大致相同的数据,尽管有些供应商提供的数据比其他供应商更多。我有一个核心的字段集,我的应用程序使用它,所有供应商提供:

homeTeamId,awayTeamId,fullTimeHomeGoals,fullTimeAwayGoals,homeShotsOnTarget,awayShotsOnTarget等...

由于这些数据库来自不同的来源,因此字段名称各不相同。此外一些数据也是主观的(目标镜头的定义各不相同)。这意味着我需要知道匹配来自哪个供应商。还有重叠,因为有几家供应商会提供特定匹配的数据。

目前我们一次使用一个数据源,但我们将根据该供应商未来的竞争情况,一次使用两个或更多个供应商(根据竞争选择我们删除重复匹配的问题)。

我的解决方案是使用XML来存储fieldName的映射。 E.g

<Schemas>
    <Schema>
        <SchemaName>VendorA</SchemaName>
        <TableName>VendorA_MatchResults</TableName>
        <FullTimeHomeGoals>homeFullTimeScore</FullTimeHomeGoals>
        Etc...
    </Schema>
</Schemas>

然后,每当我需要一个字段进行SQL查询时,请查看用户在作业配置XML中指定的供应商,并查找与该数据供应商相关的字段。当我们使用来自两家供应商的结果时,我计划使用一个视图并将其视为XML中的新供应商。

这一定是一个相当普遍的问题,但我找不到任何在线讨论如何处理它的问题。我的直觉本能说DB应该能够在内部处理这个问题,也许还有一个视图?

我很感激任何建议或想法。

对于后台,我正在使用MySql和Java开发此应用程序。

1 个答案:

答案 0 :(得分:0)

我认为你所做的很好。

您应该创建一个为每个架构存储这些配置的类。将这些配置存储在Map中。确保这些条目及其配置来自配置文件,就像您一样。

我会在这里推荐Spring,让您的生活更轻松。每次要添加新供应商时,只需编辑此配置文件,然后重新启动应用程序。