寻求解决客户要求的想法和建议。我们正在一个现有的数据库中工作,该数据库包含主键但没有外键,它们不会发生变化。
请求是我们整合来自外部来源的数据 可能在数据中包含重复值。
数据来自记录管理系统,因此密钥id值将是 随着每条记录的增加而增加。
关键字段大部分都是十进制(22,0)。
这是每日ETL负载的相对少量的数据,所以 表现并不是最重要的问题。
前缀,后缀或使用其他策略创建可追溯到源的唯一键值是否更好?
例如,如果最大现有值是123456789,那么为外部站点A加前缀100000,对外部站点B加上110000等等是一个好主意吗?作为一个团队,我们已经打了几个想法,似乎有专业人士和我们能想到的一切。没有在网上看到太多的指导。
提前感谢任何想法!
答案 0 :(得分:1)
通常最好有一个单独的字段跟踪数据来自A或B,它是主键的一部分还是使用代理身份/自动的辅助索引/约束增量字段作为主键。
除此之外,这使得以后更容易执行表分区或条件索引等操作。
答案 1 :(得分:0)
恕我直言,这是一种设计反模式。您将内部数据库密钥归为特殊含义。馊主意。此外,如果你曾经达到10,000限制,你就完全塞满了。我知道你认为你不会......但是你可能会发生灾难。
正常模式(再次根据我的经验和意见)是添加SRC_System
和SRC_Key
字段,并在其上添加唯一索引/约束。这些用于跟踪记录的来源。
除了这两个新字段外,您还可以在此表中使用原始主键,这是系统使用的内部密钥。
此设计允许将任意数量的具有任意键范围的系统添加到您的系统中。
唯一的挑战就是解决问题
如何合并 - 即两个系统是否有代表同一事物的记录
如果需要,如何添加其他参考数据