寻找一种使用内部数据库表扩展外部数据的好方法

时间:2010-08-06 03:35:34

标签: database-design primary-key software-design

我有一个应用程序从第三方接收大部分数据。这些数据集之一是交易列表。我无法写入此服务,但我想在该数据中添加更多信息,以便在我自己的应用程序中使用。我打算用扩展信息的SQL表来做到这一点。

问题是第三方数据不会从他们那边返回记录标识符。这意味着我不能使用第三方主键作为我的附加数据的主键。如果可以,我显然只是使用该密钥并存储扩展数据。

例如,返回的数据是:

-----------------------------------------------------------------------------
| Client Id | Transaction Date | Transaction Amount | Description | Balance |
-----------------------------------------------------------------------------

此表中的客户端ID不是唯一的,但是,可以保证其余信息的整体性是唯一的。

我想添加其他数据。例如:

-------------------------------------------------
| ... | Transaction Category | Hide Transaction |
-------------------------------------------------

我已经玩弄了使用主键的想法,这是所有其他信息的散列,但据我所知,查询该数据的效率非常低。例如,我可能想在屏幕上显示100个交易。这将需要从第三方检索数据,散列每条记录,并使用这100个密钥之一查询我的本地数据库中的所有数据。

有人有任何建议吗?

1 个答案:

答案 0 :(得分:1)

我想你回答了自己的问题:

  

保证剩下的   信息,在其中   总体而言,是独一无二的。

只需将这些字段设为复合primary key即可。你的WHERE条款会比正常情况复杂一些,但这是权衡利弊。

如果您想让查询更简单一些,您还可以创建一个可以使用复合键的代理键。