CN100440215C - 用于管理相互相关的数据对象的方法和系统 - Google Patents
用于管理相互相关的数据对象的方法和系统 Download PDFInfo
- Publication number
- CN100440215C CN100440215C CNB2005101248081A CN200510124808A CN100440215C CN 100440215 C CN100440215 C CN 100440215C CN B2005101248081 A CNB2005101248081 A CN B2005101248081A CN 200510124808 A CN200510124808 A CN 200510124808A CN 100440215 C CN100440215 C CN 100440215C
- Authority
- CN
- China
- Prior art keywords
- data object
- given
- related data
- modification
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/955—Object-oriented
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种制造方法、系统和产品,用于管理相互相关的数据对象,更具体而言,用于管理对于多个相互相关的数据对象的至少一个的修改。一个实施例提供了一种计算机实现的方法,用于管理对于多个相互相关的数据对象的至少一个的修改。所述方法包括:接收对于具有至少一个相关数据对象的给定数据对象的修改的请求。所述方法还包括:访问相关性目录,它包含对于所述相互相关的数据对象的每个的至少一个记录,所述多个相互相关的数据对象包括所述至少一个相关数据对象。每个记录描述了在至少两个相互相关的数据对象之间的相互相关性。对于所述至少一个相关数据对象的记录描述了在给定数据对象和所述至少一个相关数据对象之间的相互相关性。使用所访问的相关性目录,识别在给定数据对象和所述至少一个相关数据对象之间的相互相关性。基于如果执行所请求的修改则所识别的相互相关性就提供了可能的不希望有的结果,执行预定的动作。
Description
技术领域
本发明一般地涉及管理相互相关(interdependent)的数据对象,更具体地说,涉及管理对于多个相互相关的数据对象的至少一个的修改。
背景技术
数据库是计算机化的信息存储和检索系统。最普遍的数据库类型是关系数据库,即其中定义数据以便可以以多种不同方式来重新组织和访问它的列表数据库。分布数据库是可以在网络中的不同点之间分布或复制的数据库。面向对象的程序数据库是与在对象类和子类中定义的数据一致的数据库。
无论具体结构如何,数据库管理系统(DBMS)可以被构造为支持用于请求实体(例如应用、操作系统或终端用户)的多种不同类型的操作。这样的操作可以被配置为检索、增加、修改和删除被DBMS存储和管理的信息。标准的数据库访问方法使用高级查询语言——诸如结构化查询语言(SQL)——来支持这些操作。术语“查询”命名了一组使得执行用于处理来自所存储的数据库中的数据的操作的命令。例如,SQL支持四种类型的查询操作,即SELECT(选择)、INSERT(插入)、UPDATE(更新)和DELETE(删除)。SELECT操作从数据库中检索数据,INSERT操作向数据库中增加数据,UPDATE操作修改在数据库中的数据,DELETE操作从数据库中去除数据。
不幸的是,使用SQL(和其他查询语言)来产生查询可能要求详细了解基础(underlying)数据库的可能复杂的物理布局和隐含的字段名的解释。对于某些应用,为了便利查询建立过程,可以利用一种抽象模型,它实际上将基础数据库的物理布局的一些复杂性向用户隐藏。所述抽象模型可以包括具有可识别的名称的逻辑字段,它们映射到基础数据库的对应的物理字段。可以基于所述逻辑字段产生包含条件的“抽象”查询。在发出时,抽象查询的逻辑字段可以被映射到对应的物理字段上,以创建物理的或“具体的”的查询。对于一些应用,可以保存抽象查询,使得允许随后的用户可以重新使用所保存的抽象查询而不必产生他们自己的抽象查询。在共同拥有的共同待审的申请10/083,075中详细说明了数据抽象和抽象查询的概念,所述申请是在2002年2月26日被提交的,其题目是“通过数据库模式和查询抽象的应用可移值性和可扩展性”,其全部内容通过参照而被合并于此。
抽象查询经常包含条件元素(例如在对应的SQL语句中的WHERE子句),其中,在具有比较运算符的表达式中使用逻辑字段。如在相关申请10/083,075中所述,逻辑字段通常被映射到物理数据库中的特定物理字段。例如,如果所述物理数据库被实现为关系数据库,则特定的逻辑字段将被映射到关系表中的特定列。
使用按照‘075申请的框架的数据抽象模型,可以根据所述框架来构造抽象查询,而不用考虑基础物理数据的构成。例如,假定在医院中的用户要确定已经进行了血红蛋白测试(HgBA1c)并且其结果值大于10%的病人的姓和名。为此,用户可以指定下面的抽象查询:
FIND LAST NAME,FIRST NAME
WHERE HGBA1C-RESULT>10
其中,“LAST NAME”、“FIRST NAME”和“HGBA1C-RESULT”是由数据抽象模型定义的相应逻辑字段的逻辑字段名。在逻辑字段映射到物理字段的同时,用户根据数据抽象模型而构造抽象查询,而不需要对于物理数据有任何了解。
在诸如‘075申请中的一个框架中,可以持久地存储在给定环境中使用的数据对象。例如,在上述的示例中,可以持久地存储数据抽象模型和抽象查询,所述数据抽象模型定义至少逻辑字段“LAST NAME”、“FIRST NAME”和“HGBA1C-RESULT”,并且使用这些逻辑字段的抽象查询可以被永久地存储。持久地存储对象产生的一个问题是对于其中用户操作的框架环境进行改变的影响。例如,给定的用户可以修改或删除数据抽象模型的逻辑字段,或者重新定义抽象查询的查询条件。但是,这样的改变可能影响一个或多个持久存储的对象。例如,假定在给定的示例中,用户从数据抽象模型中删除逻辑字段“HGBA1C-RESULT”。当示例性的抽象查询(在上示出)使用这个逻辑字段来作为条件字段时,抽象查询不再能够被加载和执行,因此变得无效。
因此,需要一种有效的技术,用于跟踪和协调对于相互相关的对象的修改。
发明内容
本发明一般地涉及一种制造方法、系统和产品,用于管理相互相关的数据对象,更具体而言,用于管理对于多个相互相关的数据对象的至少一个的修改。
一个实施例提供了一种计算机实现的方法,用于管理对于多个相互相关的数据对象的至少一个的修改。所述方法包括:接收对于具有至少一个相关数据对象的给定数据对象的修改的请求。所述方法还包括:访问一个相关性目录,所述相关性目录包含所述多个相互相关的数据对象的每个的至少一个记录,所述多个相互相关的数据对象包括所述至少一个相关数据对象。每个记录描述了在至少两个相互相关的数据对象之间的相互相关性。所述关于至少一个相关数据对象的记录描述了在给定数据对象和所述至少一个相关数据对象之间的相互相关性。使用所访问的相关性目录,识别在给定数据对象和所述至少一个相关数据对象之间的相互相关性。基于如果执行所请求的修改则所识别的相互相关性就提供可能的不希望有的结果,执行预定的动作。
另一个实施例提供了一种计算机实现的方法,用于管理对于数据抽象模型的修改,所述数据抽象模型抽象地描述数据库中的数据,并且定义多个逻辑字段。所述方法包括:从所述数据抽象模型中接收对于修改给定的逻辑字段的请求。所述给定的逻辑字段定义数据库中的特定的一组物理数据的抽象表示,并且具有至少一个相关数据对象。所述方法还包括:访问一个相关性目录,所述相关性目录包含关于多个逻辑字段和多个相互相关的对象的每个的至少一个记录,所述相互相关的对象包括所述至少一个相关数据对象。每个记录描述了在至少两个相互相关的数据对象之间的相互相关性。所述关于至少一个相关数据对象的记录描述了在给定逻辑字段和所述至少一个相关数据对象之间的相互相关性。使用所访问的相关性目录,识别在给定的逻辑字段和所述至少一个相关数据对象之间的相互相关性。基于如果执行所请求的修改则所识别的相互相关性就提供可能的不希望有的结果,执行预定的动作。
另一个实施例提供了一种计算机可读介质,所述计算机可读介质包含程序,所述程序当被处理器执行时,执行用于管理对于多个相互相关的数据对象的至少一个的修改的操作。所述操作包括:接收对于具有至少一个相关数据对象的给定数据对象的修改的请求。所述操作还包括:访问一个相关性目录,所述相关性目录包含至少一个对于所述多个相互相关的数据对象的每个的记录,所述相互相关的数据对象包括所述至少一个相关数据对象。每个记录描述了在至少两个相互相关的数据对象之间的相互相关性。关于所述至少一个相关数据对象的记录描述了在给定数据对象和所述至少一个相关数据对象之间的相互相关性。使用所访问的相关性目录,识别在给定的数据对象和所述至少一个相关数据对象之间的相互相关性。基于如果执行所请求的修改则所识别的相互相关性提供可能的不希望有的结果,执行预定的动作。
另一个实施例提供了一种计算机可读介质,计算机可读介质包含程序,所述程序当被处理器执行时,执行用于管理对于数据抽象模型的修改的操作,所述数据抽象模型抽象地描述数据库中的数据,并且定义多个逻辑字段。所述操作包括:从所述数据抽象模型中接收对于修改给定的逻辑字段的请求。所述给定的逻辑字段定义数据库中的特定的一组物理数据的抽象表示,并且具有至少一个相关数据对象。所述操作还包括:访问一个相关性目录,所述相关性目录包含关于多个逻辑字段和多个相互相关的对象的每个的至少一个记录,所述相互相关的对象包括所述至少一个相关数据对象。每个记录描述了在至少两个相互相关的数据对象之间的相互相关性。所述关于至少一个相关数据对象的记录描述了在给定逻辑字段和所述至少一个相关数据对象之间的相互相关性。使用所访问的相关性目录,识别在给定的逻辑字段和所述至少一个相关数据对象之间的相互相关性。基于如果执行所请求的修改则所识别的相互相关性就提供可能的不希望有的结果,执行预定的动作。
另一个实施例提供了一种系统,所述系统包括多个相互相关的数据对象、相关性目录和对象修改管理部件。所述多个相互相关的数据对象包括具有至少一个相关数据对象的给定数据对象。所述相关性目录包含对于所述多个相互相关的数据对象的每个的至少一个记录,所述相互相关的数据对象包括所述至少一个相关数据对象。每个记录描述了在至少两个相互相关的数据对象之间的相互相关性。所述关于至少一个相关数据对象的记录描述了在给定数据对象和所述至少一个相关数据对象之间的相互相关性。所述对象修改管理部件被配置为接收对于修改给定数据对象的请求,并且使用所述相关性目录来识别在给定的数据对象和所述至少一个相关数据对象之间的相互相关性。所述对象修改管理部件还被配置为基于如果执行所请求的修改则所识别的相互相关性就提供可能的不希望有的结果,执行预定的动作。
附图说明
为了使得获得本发明的上述特点、优点和目的,并且可以详细地了解它们,通过参照在附图中图解的其实施例,可以进行上面简单汇总的本发明的更具体的说明。
但是,应当注意,附图仅仅图解了本发明的典型实施例,因此不被认为是其范围的限制,因为本发明允许其他等同而有效的实施例。
图1是按照本发明的被示例性利用的计算机系统;
图2(包括图2A至B)是在一个实施例中的软件部件的关系视图;
图3A图解了一个实施例,其中,多个数据抽象模型共存于单个应用空间中;
图3B图解了一个实施例,其中,单个数据抽象模型的多个实例共存于单个的应用空间中;
图3C图解了具有多个数据抽象模型的环境;
图4至5是图解运行时间部件的操作的流程图;
图6是一个实施例中的软件部件的关系视图;
图7图解了一个实施例中的用户界面的截屏图;以及
图8是图解一个实施例中用于管理对于数据抽象模型的修改的方法的流程图。
具体实施方式
导言
本发明一般地涉及一种制造系统、方法和产品,用于管理相互相关的数据对象,更具体而言,用于管理对于多个相互相关的数据对象的至少一个的修改。多个相互相关的数据对象包括给定的数据对象,所述给定的数据对象具有与一个或多个相关数据对象的相互相关性,所述一个或多个相关数据对象也被包括在多个相互相关的数据对象中。举例而言,所述给定的数据对象是来自诸如表列的数据库表的数据字段,且对应的相关数据对象是使用该数据字段作为结果和/或条件字段的查询。
按照一个方面,接收用于修改给定的数据对象的请求。例如,接收用于下述目的请求:(i)删除给定的数据对象;(ii)重新命名给定的数据对象;或(iii)改变给定的数据对象的一个或多个属性。按照另一个方面,响应于给定用户的角色的改变或对于从第一到第二用户的改变,发生给定的数据对象的修改,每个具有不同的相关联的授权。例如,允许给定的用户以第一角色(例如具有完全的访问特权的管理员)访问给定数据对象,同时向具有第二角色(例如具有受限的访问特权的研究者)的所述给定用户隐藏所述给定的数据对象。类似地,第一用户可以具有访问给定的数据对象的授权,而第二用户的授权防止第二用户对于给定数据对象的访问,按照一个方面,隐藏给定的数据对象或禁止对于给定数据对象的访问可以被当作对于删除给定数据对象的修改来对待。
在一个实施例中,如果修改给定的数据对象,则在给定的数据对象和相关数据对象(或多个相关数据对象)之间的相互相关性就提供可能的不希望有的结果。例如,给定的数据对象的修改可能影响相关数据对象(或多个相关数据对象),使得相关数据对象(或多个相关数据对象)响应于修改的执行而变得无效。在一个方面,可以通过执行预定的动作(或多个动作)来管理修改和可能的不希望有的结果。举例而言,如果接收到删除给定的数据对象的请求,则可以删除所述给定的数据对象,并且可以禁止对于相关数据对象(或多个相关数据对象)的访问,以便避免执行无效的数据对象。为此,使用相关性目录来从多个相互相关的数据对象中识别相关数据对象。所述相关性目录包含多个相互相关的数据对象的每个的至少一个记录。每个记录描述在至少两个相互相关的数据对象之间的相互相关性。而且,关于相关数据对象(或多个相关数据对象)的给定记录描述了在给定的数据对象和相关数据对象(或多个相关数据对象)之间的相互相关性。因此,通过从相关表中识别给定的记录,可以识别相关数据对象(或多个相关数据对象)。在识别了相关数据对象(或多个相关数据对象)后,可以执行预定的动作(或多个动作)。
在一个实施例中,给定的数据对象是抽象地描述数据库中的数据的数据抽象模型的给定的逻辑字段。给定的逻辑字段定义了在数据库中的特定一组物理数据的抽象表示。更具体而言,数据抽象模型定义了多个逻辑字段,每个被映射到数据库中的数据的一个或多个物理实体。所述数据抽象模型被适配来便于将抽象查询的逻辑字段转换为与在数据库中的数据的物理表示一致的形式。因此,对应的相关数据对象可以是包含作为结果和/或条件字段的给定逻辑字段的抽象查询。
应当注意,下面可以参照基于对应的数据抽象模型而被创建的抽象查询来举例说明本发明的实施例。但是,可以使用其他类型的查询和数据库表示——诸如针对在具有基础关系或XML数据表示的数据库中的数据而发出的SQL或XML查询——来实现其他实施例。于是,本发明不限于包括抽象查询和数据抽象模型的特定的查询环境,而是将各种不同的查询环境和实现方式广泛地考虑在内。更一般而言,本发明适用于任何相互相关的数据对象,由此术语“相互相关的数据对象”包括具有至少单向(one-way)相关性的任何数据对象。例如,如果数据对象“A”具有对于数据对象“B”的相关性,则数据对象“A”和“B”被称为相互相关,而不论是否数据对象“B”也具有对于数据对象“A”的相关。因此,将按照本发明的实施例的、使用适当技术的任何相互相关的数据对象的管理广泛地考虑在内。
优选实施例
下面,将参照本发明的实施例。但是,应当明白,本发明不限于特定描述的实施例。相反,下述特征和元素的任何组合——不论是否涉及不同的实施例——被考虑来实现和实践本发明。而且,在各种实施例中,本发明提供了相对于现有技术的多个优点。但是,虽然本发明的实施例可以获得相对于其他可能的解决方案和/或现有技术的优点,然而是否通过给定的实施例来获得特定优点不是本发明的限制。因此,下面的方面、特点、实施例和优点仅仅是说明性的,除非明确地给出,它们不被当作所附的权利要求的元素或限制。
本发明的一个实施例被实现为用于计算机系统——诸如图1所示和下述的计算机系统110——的程序产品。所述程序产品的程序(或多个程序)定义了实施例(包括在此所述的方法)的功能,并且可以被包含在多种信号承载媒体上。示例性的信号承载媒体包括但是不限于:(i)永久存储在非可写的存储媒体(例如,在诸如由CD-ROM驱动器可读的CD-ROM盘的计算机内的只读存储器)上的信息;(ii)在可写入存储媒体(例如在盘驱动器或硬盘驱动器内的软盘)上存储的可改变的信息;或(iii)通过通信介质而被传送到计算机的信息,所述通信介质诸如通过计算机或电话网络,包括无线通信。后一实施例具体包括从因特网和其他网络下载的信息。这样的信号承载媒体当承载指导本发明的功能的计算机可读指令时,表示本发明的实施例。
通常,被执行以实现本发明的实施例的例程可以是操作系统的一部分或是特定的应用、部件、程序、模块、对象或指令序列。本发明的软件通常包括多个指令,它们被本地计算机转换为机器可读的格式和因此可执行的指令。而且,程序包括变量和数据结构,它们或者位于程序本地,或者位于存储器或存储设备上。另外,可以根据在本发明的特定实施例中实现的应用来识别以下所述的各种程序。但是,应当理解,仅仅为了方便而使用下面的任何特定术语,因此,本发明应当不限于在由这样的术语标识的和/或隐含的任何特定应用中的唯一使用。
示例性的数据处理环境
现在参照图1,示出了计算环境100。通常,分布环境100包括计算机系统110和多个联网设备146。计算机系统110可以表示任何类型的计算机、计算机系统或其他可编程的电子设备,其中包括客户计算机、服务器计算机、便携式计算机、嵌入式控制器、基于PC的服务器、微型计算机、中型计算机、大型计算机和被适配来支持本发明的制造方法、装置和产品的其他计算机。在一个实施例中,计算机系统110是可以从纽约州Armonk的IBM公司获得的eServer计算机。
示例性的,计算机系统110包括联网系统。但是,计算机系统110也可以包括单独的设备。在任何情况下,可以明白图1仅仅是计算机系统的一种配置。本发明的实施例可以被应用到任何可比拟的配置中,而不论计算机系统110是否是复杂的多用户装置、单用户工作站还是不具有其自己的非易失性存储器的网络应用。
本发明的实施例也可以被实践在分布计算环境中,其中,通过经由通信网络链接的多个远程处理设备来执行任务。在分布计算环境中,程序模块可以位于本地和远程存储器存储设备中。在这个方面,计算机系统110和/或一个或多个联网设备146可以是执行很少处理或不执行处理的瘦客户机。
计算机系统110可以包括多个操作员和外围系统,如下所示:例如,通过被可操作地连接到直接访问存储设备138的海量存储接口137、通过被可操作地连接到显示器142的视频接口140和通过被可操作地连接到多个联网设备146的网络接口144。显示器142可以是用于输出可视信息的任何视频输入设备。
计算机系统110被示出包括至少一个处理器112,它经由总线114从主存储器116获得指令和数据。处理器112可以是被适配来支持本发明的方法的任何处理器,主存储器116是足够大来保存必需的程序和数据结构的任何存储器。主存储器116可以是一个存储设备或存储设备的组合,包括随机存取存储器、非易失性或备份存储器(例如可编程或快闪存储器、只读存储器等)。另外,存储器116可以被考虑为包括物理地位于计算机系统110中的其他位置的存储器,例如,被用作虚拟存储器或存储在海量存储设备(例如直接访问存储设备138)上或存储在经由总线114耦接到计算机系统110的另一个计算机上的任何存储容量。
存储器116还包括一个或多个应用120和一个抽象模型接口130。应用120和抽象模型接口130是软件产品,它们包括在各种时间驻留在计算机系统110中的各种存储器和存储设备中的多个指令。当由在计算机系统110中的一个或多个处理器112读取和执行时,所述应用120和抽象模型接口130使得计算机系统110执行对于执行体现本发明的各个方面的步骤或元素来说必要的步骤。
应用120(更一般而言,任何请求实体,包括操作系统118)被配置为向数据库139发送查询。示例性的,数据库139被示出为在存储器138中的数据库管理系统(DBMS)154的一部分。数据库139表示数据的任何集合,而不论数据的具体物理表示如何。数据的物理表示定义数据的组织模式。作为说明,可以按照关系模式(由SQL查询可访问的)或按照XML模式(由XML查询可访问的)来组织数据库139。但是,本发明不限于特定的模式,并且考虑到对当前未知的模式的扩展。在此使用的术语“模式”一般指的是数据的特定布置。
按照在每个应用120中包括的应用查询规范122来定义由应用120发出的查询。由应用120发出的查询可以被预先定义(例如被作为应用120的一部分而被硬编码),或者可以响应于输入(例如用户输入)而被产生。在任何一种情况下,可以使用由抽象模型接口130定义的逻辑字段来构成查询(在此称为“抽象查询”)。逻辑字段定义作为独立的数据项或例如数据库表形式的数据结构的数据的抽象视图。具体上,由抽象模型接口130的数据抽象模型部件132来定义在抽象查询中使用的逻辑字段。
在一个实施例中,可以修改数据抽象模型部件132和/或其逻辑字段。对于相关数据对象,即,使用数据抽象模型部件132或基于数据抽象模型部件132而被建立的数据对象,这样的修改可能带来可能的不希望有的结果。例如,给定的抽象查询可以使用给定的逻辑字段来作为结果和/或条件字段。如果修改给定的逻辑字段,则给定的抽象查询可以响应于给定的逻辑字段的修改(或多个修改)而变得无效。通过对象修改管理部件150来管理对于给定的逻辑字段的修改(或多个修改)和对于诸如给定的抽象查询的相关数据对象(或多个相关数据对象)的结果。对象修改管理部件150被示例性地示出为抽象模型接口130的一部分。但是,将各种其他的实现方式广泛地考虑在内。例如,对象修改管理部件150也可以被实现为DBMS 154的一部分。下面参照图6至8来进一步说明对象修改管理部件150的操作。
在一个实施例中,在作为永久数据对象136的数据库139中存储抽象查询(称为“保存的查询”),以允许其重新使用。因此,抽象查询可以在任何时间被检索,并且针对任何适当的数据源——例如针对数据库139——而被执行。
通过运行时间部件134来对数据库139执行抽象查询,所述运行时间部件134首先将抽象查询转换为具体的查询,所述具体的查询具有与在数据库139中的数据的物理表示一致的形式。下面参照图2至5来进一步说明运行时间部件134的操作。
环境的逻辑/运行时间视图
图2A至B示出了本发明的部件的示例性的关系视图200。请求实体(例如图1的应用120之一)发出由所述请求实体的相应应用查询规范122定义的查询202。结果查询202在此一般被称为“抽象查询”,因为是按照抽象(即逻辑)字段而不是直接引用在DBMS 154中的基础物理数据实体来组成所述查询。结果,可以定义与所使用的具体基础数据表示无关的抽象查询。在一个实施例中,应用查询规范122可以包括用于数据选择的标准(选择标准204)和根据选择标准204而要返回的字段的明确说明(返回数据说明206)。
如上所述,通过数据抽象模型部件132来定义由应用查询规范122指定并且用于构成抽象查询202的逻辑字段。通常,数据抽象模型部件132暴露了作为可以在由应用120发出的查询(例如抽象查询202)内使用的一组逻辑字段的信息,以指定用于数据选择的标准和指定从查询操作返回的结果数据的形式。逻辑字段被定义为与在对应的数据库(例如图1的数据库139)中使用的基础数据表示无关,由此允许形成松散地耦接到基础数据表示上的查询。
在一个实施例中,数据抽象模型部件132包括多个字段说明(specification)2081、2082、2083、2084、2085(举例示出5个),它们被统称为字段说明208。具体上,对于构成抽象查询可用的每个逻辑字段提供一个字段说明。每个字段说明包含逻辑字段名2101、2102、2103、2104、2105(统称为字段名210)和相关联的访问方法2121、2122、2123、2124、2125(统称为访问方法212)。所述访问方法将所述逻辑字段名与数据库(例如图1的数据库139)中的特定物理数据表示2141、2142、...、214N相关联(映射)。示例性的,示出了两个数据表示:XML数据表示2141和关系数据表示2142。但是,物理数据表示214N指示的是考虑了任何其他已知的或未知的数据表示。在一个实施例中,单个数据抽象模型部件132包含对于两个或更多的物理数据表示214的字段说明(具有相关联的访问方法)。在一个替代的实施例中,为每个独立的物理数据表示214提供不同的单个数据抽象模型部件132。
根据要被支持的逻辑字段的不同类型的数量来考虑任何数量的访问方法。在一个实施例中,提供了用于简单字段、过滤字段和组合字段的访问方法。字段说明2081、2082和2085分别例示了简单字段访问方法2121、2122和2125。简单字段被直接地映射到在基础物理数据表示中的特定实体(例如被映射到给定的数据库表和列的字段)上。示例性的,在图2B中所示的简单字段访问方法2121将逻辑字段名2101(“FirstName”)映射到在名称为“contact”的表中的名称为“f_name”的列。字段说明2083例示了过滤字段的访问方法2123。过滤字段识别相关联的物理实体,并且提供用于定义在物理数据表示内的项目的特定子集的过滤器。在图2B中提供了一个示例,其中,过滤字段访问方法2123将逻辑字段名2103(“AnyTownLastName”)映射到在名称为“contact”的表中的名称为“l_name”的列中的物理实体上,并且定义了用于在“Anytown(任何城镇)”的城市中的个体的过滤器。过滤字段的另一个示例是纽约ZIP(邮政编码)代码字段,它映射到ZIP代码的物理表示上,并且将数据仅仅限制为对于纽约州定义的那些ZIP代码。字段说明2084例示了组合字段访问方法2124。组合访问方法使用所提供的表达式作为访问方法定义的一部分来从一个或多个物理字段中计算逻辑字段。以这种方式,可以计算在基础数据表示中不存在的信息。在图2B所示的示例中,组合字段访问方法2124将逻辑字段名2104“AgeInDecades”映射到“AgeInYears/10”。另一个示例是销售税字段,通过将销售价格字段乘以销售税率来构成所述销售税字段。
考虑到关于基础数据的任何给定的数据类型(例如日期、十进制数等)的格式可能不同。因此,在一个实施例中,字段说明208包括类型属性,它反映了基础数据的格式。但是,在另一个实施例中,字段说明208的数据格式与相关联的基础物理数据不同,在这种情况下,需要将基础物理数据转换为逻辑字段的格式。
举例而言,图2中所示的数据抽象模型部件132的字段说明208表示被映射到在关系数据表示2142中表示的数据的逻辑字段。但是,数据抽象模型部件132的其他实例将逻辑字段映射到其他物理数据表示,诸如XML。在一个实施例中,数据抽象模型132被运行时间部件134使用来将抽象查询202转换为具体查询,所述具体查询具有与在关系数据表示2142中表示的数据的物理表示一致的形式。然后运行时间部件134对基础关系数据库执行具体的查询,以便确定对于抽象查询202的对应的查询结果。
下面表1中示出了对应于图2B中所示的抽象查询202的说明性抽象查询。通过例示,使用XML来定义所述说明性抽象查询。但是,为了方便可以使用任何其他的语言。
表I-抽象查询示例
001 <?xml version=″1.0″?>
002 <!--Query string representation:(FirstName=″Mary″AND LastName=
003 ″McGoon″)OR State=″NC″-->
004 <QueryAbstraction>
005 <Selection>
006 <Condition internalID=″4″>
007 <Condition field=″FirstName″operator=″EQ″value=″Mary″
008 internalID=″1″/>
009 <Condition field=″LastName″operator=″EQ″value=″McGoon″
010 internalID=″3″relOperator=″AND″></Condition>
011 </Condition>
012 <Condition field=″State″operator=″EQ″value=″NC″internalID=″2″
013 relOperator=″OR″></Condition>
014 </Selection>
015 <Results>
016 <Field name=″FirstName″/>
017 <Field name=″LastName″/>
018 <Field name=″Street″/>
019 </Results>
020 </QueryAbstraction>
示例性的,表I中所示的抽象查询包括一个包含选择标准的选择说明(005-014行)和一个结果说明(015-019行)。在一个实施例中,选择标准包括字段名(对于逻辑字段)、比较运算符(=、>、<等)和值表达式(字段所比较者)。在一个实施例中,结果说明是作为查询执行的结果而要被返回的抽象字段的列表。在抽象查询中的结果说明可以包括字段名和选择(sort)标准。
下面的表II中示出了对应于图2B中所示的数据抽象模型132的说明性数据抽象模型(DAM)。示例性的,使用XML来定义所述说明性数据抽象模型。但是,为了方便,可以使用任何其他的语言。
表II-数据抽象模型示例
001 <?xml version=″1.0″?>
002 <DataAbstraction>
003 <Category name=″Demographic″>
004 <Field queryable=″Yes″name=″FirstName″displayable=″Yes″>
005 <AccessMethod>
006 <Simple columnName=″f_name″tableName=″contact″></Simple>
007 </AccessMethod>
008 <Type baseType=″char″></Type>
009 <Field>
010 <Field queryable=″Yes″name=″LastName″displayable=″Yes″>
011 <AccessMethod>
012 <Simple columnName=″I_name″tableName=″contact″></Simple>
013 </AccessMethod>
014 <Type baseType=″char″></Type>
015 </Field>
016 <Field queryable=″Yes″name=″State″displayable=″Yes″>
017 <AccessMethod>
018 <Simple columnName=″State″tableName=″contact″></Simple>
019 </AccessMethod>
020 <Type baseType=″char″></Type>
021 </Field>
022 </Category>
023 </DataAbstraction>
举例而言,注意004-009行对应于图2B中所示的DAM 132的第一字段说明2081,010-015行对应于第二字段说明2082。
如上所述,一个实施例提供了在单个应用空间中共存的多个数据抽象模型部件。在图3A中示出了图解这样的环境的一个实施例。图3A中所示的环境通常包括应用层310(由图1的应用120定义)、数据抽象层320和物理数据层330。所述环境示出了使用例如图1的应用120(例如通过发出图2的抽象查询202),经由应用层310而访问物理数据层330的两个用户340“用户1”和350“用户2”。于是,应用层310可以包括数据查询建立器部件,它被适配来使得用户能够建立抽象查询。
用户340、350通过公共应用层310来访问同一物理数据层330。但是,被暴露给相应用户340、350的数据不是相同的。而且,每个用户按照数据抽象层320的定义而被暴露到物理数据层330的选择部分。更具体而言,数据抽象层320说明性地包括两个数据抽象模型部件DAM1 342和DAM2 352,它们分别定义将经由应用层310而被暴露给用户340、350的数据。数据抽象层320可以包括数据查询抽象部件,它用于数据查询建立器部件对在物理数据层330中的物理数据的逻辑数据访问。
在当前的示例中,第一数据抽象模型342(DAM1)暴露第一数据344“注册数据库”的全部和第二数据库354“工资单数据库”的表1,而第二数据抽象模型352(DAM2)暴露整个第二数据库354和第一数据库344的表2。应当注意,由相应的数据抽象模型暴露的特定数据仅仅是说明性的。更一般而言,可以暴露数据库344、354的任何部分以及物理数据层330的任何其他数据库。示例性的,图3A的环境示出了两个用户(340,350)。但是,更一般而言,任何数量的用户可以访问物理数据层330的数据。
现在参照图3B,一个实施例被图解,其中,在单个应用空间中共存了给定的数据抽象模型(例如图1的数据抽象模型132)的多个实例。具体而言,所述多个实例共存,而与是否是仅仅给定的数据抽象模型或一个或多个其他的数据抽象模型存在于所述单个应用空间中无关。举例而言,用户的组360访问图3A的数据抽象模型342“DAM1”,如箭头346所示。示例性的,用户的组360包括5个用户:用户362“用户A”、364“用户B”、366“用户C”、368“用户D”和370“用户N”。
对于访问数据抽象模型342的每个用户362、364、366、368和370,创建数据抽象模型342的实例(如箭头347所示)。每个实例定义了对于给定用户的数据抽象模型342的特定视图。向每个用户提供数据抽象模型342的这样的特定视图允许将数据抽象模型342适配到用户的需要和特定要求,而不用对于在组360中的所有用户全局地改变数据抽象模型342。在一个实施例中,通过向给定的DAM施加过滤器(或“视图”)来创建给定的DAM的各种实例,从而暴露DAM的选择部分。在一些实施例中,所述过滤器可以实际上重新定义所暴露的DAM的属性。这些和其他方面的示例如下。
示例性的,产生定义DAM 342的不同视图的数据抽象模型实例372“DAM1-A”、374“DAM1-B”、376“DAM1-C”、378“DAM1-D”、和380“DAM1-N”的组348。分别对于用户362、364、366、368和370产生DAM实例372、374、376、378、380,如箭头382、384、386、388和390所示。举例而言,假定DAM实例372“DAM1-A”对用户362示出了在数据抽象模型342中定义的所有的逻辑字段。DAM实例374“DAM1-B”向用户364隐藏了与数据库344的表1的列1相关联的逻辑字段,但是示出了在数据抽象模型342中定义的所有剩余的逻辑字段。DAM实例376“DAM1-C”向用户366示出了数据抽象模型342的所有逻辑字段,但是重新定义了与数据库344的表1的列2相关联的逻辑字段。更具体而言,假定在数据抽象模型342中将与表1的列2相关联的逻辑字段原始地定义为映射到ZIP代码的物理表示的纽约ZIP代码字段,并且所述逻辑字段将所述数据仅仅限制为对于纽约州定义的那些ZIP代码上。进一步假定所述重新定义的字段将所述数据限制为对于明尼苏达州(MN)定义的ZIP代码。而且,DAM实例378“DAM1-D”向用户368示出了在数据抽象模型342中定义的所有逻辑字段,并且另外示出了与数据库354的表2的列1相关联的逻辑字段。最后假定DAM实例380“DAM1-N”向用户370隐藏了与数据库344的表1的列2相关联的逻辑字段,但是示出了在数据抽象模型342中定义的所有剩余逻辑字段,并且另外示出了与数据库354的表2的列2相关联的逻辑字段。
如上所述,多个数据抽象模型可以共存于单个应用空间中。而且,给定的数据抽象模型的多个实例可以共存于单个应用空间中。而且,在一个实施例中,不同的数据抽象模型可以彼此引用。图3C中示出了其中多个数据抽象模型彼此引用的一个例证实施例。具体的,图3A的第二数据抽象模型DAM2352被图解为第三数据抽象模型DAM3 392(子)和第四数据抽象模型DAM4394的父亲。在这个关系中,第三和/或第四数据抽象模型DAM3 392和DAM4394可以继承第二数据抽象模型DAM2 352的定义的一部分。更详细而言,未在第三和/或第四数据抽象模型DAM3 392和DAM4 394中包括的、在第二数据抽象模型DAM2 352中提供的逻辑字段的一部分可以通过继承而被包括在其中。换句话说,第三和/或第四数据抽象模型DAM3 392和DAM4 394可以不考虑第二数据抽象模型DAM2 352的部分并且/或者包括附加定义,例如在第二数据抽象模型DAM2 352中未发现的逻辑字段。换句话说,可以通过在第三和第四数据抽象模型DAM3 392和DAM4 394中包括的所述定义和/或逻辑字段的组合来构造第二数据抽象模型DAM2 352。
如上所述,可以将表I的抽象查询转换为用于查询执行的具体的查询。下面参照图4至5来说明用于将抽象查询转换为具体查询的示例性的方法。
将抽象查询转换为具体查询
现在参照图4,示出了说明性的运行时间方法400,它例证了图1的运行时间部件134的操作的一个实施例。当运行时间部件134接收作为输入的抽象查询(诸如表I中所示的抽象查询)时,在步骤S402进入方法400。在步骤404,运行时间部件134读取和解析抽象查询,并且定位独立的选择标准和所期望的结果字段。在步骤406,运行时间部件134进入用于处理在抽象查询中的当前每个查询选择标准语句的循环(由步骤406、408、410和412定义),由此建立具体查询的数据选择部分。在一个实施例中,选择标准的组成是字段名(对于逻辑字段)、比较运算符(=、>、<等)和值表达式(字段所比较者)。在步骤408,运行时间部件134使用来自抽象查询的选择标准的字段名在数据抽象模型132中查找所述字段的定义。如上所述,所述字段定义包括用于访问与所述字段相关联的数据结构的访问方法的定义。然后运行时间部件134为正在被处理的逻辑字段建立(步骤410)具体查询成分(contribution)。如在此所定义的,具体查询成分是用于根据当前的逻辑字段来执行数据选择的具体查询的一部分。具体查询是以诸如SQL和XML Query之类的语言表示的查询,并且与给定的物理数据仓库(例如关系数据库或XML仓库)的数据一致。于是,所述具体查询用于从由图1中所示的数据库139表示的物理数据仓库中定位和检索数据。然后向具体查询语句中增加(步骤412)对于当前字段产生的具体查询成分。然后,所述方法400返回到步骤406,以开始对于抽象查询的下一个字段的处理。因此,对于在抽象查询中的每个数据选择字段重复在步骤406进入的处理,由此促使执行对于最后查询的附加内容。
在建立了具体查询的数据选择部分后,运行时间部件134识别作为查询执行的结果而要被返回的信息。如上所述,在一个实施例中,抽象查询定义了结果字段的列表,即在此被称为结果说明的、要作为查询执行的结果而返回的逻辑字段的列表。在抽象查询中的结果说明可以由字段名和选择标准组成。于是,方法400在步骤414进入循环(由步骤414、416、418和420定义),以向被产生的具体查询中增加结果字段定义。在步骤416,运行时间部件134在数据抽象模型132中查找结果字段名(来自抽象查询的结果说明),然后从数据抽象模型132中检索结果字段定义,以识别对于当前的逻辑结果字段要被返回的数据的物理位置。然后运行时间部件134建立(在步骤418)对于所述逻辑结果字段的具体查询成分(识别要被返回的数据的物理位置的具体查询)。然后在步骤420,向所述具体查询语句增加具体查询成分。一旦已经处理了在抽象查询中的每个结果说明,则在步骤422执行具体查询。
参照图5来说明用于按照步骤410和418来建立对于逻辑字段的具体查询成分的方法500的一个实施例。在步骤502,方法500查询与当前逻辑字段相关联的访问方法是否是简单访问方法。如果如此,则根据物理数据位置信息来建立(在步骤504)具体查询成分,然后处理按照如上所述的方法400继续。否则,处理继续到步骤506,以查询与当前逻辑字段相关联的访问方法是否是过滤访问方法。如果如此,则根据关于给定的数据结构(或多个数据结构)的物理数据位置信息来建立(在步骤598)具体查询成分。在步骤510,使用用于为给定的数据结构(或多个数据结构)相关联的数据建立子集的附加逻辑(过滤选择)来扩展具体查询成分。然后,处理按照上述的方法400而继续。
如果访问方法不是过滤的访问方法,则处理从步骤506进行到步骤512,在此,方法500查询所述访问方法是否是组合的访问方法。如果所述访问方法是组合的访问方法,则在步骤514定位和检索对于在组合字段表达式中的每个子字段引用的物理数据位置。在步骤516,将组合字段表达式的物理字段位置信息替换为组合字段表达式的逻辑字段引用,由此产生具体查询成分。然后处理按照如上所述的方法400而继续。
如果访问方法不是组合访问方法,则处理从步骤512进行到步骤518。步骤518是被考虑为本发明的实施例的任何其他访问方法类型的代表。但是,应当明白,其中实现了少于全部可得到的访问方法的实施例被考虑在内。例如,在特定的实施例中,仅仅使用简单访问方法。在另一个实施例中,仅仅使用简单访问方法和过滤访问方法。
如上所述,如果修改诸如逻辑字段的给定数据对象,则在给定的数据对象和一个或多个相关数据对象之间的相互相关性可能带来的可能不希望有的结果。通过关于给定数据对象的修改(或多个修改)的对象修改管理部件(例如图1的对象修改管理部件150)来管理给定的数据对象和所述一个或多个相关数据对象。下面参照图6至8说明示例性的对象修改管理部件的操作。
示例性的对象修改管理环境
现在参照图6,图解了实现本发明的一个方面的部件的关系视图。所述部件说明性地包括图1的应用(或多个应用)120、数据抽象模型132、保存的查询136和对象修改管理部件(OMMC)150。所述部件还包括用户界面610、数据库612和未保存的查询614。
在一个实施例中,应用120发出对于数据抽象模型132和/或其一个或多个逻辑字段的修改620的请求。所述请求620被OMMC 150接收。按照一个方面,可以由访问应用120的用户使用用户界面610创建请求620。所请求的修改可以影响一个或多个相关数据对象,即,使用数据抽象模型132和/或其一个或多个逻辑字段的数据对象。例如,所请求的修改可能影响根据所述一个或多个逻辑字段创建的抽象查询。所述抽象查询可以使用被保存的查询136被永久地存储,或者在创建期间与未保存的查询614被缓存。OMMC 150识别相关数据对象(或多个相关数据对象),并且执行预定的动作(或多个动作)650。在一个实施例中,OMMC 150向用户发出一个消息,用于指示执行所请求的修改的效果(或多个效果)。如果用户准许所指示的效果,则用户可以指令OMMC 150来执行所述预定动作650。例如,OMMC 150对于数据抽象模型132和/或所述其一个或多个逻辑字段执行所请求的修改,并且删除所识别的相关数据对象(或多个相关数据对象)。
请求620一般是明确地或隐含地指定数据抽象模型132和/或所述其一个或多个逻辑字段的所请求的修改。例如,应用120明确地请求(i)删除给定的逻辑字段,(ii)重新命名所述给定的逻辑字段,或者(iii)改变数据抽象模型132的所述给定逻辑字段的一个或多个属性。这样的请求类型以下被称为对于修改的明确的请求。在另一个实施例中,请求620对应于导致数据抽象模型132和/或所述其一个或多个逻辑字段的修改、但是不是对于修改(或多个修改)的明确请求的事件。这样的事件以下被称为对于修改(或多个修改)的隐含请求。表示隐含请求的示例性的事件是给定用户的角色的改变,由此改变基础数据抽象模型132的对应视图。例如,假定所述给定用户使用应用120来根据数据抽象模型132创建抽象查询。为此,给定用户使用用户界面610来指定所需要的数据抽象模型132的逻辑字段为抽象查询的结果和/或条件字段。进一步假定给定的用户以第一角色创建抽象查询,其中,数据抽象模型132的第一指定视图(例如图3B的DAM实例372)被展示给给定用户。使用保存的查询136来存储所创建的抽象查询。然后,给定用户将角色改变到第二角色,其中,向给定用户展示数据抽象模型132的第二特定视图(例如图3B的DAM实例374)。在第二角色中,给定用户希望检索对于数据库612执行的所创建的抽象查询。现在假定所创建的抽象查询的指定逻辑字段在第二特定视图中不同,以便所创建的查询在第二角色中无效。例如,在第二角色中的给定用户不能访问定义抽象查询的条件字段的指定逻辑字段之一。于是,从第一到第二角色的角色改变可以被看作数据抽象模型132和/或指定的逻辑字段的修改对待,而不需要对于修改(或多个修改)的明确请求。因此,改变角色在此被称为对于修改的隐含的请求。但是,应当注意,角色的改变仅仅被描述为隐含请求的示例,并且对于修改的其他隐含的请求是可能的并且被广泛地考虑在内。例如,从第一到第二用户的改变——每个具有不同的相关联的授权——也可以被当作对于数据抽象模型132和/或其逻辑字段的修改的隐含请求对待。
OMMC 150说明性地包括环境改变管理器(ECM)632、改变列表634和相关部件目录640。当OMMC 150接收请求620时,ECM 632向改变列表634中插入所请求的修改的描述。举例而言,如果所请求的修改是删除对应的数据抽象模型“DAM Demographic(人口统计)”(例如图2A中的数据抽象模型132)的逻辑字段“FirstName”(例如图2A的逻辑字段2081),则在改变列表634中创建输入项“DELETE FirstName FROM DAM Demographic(从DAM人口统计删除FirstName)”。但是,应当注意可以以任何适当的计算机可读语言创建在改变列表634中的输入项。因此,在改变列表634中的输入项的格式不限于具体格式或计算机可读的语言。
在一个实施例中,ECM 632从所接收的对于修改的请求中识别要被修改的数据对象。在给定的示例中,ECM 632从请求620中识别逻辑字段“FirstName”。然后ECM 632访问相关部件目录640,以便确定在所识别的数据对象和对应的相关数据对象之间的相互相关性。
相关部件目录640说明性地包括相关性目录(DOD)642和有效相关性目录(DOAD)644。在一个实施例中,DOD 642和DOAD 644是数据库表,它们被配置为列举在相互相关的数据对象之间的相关性。更具体而言,DOD642和DOAD 644包括对于每个数据对象的记录,所述每个数据对象具有与另一个数据对象的相互相关性。按照一个方面,DOD 642涉及被永久存储的数据对象,DOAD 644涉及不永久存储的数据对象,如下而更详细所述。在下面的表III中示出了示例性的DOD表。
表III-示例性的DOD表
001 ITEM ITEM_TYPE OBJECT OBJECT_TYPE USE
002 Payroll Query Age Field Condition
003 Payroll Query Name Field Output
004 Name Field FirstName Field Create
005 Name Field LastName Field Create
006 OldPayroll Quert B Field Output
007 OldPayroll Query C Field Output
008 OldPayroll Query D Field Output
009 PayrollDec02 Results A Field Output
010 PayrollDec02 Results C Field Output
011 PayrollDec02 Results Payroll Query Create
示例性的,在表III中所示的例证DOD表包括5列:“ITEM(项目)”、“ITEM_TYPE(项目类型)”、“OBJECT(对象)”、“OBJECT_TYPE(对象类型)”和“USE(使用)”。第一列“ITEM”包含适合于唯一地标识对应的数据对象的信息。举例而言,002-003行涉及数据对象“Payroll(工资单)”,004-005行涉及数据对象“Name(姓名)”,006-008行涉及数据对象“OldPayroll(旧工资单)”,009-011行涉及数据对象“PayrollDec02”。第二列“ITME_TYPE”包含描述在第一列中所标识的对应数据对象的类型的信息。举例而言,数据对象“Payroll”和“OldPayroll”是查询对象(在002-003和006-008行中的“Query(查询)”),数据对象“Name”是逻辑字段(在004-005行中的“Field(字段)”),数据对象“PayrollDec02”是结果对象(在009-011行中的“Results(结果)”)。在一个实施例中,查询“Payroll”和“OldPayroll”是使用被保存的查询136而被存储为永久数据对象的抽象查询。结果集“PayrollDec02”是例如在数据库612中被存储为永久数据对象的查询结果。第三列“OBJECT”包含适合于唯一地标识与在第一列“ITEM”中标识的数据对象具有相互相关性的数据对象的信息。举例而言,002-011行分别涉及数据对象“Age(年龄)”、“Name”、“FirstName(名)”、“LastName(姓)”、“B”、“C”、“D”、“A”、“C”和“Payroll”。具体上,数据对象“Age”和“Name”与抽象查询“Payroll”(002-003行)具有相互相关性。数据对象“FirstName”和“LastName”与逻辑字段“Name”(004-005行)具有相互相关性。数据对象“B”、“C”、“D”与抽象查询“OldPayroll”(006-008行)具有相互相关。数据对象“A”、“C”和“Payroll”与结果集“PayrollDec02”(009-011行)具有相互相关性。第四列“OBJECT_TYPE”包含描述在第三列中标识的对应数据对象的对象类型的信息。举例而言,数据对象“Age(年龄)”、“Name”、“FirstName(名)”、“LastName(姓)”、“B”、“C”、“D”、“A”和“C”是逻辑字段(在002-010行中的“Field(字段)”),并且数据对象“Payroll”是查询对象(在011行中的“Query”),即002-005行中的“Payroll”查询。第五列“USE”包含描述如何相对于第一列“ITEM”的对应数据对象而使用在第三列中标识的数据对象的信息。举例而言,逻辑字段“Age”被用作抽象查询“Payroll”中的条件字段(在001行中的“Condition(条件)”)。逻辑字段“Name”、“B”、“C”、“D”、“A”和“C”被用作在第一列中所标识的对应抽象查询中的结果字段(在003-010中的“Output”)。逻辑字段“FirstName(名)”、“LastName(姓)”被用于创建逻辑字段“Name”(在004-005行中的“Create(创建)”),并且抽象查询“Payroll”用于创建查询结果“PayrollDec02”(在011行中的“Create(创建)”)。
应当注意,按照表III的003行在抽象查询“Payroll”中被用作结果字段的逻辑字段“Name”定义了组合字段(例如图2B的逻辑字段2084)。正如可以从表III的004-005行看到的,组合字段“Name”由两个逻辑字段、即逻辑字段“FirstName(名)”(例如图2B的逻辑字段2081)和“LastName(姓)”(例如图2B的逻辑字段2082)组成。因此,如果请求对逻辑字段“FirstName(名)”和/或“LastName(姓)”的修改,则可以从表III的DOD表中确定所请求的修改会影响组合逻辑字段“Name”。
还应当注意,可以根据系统和/或特定用户的要求来定义所示出的列和列属性、即表III的示例性的DOD表的列的数量。例如,一个附加属性可以收集指示何时仅允许特定值的信息。例如,用于Race(种族)的字段可以允许White(白人)、Black(黑人)、Asian(亚洲人)等。但是,某些角色或场景可能限制了用户可用的选择的数量。通过跟踪用于在另一个列中的条件中的逻辑字段的值,DOD可以用于确定查询条件是否仍然有效。
DOAD 644具有类似于DOD 642形式的形式,但是其形式涉及不永久存储的数据对象。例如,DOAD 644可以包括对于具有与在构造下的另一个数据对象的相互相关性的每个数据对象的记录。因此,在DOAD 644中跟踪抽象查询,所述抽象查询只要在构造中,则使用未保存的查询614来缓存它。
通过DOD/DOAD管理器646来管理DOD 642和DOAD 644。DOD/DOAD管理器646创建、删除和/或更新在DOD 642和DOAD 644中的记录。例如,如果在当前的用户会话期间,使用作为结果和/或条件字段的来自数据抽象模型132的5个逻辑字段来构造抽象查询,则DOD/DOAD管理器646在DOAD 644中创建在构造下的对于抽象查询的5个记录,对于每个所选择的逻辑字段有一个记录。如果随后向在构造下的抽象查询增加附加的逻辑字段,则DOD/DOAD管理器646在DOAD 644中创建附加记录。当例如通过使用被保存的查询136来永久地存储抽象查询而完成抽象查询的构造时,DOD/DOAD管理器646向DOD 642传送已经对于所述抽象查询在DOAD644中创建的所有记录。如果随后修改永久存储的抽象查询,并且/或者从基础数据抽象模型中删除由抽象查询使用的逻辑字段,则DOD/DOAD管理器646因此更新DOD 642。
如上所述,ECM 632访问相关部件目录640以便确定在被请求修改的所识别的数据对象和对应的相关数据对象之间的相互相关性。以这种方式,ECM632从DOD 642和/或DOAD 644中识别对应的相关数据对象,并且在改变列表634中创建对于每个所识别的相关数据对象的输入项。根据所述改变列表634,ECM 632执行预定的动作650。
应当注意,为了简单,已经描述了单个改变列表、即改变列表634的使用。但是,在替代的实现方式中,使用了多于一个的列表。例如,可以使用改变列表634来列举所请求的修改,并且可以使用另一个列表来列举相关数据对象。因此,这样的替代的实现方式被广泛地考虑在内。
在一个实施例中,ECM 632从应用120中请求对于预定动作650的指令,如虚线箭头622所示。例如,ECM 632向应用120提供改变列表634。因此,应用120可以经由用户界面610来提示用户指示对于数据抽象模型132和/或指定的逻辑字段以及所识别的相关数据对象(或多个相关数据对象)要执行何种动作。在另一个实施例中,应用120以程序来选择预定的动作650。然后应用120向ECM 632提供识别预定动作650的指令,ECM 632执行由应用120指定的预定动作650。在另一个实施例中,所述ECM 632以程序选择并执行预定动作650。下面参照图7-8来更详细地说明应用120、用户界面610和OMMC 150的示例性的操作和交互。
管理相互相关的数据对象
现在参照图7,示出了一系列用户界面屏幕710至740,它们图解了用于管理对于数据抽象模型(例如图6的数据抽象模型132)所请求的修改的示例性的修改处理。在一个实施例中,所述一系列用户界面屏幕710至740被显示在适当的用户界面(例如图6的用户界面610)中。
举例而言,响应于对于修改(或多个修改)的明确的请求(例如图6的请求620)而执行参照图7所述的修改处理。使用适当的用户界面在数据抽象模型修改会话(以下称为“DAM修改会话”)期间由用户创建所述明确的请求。当用户启动DAM修改会话时,修改处理开始。为此,用户可以调用适当的数据抽象模型修改工具(例如图6的应用120),所述工具允许用户在基础数据抽象模型上执行修改。
响应于DAM修改会话的启动,所述数据抽象模型修改工具(以下为了简便称为“DAM修改工具”)在适当的用户界面中显示所述用户界面屏幕710。用户界面屏幕710显示用户可选择的元素。用户可选择的元素的第一部分表示基础数据抽象模型的逻辑字段。举例而言,用户界面屏幕710显示具有多个可选择项目的下拉菜单712,其每个项目对应于基础数据抽象模型的逻辑字段。现在假定用户要选择逻辑字段“Age”。在这种情况下,用户选择菜单项目714“AGE”,它示意性地被加上阴影作为所述选择的可视化确认。
用户可选择元素的第二部分允许用户指定所请求的修改。举例而言,一个用户可选择元素可以允许用户指定对于编辑所选择的逻辑字段“Age”的请求。因此,用户可以指定或改变所选择的逻辑字段的属性和/或定义,并且/或者重新命名所选择的逻辑字段。另一个用户可选择的元素允许用户可以指定对于删除所选择的逻辑字段的请求。但是,应当注意,任何适当的修改都被广泛地考虑在内。
示例性的,用户点击按钮716“删除”来从数据抽象模型中删除“Age”字段。在按下按钮716后,DAM修改工具创建对于删除逻辑字段“Age”的请求,并且向具有ECM(图6的ECM 632)的适当的OMMC(例如图6的OMMC 150)发送所述请求。
在一个实施例中,ECM确定在所选择的逻辑字段“Age”和对应的相关数据对象之间的相互相关性。为此,ECM产生和执行对于对应的DOD和/或DOAD表(例如图6的DOD 642和DOAD 644)的第一查询。第一查询被配置为确定所述相互相关性并且识别相关数据对象。在下面的表IV中示出了示例性的第一查询。举例而言,以SQL来说明表IV的示例性的第一查询。但是,以SQL指定下面表IV的示例性的第一查询不是用来因此而限制本发明。相反,可以明白,可以使用任何适当的查询语言——已知的或未知的——来创建表IV的查询。而且,为了简单,示例性的第一查询仅仅被指定为对于DOD表、即上面的表III的DOD表的执行。但是,本领域的技术人员可以认识到,可以修改示例性的第一查询对于DOAD和/或DOD和DOAD表的执行。例如,在SQL查询的情况下,可以为此使用UNION子句。
表IV-第一查询示例
001 SELECT ITEM,ITEM_TYPE
002 FROM DOD
003 WHERE OBJECT=‘Age’AND OBJECT_TYPE=‘Field’
示例性的,在表IV中所示的示例性的第一查询包括在001行中的数据选择标准。所述数据选择标准包括结果字段说明,它指定在查询结果中要被返回的信息的两个结果字段。具体地,指定结果字段“ITEM”和“ITEM_TYPE”。但是,应当注意,可以根据系统和用户请求而指定其他结果字段。示例性的第一查询还包括包含指定的结果字段的数据库表(002行)、即上面的表III的DOD表的说明。而且,示例性的第一查询包括在003行的数据选择标准。该数据选择标准指示应当检索涉及逻辑字段“Age”(OBJECT=‘Age’ANDOBJECT_TYPE=‘Field’)的表III的DOD表中的所有数据记录。
在给定的示例中,表IV的示例性的第一查询产生第一查询结果。按照表III的002行,第一查询结果包括查询“Payroll”,例如使用多个永久存储的查询(例如图6的被保存的查询136)来存储它。ECM向DAM修改工具返回第一查询结果,所述DAM修改工具产生和显示用户界面屏幕720。用户界面屏幕720显示汇总第一查询结果的汇总显示部分722。示例性的,汇总显示部分722指示查询“Payroll”依赖于逻辑字段“Age”。
在一个实施例中,用户界面屏幕720允许用户指定要对查询“Payroll”执行的预定动作。为此,用户可以点击复选框724,以选择查询“Payroll”,然后选择与所请求的预定动作相关联的用户可选择元素。举例而言,用户点击按钮726“删除”以请求删除“Payroll”查询。但是,应当注意,仅仅通过举例来说明“Payroll”查询的删除,其不是用来因此而限制本发明。换句话说,可以由用户指定各种预定动作,包括例如禁止对于查询“Payroll”的访问和向用户隐藏所述查询。而且,这些预定动作可以根据在查询中的“Age”字段的使用被改进以修改“Payroll”查询。例如,如果仅仅使用“Age”字段作为在具有多个其他逻辑字段的抽象查询“Payroll”中的结果字段,则可以从所述查询中去除“Age”字段。因此,所修改的查询是不需要被删除的有效查询。因此,这样的各种预定动作被广泛地考虑在内。
在按下按钮726后,DAM修改工具创建删除查询“Payroll”的请求,并且向OMMC、即ECM发送所述请求。所述ECM确定在查询“Payroll”和对应的相关数据对象之间的相互相关性。为此,ECM产生和执行对于表III的DOD的第二查询。下面的表V中示出了例证第二查询。举例而言,以SQL描述了表V的例证第二查询。在下面的表V中示出示例性的第二查询。举例而言,以SQL描述表V的示例性的第二查询。但是,以SQL指定的下面的表V中的示例性的第二查询不是用来因此而限制本发明,并且可以明白,可以使用任何适当的查询语言——未知的或已知的——来创建表V的查询。
表V-第二查询示例
001 SELECT ITEM,ITEM_TYPE
002 FROM DOD
003 WHERE OBJECT=‘Payroll’AND OBJECT_TYPE=‘Query’
示例性的,表V所示的示例性的第二查询包括在001行的数据选择标准。所述数据选择标准包括结果字段说明,它在查询结果中指定要被返回的信息的两个结果字段。具体地,指定结果字段“ITEM”和“ITEM_TYPE”。再次应当注意,可以根据系统和用户请求而指定其他结果字段。示例性的第二查询还在002行中包括包含指定的结果字段的数据库表、即上面的表III的DOD表的说明。而且,示例性的第二查询包括在003行的数据选择标准。数据选择标准指示应当检索涉及查询“Payroll”(OBJECT=‘Payroll’ANDOBJECT_TYPE=‘Query’)的表III的DOD表中的所有数据记录。
在给定的示例中。表V的示例性的第二查询产生第二查询结果。按照表III的011行,第二查询结果包括结果集“PayrollDec02”,它要求创建查询“Payroll”。ECM向DAM修改工具返回第二查询结果,所述DAM修改工具产生和显示用户界面屏幕730。用户界面屏幕730显示汇总第二查询结果的汇总显示部分732。因此,汇总显示部分732指示结果集“PayrollDec02”依赖于逻辑字段“Payroll”。
在一个实施例中,用户界面屏幕730允许用户指定要对结果集“PayrollDec02”执行的预定动作。为此,用户可以点击复选框734以选择结果集“PayrollDec02”。而且,用户可以选择与所请求的预定动作相关联的用户可选择元素。举例而言,用户可以点击按钮736“删除”以请求删除“PayrollDec02”结果集。再次应当注意,仅仅通过举例而说明“PayrollDec02”结果集的删除,其不是用来因此而限制本发明。
在按下按钮736后,DAM修改工具创建删除结果集“PayrollDec02”的请求,并且向OMMC、即ECM发送所述请求。所述ECM确定在结果集“PayrollDec02”和对应的相关数据对象之间的相互相关性。为此,ECM产生和执行对于所述DOD的第三查询。下面的表VI中示出了示例性的第三查询。举例而言,以SQL描述了表VI的示例性的第三查询。但是,以SQL指定下面表VI中的示例性的第三查询不意欲因此而限制本发明。相反,可以明白,可以使用任何适当的查询语言——已知的或未知的——来创建表VI的查询。
表VI-第三查询示例
001 SELECT ITEM,ITEM_TYPE
002 FROM DOD
003 WHERE OBJECT=‘PayrollDec02’AND OBJECT_TYPE=‘Results’
示例性的,表VI所示的示例性的第三查询包括在001行的数据选择标准。所述数据选择标准包括结果字段说明,它在查询结果中指定要被返回的信息的两个结果字段。具体地,指定结果字段“ITEM”和“ITEM_TYPE”。示例性的第三查询还包括包含指定的结果字段的数据库表、即上面的表III的DOD表(002行)的说明。而且,示例性的第三查询包括在003行的数据选择标准。该数据选择标准指示应当检索涉及结果集“PayrollDec02”(OBJECT=‘PayrollDec02’AND OBJECT_TYPE=‘Results’)的表III的DOD表中的所有数据记录。
在给定的示例中,表VI的示例性的第三查询产生空的查询结果。ECM向DAM修改工具返回所述空的查询结果,所述DAM修改工具产生和显示用户界面屏幕740。因为所接收的查询结果是空的,因此DAM修改工具假定完成了相关数据对象的检索。换句话说,假定第一和第二查询结果识别可以被逻辑字段“Age”的所请求的修改影响、并因此被“Payroll”查询和结果集“PayrollDec02”的所请求的删除影响的所有相关数据对象。
用户界面屏幕740显示汇总所识别的相互相关的数据对象的汇总显示部分742,所述相互相关的数据对象即逻辑字段“Age”、查询“Payroll”和结果集“PayrollDec02”。而且,显示显示部分744,它汇总了所请求的预定动作,即逻辑字段“Age”的所请求的修改(即删除)以及查询“Payroll”和结果集“PayrollDec02”的所请求的删除。在一个实施例中,从适当的改变列表(例如图6的改变列表634)中检索所识别的相互相关的数据对象和所请求的预定动作。换句话说,在所述给定的示例中,在所述改变列表中存储对于逻辑字段“Age”的所请求的修改,以及对于查询“Payroll”和结果集“PayrollDec02”的所请求的删除。举例而言,对于“Age”字段,改变列表可以具有动作输入项“DELETE Age FROM DAM Demographic(从DAM人口统计中删除Age)”,并且对于“Payroll”查询,改变列表可以具有动作输入项“DELETE Payroll FROM Saved Queries(从被保存的查询中删除Payroll)”。
在一个实施例中,用户界面屏幕740允许用户确认或取消一个或多个所请求的预定动作。为此,用户可以点击对应的复选框746以选择应当被确定的所请求的预定动作的、相关联的相互相关的数据对象。因此,用户可以点击按钮747“确认”,以确认对于所选择的相互相关的数据对象的所请求的预定动作,或者点击按钮748“取消”,以取消所有所请求的预定动作。示例性的,用户点击所有的复选框746,并因此选择所有相关联的相互相关的数据对象。现在假定,用户点击按钮747以确认所请求的预定动作。
在按下按钮747后,DAM修改工具指令ECM在所选择的相互相关的数据对象上执行所选择的预定动作(例如图6的预定动作650)。在给定的示例中,DAM修改工具指令ECM删除逻辑字段“Age”、查询“Payroll”和结果集“PayrollDec02”。因此,ECM执行所述预定动作,并且向适当的DOD/DOAD管理器(例如DOD/DOAD管理器646)通知所执行的预定动作。因此,DOD/DOAD管理器可以更新表III的DOD表。在给定的示例中,DOD管理器在表III中删除涉及“Payroll”查询的002-003行以及涉及“PayrollDec02”结果集的009-011行。
应当注意,在给定的示例中对于逻辑字段“Age”的所请求的修改是这个逻辑字段的删除。但是,在一个实施例中,所请求的修改可以是“Age”字段的字段定义的改变和/或字段属性的修改。为了简单起见,仅仅在下面更详细地说明字段属性的修改。
例如假定逻辑字段“Age”具有称为“Displayable(可显示)”的属性(例如在表II中的004行中的“Displayable”属性),它将“displayable=Yes(是)”修改为“displayable=No(否)”。换句话说,“Age”字段在修改后仍然存在,但是关于逻辑字段“Age”的信息不再被显示,并因此对用户隐藏。在这种情况下,如果仅仅使用“Age”字段来作为对应的抽象查询“Payroll”的数据选择标准中的条件字段,则因为一般不显示关于条件字段的数据,所以所述抽象查询仍然有效。因此,ECM需要识别在“Payroll”查询中的“Age”字段的使用,以便确定在修改“Age”字段后“Payroll”查询是否仍然有效。为此,ECM产生和执行对于上面的表III的DOD表的下面的表VII的示例性的查询。为了说明的目的,所述示例性的查询类似于上面的表IV的示例性的第一查询,但是另外请求关于在所识别的相关抽象查询中的“Age”字段的使用的信息。
表VII-查询示例
001 SELECT ITEM,ITEM_TYPE,USE
002 FROM DOD
003 WHERE OBJECT=‘Age’AND OBJECT_TYPE=‘Field’
应当注意,在表VII中示出的示例性的查询指定要在查询结果中返回的信息的三个结果字段,即结果字段“ITEM”、“ITEM_TYPE”和“USE”。
在给定的示例中,表VII的示例性的查询按照表III的002行而产生包括查询“Payroll”的查询结果(如上面参照表IV的示例性的第一查询所述的)。所述查询结果还指示“Age”字段仅仅被用作“Payroll”查询中的条件字段(在表III的002行中的“Condition(条件)”)。因此,如果将“Age”查询的“Displayable”属性从“displayable=Yes”修改为“displayable=No”,则“Payroll”查询仍然有效。在这种情况下,ECM可以被配置为对于查询“Payroll”不采取任何动作。
但是,应当注意,表VII的示例性的查询的各种实现方式被广泛地考虑在内。例如,在所述给定的示例中,不用结果字段来包括“USE”字段(表VII的001行),而是可以使用所述“USE”字段来作为在表VII的003行中的查询条件中的条件字段。更具体而言,在003行中的查询条件可以被修改为包括语句“AND USE=‘Condition’”。因此,根据修改的查询条件“OBJECT=‘Age’AND OBJECT_TYPE=“FIELD”AND USE=‘Condition’”,查询结果指示“Age”字段是否仅仅被用作“Payroll”查询中的条件字段(在表III的002行中的“Condition”)。
还应当注意响应于用户输入而在所述给定示例中执行所述预定动作(或多个动作)。但是,在一个实施例中,ECM被配置为在识别逻辑字段“Age”的相关对象、即“Payroll”查询和“PayrollDec02”结果集时,确定和以程序执行所述预定动作(或多个动作)。更具体而言,ECM可以以程序来删除被请求的“Age”字段,并且也删除“Payroll”查询和“PayrollDec02”结果集。在这种情况下,用户交互可以限于逻辑字段“Age”的选择,因此,可以促进修改处理,因为用户界面屏幕720至740的显示可以被省略。
还应当注意,在给定的示例中对于逻辑字段“Age”的所请求的修改是从数据抽象模型中删除这个逻辑字段。但是,在一个实施例中,也可以从数据抽象模型的对应视图(例如图3B的DAM实例372)中去除逻辑字段“Age”。更具体而言,假定给定的用户指定(使用用户界面屏幕710)从数据抽象模型的给定视图中删除逻辑字段“Age”。换句话说,对于删除的请求不被配置为从如上所述的数据抽象模型中物理删除“Age”字段,而是被配置为对被施加到数据抽象模型的给定视图(过滤器)的定义进行改变。在从视图去除“Age”字段后,所述字段仍然被包含在基础数据抽象模型中,但是不再向使用给定视图的给定的用户(和其他用户)显示。在这种情况下,如果ECM被配置为以程序执行预定的动作(或多个动作),则ECM可以自动删除所请求的“Age”字段,并且自动隐藏“Payroll”查询和“PayrollDec02”结果集。因此,不再向具有与给定视图相关联的角色的用户显示“Payroll”查询和“PayrollDec02”结果集。但是,逻辑字段“Age”、“Payroll”查询和“PayrollDec02”结果集仍然存在,并且可以被具有与数据抽象模型的其他视图相关联的角色的用户利用。
此外,在一个实施例中,可以响应于从第一视图向第二视图的改变而发生从给定的视图中去除“Age”字段的请求。例如,假定给定用户以与第一视图相关联的第一角色(例如作为具有全面访问特权的管理员)登录。还假定给定的用户将他的角色改变为与第二视图(例如图3B的DAM实例374)相关联的第二角色(例如具有受限访问特权的研究者)。现在假定两个视图类似,但是仅第一视图中包括“Age”字段,而第二视图中不包括它。在这种情况下,可以将第一视图与第二视图相比较以便确定是否发生了对于修改的隐含请求,由此识别“Age”字段的逻辑删除。因此,可以对于删除逻辑字段“Age”的隐含请求执行如上所述的修改处理。
现在假定以第一角色登录的给定用户退出登录,然后以第二角色登录回去。在这种情况下,不能确定用户环境中的具体改变,因为登录动作不是从一个视图向另一个的改变。因此,OMMC 150将不会为了验证而被调用。但是,在一个实施例中,通过对在DOD和/或DOAD中的每个记录执行散列码验证而检测到这样的情况。在这个实施例中,散列码与DOD和/或DOAD中的每个记录相关联。在下面的表IX中示出了包括散列码的示例性的DOD表。
表IX-包括散列码的示例性的DOD表
001 ITEM ITEM_TYPE OBJECT OBJECT_TYPE USE HASH CODE
002 Payroll Query Age Field Condition 0173756
003 Payroll Query Name Field Output 1752562
示例性的,表IX的001-003行对应于表III的001-003行,对表III增加了第六列。更具体而言,在表IX中所示的示例性的DOD表包括六列:“ITEM(项目)”、“ITEM_TYPE(项目类型)”、“OBJECT(对象)”、“OBJECT_TYPE(对象类型)”、“USE(使用)”和“HASH CODE(散列码)”。前5列对应于上面的表III的DOD表的列。第六列“HASH CODES”包含散列码,所述散列码适合于当在“ITEM”列中定义的对应的相关数据对象的创建时间时,在“OBJECT”列中识别的给定数据对象的状态。举例而言,按照002行,散列码“0173756”表示关于在抽象查询“Payroll”的创建时间时的逻辑字段“Age”的状态。为了创建散列码“0173756”,“Age”字段的所有属性和对应值——诸如“Displayable(可显示)”属性和对应的“Yes(是)”值——被用作对于适当的散列码产生器的输入。因此,所有属性实现了散列码的产生,并因此在任何属性中的改变都会导致产生不同的散列码。例如,如果“Displayable”属性的值从“Yes”改变为“No”,则随后产生的“Age”字段的散列码也从其先前的值改变(即在这个示例中的“0173756”)。“Age”字段的所有其他属性等同地影响“Age”字段的散列码。但是,应当注意,散列码的产生是本领域所公知的,因此在此不详细说明。
因此,在一个实施例中,当给定用户登录时,对于在表IX的“OBJECT”列中识别的所有数据对象,从基础数据抽象模型中确定散列码。将所确定的散列码与在表IX的列“HASH CODES”中包括的对应的散列码相比较。按照一个方面,同一散列码识别同一数据对象,而关于给定数据对象的不同对象指示自从对应的相关数据对象的创建开始就已经改变了给定的数据对象。例如,假定对于逻辑字段“Age”(在表IX的002行中的“OBJECT”列中所识别的)确定散列码“1173752”。还假定对于逻辑字段“Name”(在表IX的003行中的“OBJECT”列中所识别的),确定散列码“1752562”。因此,因为对于“Name”字段所确定的散列码对应于在表IX的DOD表中的相应的散列码,因此还没有修改“Name”字段。但是,因为对于“Age”字段的散列码不匹配,因此已经修改了“Age”字段。在这种情况下,可以对于修改的“Age”字段启动如上所述的修改处理。
在一个实施例中,仅仅执行一次所述的散列码验证。更具体而言,当用户返回登录时,执行散列码验证,并且对于所有有效的数据对象,可以在DOD表中指示其有效性。更具体而言,一旦已经认为一个给定的数据对象的散列码有效,则在一个实施例中从DOD表中去除那个散列码。因此,如果在DOD表中的数据对象不具有相关联的散列码,则这指示所述数据对象已经被验证为有效。因此,当用户再次退出登录并且随后再次返回登录时,可以避免新的验证。但是,也考虑了替代的实施例。例如,当给定的用户登录时,可以检索被所有永久存储的抽象查询。因此,可以开始背景处理,所述背景处理运行所有的被检索的抽象查询,以便确定哪些查询是有效的。从所确定的无效查询中,可以识别所使用的逻辑字段。如上所述,可以核对所识别的逻辑字段的有效性,并且对于无效的逻辑字段,可以执行修改处理。
用于管理相互相关的数据对象的示例性的方法
现在参见图8,图解了一种示例性的方法800,用于管理对于相互相关的数据对象(例如,图6的数据抽象模型132、被保存的查询136和未被保存的查询614)的修改。在一个实施例中,使用用户界面(例如图6的用户界面610)和OMMC(例如图6的OMMC 150)来执行方法800的步骤的至少一部分。方法800在步骤810开始。
在步骤820,提供了数据抽象模型(例如图6的数据抽象模型132)。提供数据抽象模型包括创建数据抽象模型、从存储器(例如图1的存储器116)中提取它或者将其加载到适当的计算机系统(例如图1的计算机系统110)上。在步骤830,提供了抽象查询(例如图6的所保存的查询)。抽象查询根据数据抽象模型而被形成,并且可以被永久地存储在适当的数据存储器(图1的数据库139)中。提供抽象查询还包括创建抽象查询(例如图6的未被保存的查询614)。
在步骤840,接收对于数据抽象模型的修改的请求。在一个实施例中,对于修改的请求包括对于下述内容的请求:(i)删除数据抽象模型的给定逻辑字段,(ii)重新命名给定的逻辑字段,以及(iii)改变所述给定的逻辑字段的一个或多个属性。
在步骤850,使用适当的DOD和/或DOAD表(例如图6的DOD 642和DOAD 644)来识别可能被影响的相关数据对象,诸如抽象查询和查询结果。可以参照图7如上所述来执行确定可能被影响的相关数据对象。
在步骤860,确定要在数据抽象模型和所识别的可能被影响的相关数据对象上执行的一个或多个预定动作(例如图6的预定动作650)。在步骤870执行所确定的预定动作(或多个动作)。如上所述,在没有下述条件的情况下不执行对于数据抽象模型和所识别的可能被影响的相关数据对象而执行的任何预定动作:首先向用户通知所述动作和它们的可能后果,并且接收响应的用户的指令,所述指令允许对于数据抽象模型和所识别的可能被影响的相关数据对象的预定动作。在这个方面,用户通知本身可以被当作预定动作。然后方法800在步骤880退出。
应当注意,在此对于特定值、定义、编程语言和示例的任何引用仅仅是为了说明的目的。因此,本发明不限于任何特定的图解和示例。而且,虽然上述内容涉及本发明的实施例,但是可以在不脱离本发明的基本范围的情况下设计本发明的其他和另外的实施例,并且由所附的权利要求确定本发明的范围。
本申请涉及下面的共同拥有的申请:2002年2月26日提交的美国专利申请第10/083,075号,题目为“通过数据库模式和查询抽象的应用可移值性和可扩展性”,其全部内容被合并于此。
Claims (26)
1.一种计算机实现的方法,用于管理对于多个相互相关的数据对象的至少一个的修改,包括:
接收对于具有至少一个相关数据对象的给定数据对象的修改的请求;
访问相关性目录,所述相关性目录包含对于所述多个相互相关的数据对象的每个的至少一个记录,所述相互相关的数据对象包括所述至少一个相关数据对象,其中,每个记录描述了在至少两个相互相关的数据对象之间的相互相关性,并且其中,对于至少一个相关数据对象的记录描述了在给定数据对象和所述至少一个相关数据对象之间的相互相关性;
使用所访问的相关性目录,识别在给定数据对象和所述至少一个相关数据对象之间的相互相关性;并且
如果在执行所请求的修改的情况下、所识别的相互相关性提供可能的不希望有的结果,则执行预定的动作。
2.根据权利要求1的方法,其中,访问相关性目录包括响应于修改请求而发出对于相关性目录的查询;并且其中,识别相互相关性包括接收包含由所述修改请求影响的那些相互相关的数据对象的结果集。
3.根据权利要求1的方法,其中,对于给定的数据对象的修改的请求包括对于下述的至少一个的请求:
(i)删除所述给定的数据对象;
(ii)重新命名所述给定的数据对象;以及
(iii)改变所述给定的数据对象的一个或多个属性。
4.根据权利要求1的方法,其中,对于所述给定的数据对象,所述预定动作包括下面的至少一个:
(i)删除所述给定的数据对象;
(ii)重新命名所述给定的数据对象;以及
(iii)改变所述给定的数据对象的一个或多个属性;并且
对于至少一个相关数据对象,所述预定动作包括下面的至少一个:
(i)禁止访问所述至少一个相关数据对象的至少一个部分;以及
(ii)删除所述至少一个相关数据对象的至少一个部分。
5.根据权利要求1的方法,其中,执行预定动作包括:按照所请求的修改而修改所述给定的数据对象;以及使得所述至少一个相关数据对象的至少一部分无效。
6.根据权利要求5的方法,其中,使得所述至少一个相关数据对象的至少一部分无效包括:
禁止访问所述至少一个相关数据对象。
7.根据权利要求5的方法,其中,使得所述至少一个相关数据对象的至少一部分无效包括:
删除所述至少一个相关数据对象。
8.根据权利要求1的方法,其中,执行预定动作包括:
拒绝关于给定的数据对象的所请求的修改。
9.根据权利要求1的方法,其中,对于给定的数据对象的修改的请求基于用户输入;所述方法还包括:
向用户显示相关性列表,所述相关性列表包括所述至少一个相关数据对象;并且
根据相关性列表接收指定预定动作的用户输入。
10.根据权利要求1的方法,其中,对于给定的数据对象的修改的请求基于用户输入,所述方法还包括:
以程序选择预定动作,其中,对于给定的数据对象和所述至少一个相关数据对象以程序执行所选择的预定动作。
11.根据权利要求1的方法,其中,对于给定的数据对象的修改的请求包括对于给定的数据对象的暂时修改的请求;并且其中执行预定动作包括:
按照所请求的修改而暂时修改给定的数据对象;并且
暂时无效所述至少一个相关数据对象的至少一部分。
12.一种计算机实现的方法,用于管理对于数据抽象模型的修改,所述数据抽象模型抽象地描述在数据库中的数据,并且定义多个逻辑字段,所述方法包括:
从所述数据抽象模型中接收对于修改给定的逻辑字段的请求,所述给定的逻辑字段定义数据库中的特定的一组物理数据的抽象表示,并且具有至少一个相关数据对象;
访问相关性目录,所述相关性目录包含关于多个逻辑字段和多个相互相关的数据对象的每个的至少一个记录,所述相互相关的数据对象包括所述至少一个相关数据对象,其中,每个记录描述了在至少两个相互相关的数据对象之间的相互相关性,并且,其中,对于所述至少一个相关数据对象的记录描述了在给定逻辑字段和所述至少一个相关数据对象之间的相互相关性;
使用所访问的相关性目录,识别在给定的逻辑字段和所述至少一个相关数据对象之间的相互相关性;以及
如果在执行所请求的修改的情况下、所识别的相互相关性提供可能的不希望有的结果,则执行预定的动作。
13.根据权利要求12的方法,其中,访问相关性目录包括响应于对于修改的请求而发出对于相关性目录的查询,并且其中,识别相互相关性包括接收包含由修改请求影响的那些相互相关的数据对象的结果集。
14.根据权利要求12的方法,其中,所述至少一个相关数据对象是具有一个或多个逻辑字段的抽象查询,所述一个或多个逻辑字段包括给定的逻辑字段;并且其中,所述数据抽象模型被适配来将所述抽象查询的一个或多个逻辑字段转换为与在数据库中的数据的物理表示一致的形式。
15.根据权利要求12的方法,其中,对于给定的逻辑字段的修改的请求包括下述的至少一个:
(i)删除在所述数据抽象模型中的所述给定的逻辑字段;
(ii)重新命名所述给定的逻辑字段;以及
(iii)改变所述给定的逻辑字段的一个或多个属性。
16.根据权利要求12的方法,其中,对于所述给定的逻辑字段,所述预定动作包括下面的至少一个:
(i)删除在所述数据抽象模型中的所述给定的逻辑字段;
(ii)重新命名所述给定的逻辑字段;以及
(iii)改变所述给定的逻辑字段的一个或多个属性;并且
对于至少一个相关数据对象,所述预定动作包括下面的至少一个:
(i)禁止访问所述至少一个相关数据对象的至少一个部分;以及
(ii)删除所述至少一个相关数据对象的至少一个部分。
17.根据权利要求12的方法,其中,执行预定动作包括:按照所请求的修改而修改所述给定的逻辑字段;并且使得所述至少一个相关数据对象的至少一部分无效。
18.根据权利要求17的方法,其中,使得所述至少一个相关数据对象的至少一部分无效包括下述中的一个:
禁止访问所述至少一个相关数据对象;以及
删除所述至少一个相关数据对象。
19.根据权利要求12的方法,其中,执行预定动作包括:
拒绝关于给定的逻辑字段的所请求的修改。
20.根据权利要求12的方法,其中,对于给定的数据对象的修改的请求基于用户输入,所述方法还包括:
向用户显示相关性列表,所述相关性列表包括所述至少一个相关数据对象;并且
根据所述相关性列表接收指定预定动作的用户输入。
21.根据权利要求12的方法,其中,对于给定的逻辑字段的修改的请求基于用户输入,所述方法还包括:
以程序选择预定动作,其中,对于给定的逻辑字段和所述至少一个相关数据对象以程序执行所选择的预定动作。
22.根据权利要求12的方法,其中,对于给定的逻辑字段的修改的请求包括对于给定的逻辑字段的暂时修改的请求;并且其中执行预定动作包括:
按照所请求的修改而暂时修改给定的逻辑字段;并且
暂时无效所述至少一个相关数据对象的至少一部分。
23.根据权利要求12的方法,其中,如果确定给定的逻辑字段的修改影响所述至少一个相关数据对象,则仅仅对于所述至少一个相关数据对象执行预定动作。
24.根据权利要求12的方法,其中,执行预定动作包括:
按照所请求的修改而修改给定的逻辑字段;并且
根据被修改的逻辑字段来验证所述至少一个相关数据对象。
25.根据权利要求24的方法,其中,所述至少一个相关数据对象是具有一个或多个逻辑字段的抽象查询,所述一个或多个逻辑字段包括给定的逻辑字段;并且其中,所述数据抽象模型被适配来将所述抽象查询的一个或多个逻辑字段转换为与数据库中的数据的物理表示一致的形式;并且其中,根据被修改的逻辑字段来验证所述至少一个相关数据对象包括:
执行对于数据库的抽象查询;并且
确定是否获得了有效的查询结果。
26.一种系统,包括:
多个相互相关的数据对象,包括具有至少一个相关数据对象的给定数据对象;
相关性目录,包含对于所述多个相互相关的数据对象的每个的至少一个记录,所述相互相关的数据对象包括所述至少一个相关数据对象,其中,每个记录描述了在至少两个相互相关的数据对象之间的相互相关性,并且其中,对于所述至少一个相关数据对象的记录描述了在给定数据对象和所述至少一个相关数据对象之间的相互相关性;以及
对象修改管理部件,被配置为:
接收对于修改给定数据对象的请求;
使用所述相关性目录来识别在给定的数据对象和所述至少一个相关数据对象之间的相互相关性;并且
如果在执行所请求的修改的情况下、所识别的相互相关性提供可能的不希望有的结果,则执行预定的动作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/005,436 US7359908B2 (en) | 2004-12-06 | 2004-12-06 | Techniques for managing interdependent data objects |
US11/005,436 | 2004-12-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1786955A CN1786955A (zh) | 2006-06-14 |
CN100440215C true CN100440215C (zh) | 2008-12-03 |
Family
ID=36575588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101248081A Expired - Fee Related CN100440215C (zh) | 2004-12-06 | 2005-11-15 | 用于管理相互相关的数据对象的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7359908B2 (zh) |
CN (1) | CN100440215C (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7606829B2 (en) * | 2005-04-14 | 2009-10-20 | International Business Machines Corporation | Model entity operations in query results |
US7783766B2 (en) * | 2006-06-30 | 2010-08-24 | Frank Busalacchi | Network clustering technology |
US7647337B2 (en) | 2006-06-30 | 2010-01-12 | Frank Busalacchi | Global information architecture |
US20080301154A1 (en) * | 2007-06-02 | 2008-12-04 | Joseph Vithayathil | User driven, interactive, intelligent and adaptive management and business intelligence data retreival and viewing information system and tool, that is database or data source abstracted and independent, and is network and connectivity abstracted and independent, with administrative support |
US8521501B2 (en) * | 2007-06-27 | 2013-08-27 | International Business Machines Corporation | Real-time performance modeling of application in distributed environment and method of use |
US10417586B2 (en) * | 2007-08-31 | 2019-09-17 | Red Hat, Inc. | Attaching ownership to data |
US8229952B2 (en) * | 2009-05-11 | 2012-07-24 | Business Objects Software Limited | Generation of logical database schema representation based on symbolic business intelligence query |
US9183248B2 (en) | 2009-06-09 | 2015-11-10 | Oracle International Corporation | Configuring object displays |
EP2336904A1 (en) * | 2009-12-18 | 2011-06-22 | Siemens Aktiengesellschaft | A method for safeguarding the integrity of a relational database in case of structural transaction execution |
US8789205B2 (en) * | 2010-04-21 | 2014-07-22 | Microsoft Corporation | Role-based graphical user interfaces |
US8930880B2 (en) * | 2010-09-29 | 2015-01-06 | Rockwell Automation Technologies, Inc. | Development of functional modules using a module bus |
US9952893B2 (en) * | 2010-11-03 | 2018-04-24 | Microsoft Technology Licensing, Llc | Spreadsheet model for distributed computations |
US8990175B2 (en) * | 2012-02-07 | 2015-03-24 | Dassault Systemes Americas Corp. | Related data dependencies |
US9507820B1 (en) | 2012-10-23 | 2016-11-29 | Dell Software Inc. | Data modeling system for runtime schema extensibility |
US8838654B1 (en) * | 2012-10-23 | 2014-09-16 | Dell Software Inc. | Data modeling system for runtime schema extensibility |
US9128975B2 (en) * | 2012-10-29 | 2015-09-08 | Anthony Leto | Systems and methods for determining data dependency for dynamic tiles |
US9946534B1 (en) * | 2016-01-15 | 2018-04-17 | Jpmorgan Chase Bank, N.A. | Techniques for automated database deployment |
US10331636B2 (en) * | 2016-09-23 | 2019-06-25 | International Business Machines Corporation | Interactive visualization |
US10606814B2 (en) * | 2017-01-18 | 2020-03-31 | Microsoft Technology Licensing, Llc | Computer-aided tracking of physical entities |
US11089105B1 (en) | 2017-12-14 | 2021-08-10 | Pure Storage, Inc. | Synchronously replicating datasets in cloud-based storage systems |
US10871918B2 (en) * | 2017-08-02 | 2020-12-22 | Intuit Inc. | Writing composite objects to a data store |
CN108038135A (zh) * | 2017-11-21 | 2018-05-15 | 平安科技(深圳)有限公司 | 电子装置、多表关联查询的方法及存储介质 |
CN108984623B (zh) * | 2018-06-14 | 2020-11-03 | 东软集团股份有限公司 | 数据查询条件生成方法、装置、存储介质和电子设备 |
US11507277B2 (en) * | 2019-06-25 | 2022-11-22 | Western Digital Technologies, Inc. | Key value store using progress verification |
US20210064775A1 (en) * | 2019-09-03 | 2021-03-04 | International Business Machines Corporation | Nlp workspace collaborations |
US12111794B2 (en) | 2019-12-03 | 2024-10-08 | Western Digital Technologies, Inc. | Replication barriers for dependent data transfers between data stores |
US11567899B2 (en) * | 2019-12-03 | 2023-01-31 | Western Digital Technologies, Inc. | Managing dependent delete operations among data stores |
US11409711B2 (en) | 2019-12-03 | 2022-08-09 | Western Digital Technologies, Inc. | Barriers for dependent operations among sharded data stores |
CN111949252B (zh) * | 2020-07-23 | 2023-09-08 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置和电子设备 |
US12079251B2 (en) * | 2022-10-06 | 2024-09-03 | Sap Se | Model-based determination of change impact for groups of diverse data objects |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734887A (en) * | 1995-09-29 | 1998-03-31 | International Business Machines Corporation | Method and apparatus for logical data access to a physical relational database |
CN1407453A (zh) * | 2001-08-29 | 2003-04-02 | 南宁美狐高科技有限公司 | 旅游线路数据对象的组织关联方法 |
CN1443327A (zh) * | 2000-07-20 | 2003-09-17 | 西门子公司 | 选择、处理和显示数据或数据对象的方法 |
CN1508728A (zh) * | 2002-12-18 | 2004-06-30 | �Ҵ���˾ | 使用元数据在关系数据库中创建多维数据集的方法和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5311424A (en) * | 1991-06-28 | 1994-05-10 | International Business Machines Corporation | Method and system for product configuration definition and tracking |
US6920467B1 (en) * | 1993-11-26 | 2005-07-19 | Canon Kabushiki Kaisha | Avoiding unwanted side-effects in the updating of transient data |
US6725227B1 (en) | 1998-10-02 | 2004-04-20 | Nec Corporation | Advanced web bookmark database system |
US6996558B2 (en) * | 2002-02-26 | 2006-02-07 | International Business Machines Corporation | Application portability and extensibility through database schema and query abstraction |
US8244702B2 (en) * | 2002-02-26 | 2012-08-14 | International Business Machines Corporation | Modification of a data repository based on an abstract data representation |
-
2004
- 2004-12-06 US US11/005,436 patent/US7359908B2/en active Active
-
2005
- 2005-11-15 CN CNB2005101248081A patent/CN100440215C/zh not_active Expired - Fee Related
-
2008
- 2008-01-24 US US12/019,458 patent/US7844618B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734887A (en) * | 1995-09-29 | 1998-03-31 | International Business Machines Corporation | Method and apparatus for logical data access to a physical relational database |
CN1443327A (zh) * | 2000-07-20 | 2003-09-17 | 西门子公司 | 选择、处理和显示数据或数据对象的方法 |
CN1407453A (zh) * | 2001-08-29 | 2003-04-02 | 南宁美狐高科技有限公司 | 旅游线路数据对象的组织关联方法 |
CN1508728A (zh) * | 2002-12-18 | 2004-06-30 | �Ҵ���˾ | 使用元数据在关系数据库中创建多维数据集的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20080140636A1 (en) | 2008-06-12 |
US7359908B2 (en) | 2008-04-15 |
CN1786955A (zh) | 2006-06-14 |
US20060122977A1 (en) | 2006-06-08 |
US7844618B2 (en) | 2010-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100440215C (zh) | 用于管理相互相关的数据对象的方法和系统 | |
US20240256763A1 (en) | Direct Rendering of a Web Application from a Database to a Web Browser | |
US10108813B2 (en) | Query conditions-based security | |
US6996558B2 (en) | Application portability and extensibility through database schema and query abstraction | |
EP1121639B1 (en) | Impact analysis of a model | |
US7188105B2 (en) | Query abstraction high level parameters for reuse and trend analysis | |
US7979456B2 (en) | Method of managing and providing parameterized queries | |
US20030154197A1 (en) | Flexible relational data storage method and apparatus | |
US6879989B2 (en) | Modification system for supporting localized data changes in a mobile device | |
US20010003455A1 (en) | Method, system and graphic user interface for entering and editing filter conditions for filtering a database | |
US20060116999A1 (en) | Sequential stepwise query condition building | |
CN1987861A (zh) | 处理数据库查询的系统和方法 | |
US20080016048A1 (en) | Intelligent condition pruning for size minimization of dynamic, just in time tables | |
US7765226B2 (en) | Method of generating database transaction statements based on existing queries | |
US20080016047A1 (en) | System and method for creating and populating dynamic, just in time, database tables | |
US20060218174A1 (en) | Method for coordinating schema and data access objects | |
US11556515B2 (en) | Artificially-intelligent, continuously-updating, centralized-database-identifier repository system | |
US20040193568A1 (en) | Abstract data model filters | |
US20050114309A1 (en) | Method for invoking and integrating multiple functional modules |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081203 Termination date: 20111115 |