database - 如何在数据库中构建多个身份数据

标签 database schema

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

他们从银行、小额信贷机构、Saccos、公用事业公司等收到的数据带有各种类型的 ID。例如。使用国民身份证和护照开设银行账户是完全合法的。令我头疼的一个场景是,客户 1 将使用护照在银行 1 获取信贷额度(现在称之为贷款),然后前往银行 2 使用他们的国民 ID< 获取另一笔贷款/strong> 和 Bank3 及其 MilitaryID。最终,当这些数据从银行传到局时,它会被视为 3 个不同的人,而我们知道实际上是 1 个人。事已至此,我们局也无能为力。

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

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

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

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

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

谢谢。

最佳答案

how do I show in the DB that Passport_X is related to NationalID_Y and MilitaryNumber_Z?

微不足道。

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

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

细节很复杂 - 大多数情况下你必须在不影响性能的情况下做出很多妥协,所以最后聘请一位专家。有一个原因是,作为敏感的数据库设计师或架构师,他们拥有 20 多年的经验,可以在您可能不知道的限制(应用程序方面)的情况下寻找最佳解决方案。

Better yet, do you have experience with this type of setup?

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

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

关于database - 如何在数据库中构建多个身份数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11359702/

相关文章:

php - 如果为NULL,如何将值插入表中? - MySql

sql - 使用 Korma 插入数据库行

sql - 为什么 SQL Server 为初始数据库角色创建模式?

mongodb - ReactJS - 如何从 MongoDB Date.now 更改日期格式

java - 无法根据 xsd 架构验证 xml 文档(找不到元素 'replyMessage' 的声明)

mysql - 创建包含多个表的 View ?

SQL:使用 NULL 值与默认值

c# - SQL Server DB 到 Entity Framework Code First 的转换器

r - 使用 r 修改带连字符的数据

ruby-on-rails - 文章表模式