我的系统正在使用第 3 方服务来处理数据,现在我必须从第 3 方调用 API 并将数据存储到我们的数据库中。请问在这种情况下,id 的最佳做法是什么?
比如我调用交易API,3rd返回的id是123456,我有2种方案,下面2种我应该选择哪种方案
- id = 123456
- id = 1(递增数),3rd_party_id = 123456
对于第一个解决方案,我只需要使用他们的 id 作为我的系统 id。
对于第二种解决方案,我需要将 id 创建为递增数字,并创建一个名为 3rd_party_id 的新列来存储第 3 方 ID。
在我看来,第一个解决方案已经足够好了,因为它们的 ID 是唯一的。但我想请教更多关于这个案例的想法。提前致谢!
最佳答案
答案是:视情况而定。但是你应该考虑什么呢?以下是一些注意事项。
第三方id是不是很绕的一长串?如果是这样,出于性能原因,您需要自己的 ID,因为整数对于外键引用更有效。
第三方 ID 是某种 PII(个人身份信息)吗?如果是这样,您可能想要屏蔽它,而内部 ID 是一个非常方便的解决方案。
您对实体的定义是否 100% 与第三方相关?如果不是,您可能会发现您想要合并或拆分现有 ID。如果是这种情况,那么内部 ID 就很方便了。
第三方 ID 是引用事物的“规范”方式吗?如果是这样,您可能想使用它。例如,我认为使用 ISO 国家代码作为国家 ID 是可以的。它们是标准的,很少改变。
第三方 id 是否会作为“事物”跨多个数据库使用?如果是这样,您可能希望将其保留为键,这样您就不会在多个数据库中激增相同的 ID。
这些只是一些需要考虑的事情。毫无疑问,其他人也是如此。
关于sql - 从另一个系统获取数据时选择 id 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66478831/