如何在数据库中构建多个标识数据

时间:2012-07-06 09:40:04

标签: database schema

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

他们从银行,MFI,Saccos,公用事业公司等处收到的数据带有各种类型的ID。例如。打开拥有国民身份证和护照的银行账户是完全合法的。方案一是我头疼的是,Customer1将使用护照在bank1中获取信用额度(现在称之为贷款),然后转到bank2并使用 NationalID <获取另一笔贷款/ strong>和Bank3的 MilitaryID 。最终,当这些数据来自银行到局时,它将被视为3个不同的人,而我们知道它实际上是1个人。在这一点上,作为一个局,我们无能为力。

然而,目前的一条出路是使用Govt注册表,该注册表提供了一个包含护照和IDS的存储库。因此,一旦我们查询此信息并获得响应,如何在数据库中显示Passport_X与NationalID_Y和MilitaryNumber_Z相关?

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

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

这只是冰山一角。我们有地址,电话号码等问题。

您是否可以了解我如何构建数据库以确保我们捕获所有银行的所有数据并提供有关个人的最准确信息?更好的是,您是否有使用此类设置的经验?

感谢。

1 个答案:

答案 0 :(得分:2)

  

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

微不足道的。

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

您需要将标识与其中的数据分开,因此您可以使用它的替换版本,可能包含origin和timestampt。您可能需要完全支持版本控制并将不同的身份彼此联系起来,包括可能通过算法生成“主身份”,使用您的数据的“官方”版本(即合并)。

细节很复杂 - 大多数情况下,你要做出很多妥协,而不是牺牲性能,所以最后是一个专家。有一个原因是有人作为敏感的数据库设计师或建筑师,有20年以上的经验,在你可能不知道的情况下(应用程序明智)找到最佳解决方案。

  

更好的是,您是否有使用此类设置的经验?

是。尝试财务信息。库存符号/供稿/定义不是必需品兼容的,因您获得它而异。任何非平凡的设置都有不同的数据源,可能会显示相同的项目略有不同,有时会出错。不同的名称,有时不同的价格(例如:ES,CME组,每点50美元,但在TT修复它是5 - 弥补,价格乘以10,所以1000.25的instad你得到10002.5)。这是合并的同一行,它就是STINKS。

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