Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 数据库设计:处理键的合并/分割_Database Design - Fatal编程技术网

Database design 数据库设计:处理键的合并/分割

Database design 数据库设计:处理键的合并/分割,database-design,Database Design,我正试图为州政府设计一个数据仓库,在那里,个人数据可能来自多个机构。这些人可能有也可能没有SSN或税务ID——想想那些有权享受医疗补助的无家可归者,或者来自惩教部的关于被监禁者的数据。当数据到达时,系统将为个人创建一个代理密钥,并将其与任何可用的识别信息(DOB、性别、姓名)相关联。然而,随着时间的推移,可能会发现使用来自两个不同部门的数据创建的两个代理键实际上代表同一个人;或者一个代理键实际上可能代表双胞胎。在这种情况下,密钥可能需要合并或分割——可能需要追溯 这里显然要考虑(bi)时间方面,

我正试图为州政府设计一个数据仓库,在那里,个人数据可能来自多个机构。这些人可能有也可能没有SSN或税务ID——想想那些有权享受医疗补助的无家可归者,或者来自惩教部的关于被监禁者的数据。当数据到达时,系统将为个人创建一个代理密钥,并将其与任何可用的识别信息(DOB、性别、姓名)相关联。然而,随着时间的推移,可能会发现使用来自两个不同部门的数据创建的两个代理键实际上代表同一个人;或者一个代理键实际上可能代表双胞胎。在这种情况下,密钥可能需要合并或分割——可能需要追溯

这里显然要考虑(bi)时间方面,因为在事务时间t1记录的有效时间v1的信息可能不同于在事务时间t2记录的有效时间v1的信息

我当前的设计将识别数据加载到一个图中,其中的个体被识别为节点。当可靠的数据链接两个节点时,将创建边。该图是使用事务t1中可用的数据构建的。将提取连接的零部件并为其指定代理关键点。其思想是在事务时间t2创建一个类似的图,然后将代理键的演化从t1映射到t2。这就是我需要引入合并/拆分问题的地方

我并不是在寻找一个来自如此严肃的群体的精确解决方案,而是针对这种情况的文献或出版的设计。顺便说一句,如果一个人在公司合并、分拆以及不同机构在不同时间记录不同交易时处理财务数据,同样的情况会重复


谢谢。

业务方面的人员将不得不手动对分配的密钥进行重复数据消除(简单)或不合并(困难得多)决策。如果您想将其合并到初始设计中,可以这样做,但这样会使db更难使用

现在,我为一个国家机构工作,报告参与服务项目的人的数据,从报告的角度来看,我们考虑一个人一个人,即使是真正的2个人,需要被解散,或者一个具有第二、不同人格的人也被认为是第二个人。 换言之,试着找到一种方法来接受你无法控制的大量错误


如果每个时间点上的所有东西都被认为是准确的,那么要让一个大型复杂系统正常工作就足够困难了

业务方面的人员将不得不手动对分配的密钥进行重复数据消除(简单)或不合并(困难得多)决策。如果您想将其合并到初始设计中,可以这样做,但这样会使db更难使用

现在,我为一个国家机构工作,报告参与服务项目的人的数据,从报告的角度来看,我们考虑一个人一个人,即使是真正的2个人,需要被解散,或者一个具有第二、不同人格的人也被认为是第二个人。 换言之,试着找到一种方法来接受你无法控制的大量错误


如果每个时间点上的所有东西都被认为是准确的,那么要让一个大型复杂系统正常工作就足够困难了

我在做一个类似的项目。追溯合并并非不可能——只是困难,而且非常非常昂贵。我通过设置一个UI来处理它,用户可以在其中声明X'的所有记录实际上都是X的,作为夜间ETL过程的一部分的批处理作业可以扫描数据,对事实表执行适当的更新。是的,它很昂贵,但是因为它到处都有索引,我希望它不是完全残酷的,并且不会有外键问题,因为X和X的记录都存在


但是,如果不详细分析谁的记录是谁的,我不知道如何将X的记录拆分为X和X′。您可能不再拥有足够详细的数据(我知道在我的情况下我没有)来确定哪些记录属于哪个版本的X,而不必重新加载所有的X和X的基础数据,您可能有,也可能没有。

我正在从事一个类似的项目。追溯合并并非不可能——只是困难,而且非常非常昂贵。我通过设置一个UI来处理它,用户可以在其中声明X'的所有记录实际上都是X的,作为夜间ETL过程的一部分的批处理作业可以扫描数据,对事实表执行适当的更新。是的,它很昂贵,但是因为它到处都有索引,我希望它不是完全残酷的,并且不会有外键问题,因为X和X的记录都存在

但是,如果不详细分析谁的记录是谁的,我不知道如何将X的记录拆分为X和X′。您可能不再拥有足够详细的数据(我知道在我的情况下我没有)来确定哪些记录将属于哪个版本的X,而无需重新加载所有的X和X的基本数据(您可能有也可能没有)