SQL Server 2008。
早上好,
如果有人可以提供他们的建议,我们将非常感激。
目前我正在寻找导入两个XML文件,捐赠金额和捐款制造商。
捐赠金额文件将包含金额字段和捐赠MakerID,捐赠制造商文件将包含名称字段和DonationMakerID。捐赠制作者将捐赠一定金额的金额归还金额文件。
我的问题是,我偶尔会收到捐赠金额文件,其捐赠者制作者ID与目前数据库中的任何捐赠者制作者无关,但可能与我将收到的捐赠制作者XML文件中的捐赠制作者ID有关。那天晚些时候。
现在,在收到Donation Maker文件之前,存储捐款金额信息的最佳方法是什么?我显然不会加载捐赠金额文件,直到我有一个匹配的捐赠MakerID,但我宁愿加载文件,当我得到它们。
理想情况下,我需要一个FK约束,该约束仅在Donation Maker表中已存在的ID的Donation Amount表中强制执行参照完整性...
我有一些想法,例如,DonationMakerID的dbo.DonationAmount和XMLDonationMakerID中的两列,其中DonationMakerID可以允许NULL。然后,当我收到Donation Amount文件时,我将DonationMakerID加载到XMLDonationMakerID字段中,如果maker表中有匹配的ID,我将其加载到Donation makerID列,否则我将其保留为NULL。然后,当我收到后续捐赠制作者XML文件时,我可以根据Donationmaker XML文件中的ID检查XMLDonationMakerID字段,如果找到与更新DonationMakerID匹配的字段。
希望一切都有道理。
非常感谢
答案 0 :(得分:1)
你能否
这样的东西应该有用(我希望!)并允许你从XML中插入数据。
答案 1 :(得分:1)
首先,您是否可以等到收到第二个文件并按正确的顺序处理它们?或者你可以让他们同时发送它们或首先发送捐赠者文件吗?修复计时问题是第一个,最好的选择。
如果无法做到这一点,请将坏记录移到单独的表中,这样就可以维护外键约束(不要去掉约束是非常重要的。) 然后在第二次导入后检查该表,并在正确的捐赠者进入后添加任何记录。无论您做什么,您都不希望将数据放入生产表中,直到相关数据与之相关,否则您的垃圾就会变得毫无意义数据库。为了做到这一点,摆脱必要的FK约束是未来数据完整性的其他问题的保证。