2

我正在为信用局设计一个数据库,并正在寻求一些指导。

他们从银行、小额信贷机构、Saccos、公用事业公司等收到的数据带有各种类型的 ID。例如,使用国民身份证和护照开立银行账户是完全合法的。让我头疼的场景是 Customer1 将使用护照在 bank1 中获得信贷额度(现在称为贷款) ,然后去 bank2 并使用他们的NationalID和 Bank3 使用他们的MilitaryID获得另一笔贷款。最终,当这些数据从银行传到局时,它会被视为 3 个不同的人,而我们知道它实际上是 1 个人。在这一点上,作为一个局,我们无能为力。

但是,(目前)一种出路是使用政府注册中心,它提供了一个存储护照和 IDS 的存储库。因此,一旦我们查询此信息并获得响应,我如何在数据库中显示 Passport_X 与 NationalID_Y 和 MilitaryNumber_Z 相关?

同样,可以在各种订单状态中捕获一个人的姓名。Bank1 可以做 FName、LName、OName,而 Bank3 只能做 LName、FName。我如何存储这些名称?

即使针对一种 ID 类型(例如 NationalID),您也经常会发现拼写错误的名称或缺少名称。因此,我们数据库中的一个 NationalID 最终可能有大约 6 个不同的名字,因为这个人的名字在他进行交易的各个银行中捕获的不同。

而这只是冰山一角。我们在地址、电话号码等方面存在问题。

您能否了解我将如何构建我的数据库以确保我们从所有银行获取所有数据并提供有关个人的最准确信息?更好的是,你有这种设置的经验吗?

谢谢。

4

1 回答 1

2

如何在数据库中显示 Passport_X 与 NationalID_Y 和 MilitaryNumber_Z 相关?

琐碎的。

您拥有一个身份表,如果身份链接到另一个身份,则该表具有 AlternateId 字段。使用您创建的第一个身份作为主身份。任何替代方案都会有 AlternateId 指向它。

您需要将身份与其中的数据分开,这样您就可以拥有它的替代版本,可能带有来源和时间戳。您需要 oto 可能完全支持版本控制并将不同的身份相互绑定作为替代方案,包括可能通过算法与您的数据的“官方”版本(即合并)生成“主身份”。

细节很复杂 - 大多数情况下,您必须在不影响性能的情况下做出很多妥协,所以最后请聘请专家。考虑到您甚至可能不知道的限制(应用程序方面),有 20 多年经验寻找最佳解决方案的资深数据库设计师或架构师是有原因的。

更好的是,你有这种设置的经验吗?

是的。尝试财务信息。股票代码/提要/定义不一定兼容,并且因您获得它而异。任何重要的设置都有不同的数据馈送,这些数据馈送可能会显示相同的项目略有不同,有时是错误的。不同的名称,有时不同的价格(例如:ES,CME 集团,是每点 50 美元,但在 TT Fix 上是 5 - 弥补,价格乘以 10,因此 1000.25 得到 10002.5)。这是同一条整合线,而且很臭。

大量代码,大量适当的数据库设计,重做六次以获得适当的性能。可悲的是,这很棘手。

于 2012-07-06T09:47:20.240 回答