1

SQL 服务器 2008。

早晨,

如果有人可以提供他们的建议,将不胜感激。

目前我正在寻找导入两个 XML 文件,捐赠金额和捐赠制造商。

Donation Amount 文件将包含 Amount 字段和 DonationMakerID,Donation Maker 文件将包含 Name 字段和 DonationMakerID。Donation Maker 会将一定数额的捐赠带回 Amount 文件中。

我的问题是我偶尔会收到一个 Donation Amount 文件,该文件的 Donation Maker ID 与当前数据库中的任何 Donation Maker 无关,但可能与我将在当天晚些时候收到的 Donation Maker XML 文件中的 Donation MakerID 相关.

现在,在我收到 Donation Maker 文件之前,存储捐赠金额信​​息的最佳方式是什么?在我有一个匹配的捐赠 MakerID 之前,我显然无法加载捐赠金额文件,但我宁愿在获得文件时加载文件。

理想情况下,我需要一个 FK 约束,该约束仅在 Donation Amount 表中对 Donation Maker 表中已经存在的 ID 强制执行参照完整性……

我有一些想法,例如 dbo.DonationAmount 的 DonationMakerID 和 XMLDonationMakerID 中的两列,其中 DonationMakerID 可以允许 NULL。然后,当我收到捐赠金额文件时,我将 DonationMakerID 加载到 XMLDonationMakerID 字段中,如果制造商表中有匹配的 ID,我将其加载到捐赠 makerID 列,否则我将其保留为 NULL。然后,当我收到后续的 DonationMaker XML 文件时,我可以对照 Donationmaker XML 文件中的 ID 检查 XMLDonationMakerID 字段,如果找到匹配更新 DonationMakerID 的字段。

希望这一切都说得通。

非常感谢

4

2 回答 2

1

首先,您能等到收到第二个文件并以正确的顺序处理它们吗?或者您可以让他们同时发送它们或先发送捐赠者文件吗?解决时间问题是第一,最好的选择。

如果这是不可能的,将坏记录移到一个单独的表中,这样您就可以维护外键约束(不要摆脱约束非常重要。)然后在第二次导入后检查该表并在之后添加任何记录正确的捐助者在。无论您做什么,您都不希望将数据放入生产表中,直到相关数据与它一起使用,否则您的数据库中将出现无意义的垃圾。为了做到这一点,摆脱必要的 FK 约束是对未来其他数据完整性问题的保证。

于 2010-10-26T20:16:58.357 回答
1

你能不能

  • 检测 DomainMakerID 何时不存在
  • 如果是这样:在您的 DomainMaker 表中添加一个新条目,并将其标记为“临时”或“临时”或其他
  • 获得具有该新 ID 的 DomainMaker 后,更新该行并删除“临时”标志

类似的东西应该可以工作(我希望!)并允许您从 XML 中插入数据。

于 2010-10-26T11:55:36.470 回答