我应该克隆特定的第三方数据,还是创建一个通用表来处理多个第三方?

时间:2018-04-08 15:48:39

标签: database database-design

我们说我有一个在线商店,我整合第三方服务来交易付款。

如果第三方服务提供API通知以接收状态,并且这些通知采用一致的结构化格式,例如:

{
    "status": "foo",
    "status_text": "bar",
    "amount": 1000,
    // ...
}

我在数据库中创建了一个表来表示这些数据,例如:

CREATE TABLE specific_third_party_notifications (
    status VARCHAR(191) NOT NULL,
    status_text VARCHAR(191) NOT NULL,
    amount VARCHAR(191) NOT NULL,
    -- etc...
);

如果我的应用程序中有一个与该数据相关的表,这通常会被视为处理关系的好方法,或者我应该创建一个更通用的表,它不会绑定到任何第三个方?

例如:

CREATE TABLE acme_notifications (
    status VARCHAR(191) NOT NULL,
    status_text VARCHAR(191) NOT NULL,
    amount VARCHAR(191) NOT NULL,
    -- etc...
);

我问,因为我现在处于一种情况,我已经创建了专门用于表示第三方数据的表,但我的其他一个表与所有这些表相关。

我不确定将我的应用程序与第三方服务数据紧密联系在一起是否是个好主意,或者我是否应该创建一个更通用的表,如第二个表示例,以便我和#39;我没有与第三方服务紧密耦合,如果我决定有一天使用另一个或自己做,那么我的架构根本不需要改变,我能够只需删除第三方表,添加新的第三方表等。

我在通用表中看到的唯一问题是我们无法灵活地使用适合所有第三方服务的列等等。

会喜欢这方面的一些见解。感谢。

1 个答案:

答案 0 :(得分:0)

  1. 我建议首先使用日志表记录您从第三方收到的响应。
  2. 您可以拥有一个临时表,将收到的数据解析为所需的格式,此表应该是独立的,不应该链接到任何应用表
  3. 第三个表格将包含所需的列,并且可以与app表格紧密集成