数据集成实践关键字段处理

时间:2017-12-05 01:39:25

标签: sql-server

寻求解决客户要求的想法和建议。我们正在一个现有的数据库中工作,该数据库包含主键但没有外键,它们不会发生变化。

  • 请求是我们整合来自外部来源的数据 可能在数据中包含重复值。

    数据来自记录管理系统,因此密钥id值将是 随着每条记录的增加而增加。

    关键字段大部分都是十进制(22,0)。

    这是每日ETL负载的相对少量的数据,所以 表现并不是最重要的问题。

前缀,后缀或使用其他策略创建可追溯到源的唯一键值是否更好?

例如,如果最大现有值是123456789,那么为外部站点A加前缀100000,对外部站点B加上110000等等是一个好主意吗?作为一个团队,我们已经打了几个想法,似乎有专业人士和我们能想到的一切。没有在网上看到太多的指导。

提前感谢任何想法!

2 个答案:

答案 0 :(得分:1)

通常最好有一个单独的字段跟踪数据来自A或B,它是主键的一部分还是使用代理身份/自动的辅助索引/约束增量字段作为主键。

除此之外,这使得以后更容易执行表分区或条件索引等操作。

答案 1 :(得分:0)

恕我直言,这是一种设计反模式。您将内部数据库密钥归为特殊含义。馊主意。此外,如果你曾经达到10,000限制,你就完全塞满了。我知道你认为你不会......但是你可能会发生灾难。

正常模式(再次根据我的经验和意见)是添加SRC_SystemSRC_Key字段,并在其上添加唯一索引/约束。这些用于跟踪记录的来源。

除了这两个新字段外,您还可以在此表中使用原始主键,这是系统使用的内部密钥。

此设计允许将任意数量的具有任意键范围的系统添加到您的系统中。

唯一的挑战就是解决问题

  1. 如何合并 - 即两个系统是否有代表同一事物的记录

  2. 如果需要,如何添加其他参考数据