Nested hierarchical rollups by level using a normalized table
AssigneeOracle International Corporation
InventorShane Robert Vermette
Life of this patent
Estimating the term…
Abstract
Nested hierarchies can be efficiently analyzed by normalizing a portion of the hierarchy as defined by a limiting factor for the hierarchy. In a project hierarchy wherein each project contains a task hierarchy, each task hierarchy can be normalized. Further, the projects can be assigned to levels such that data for each level can be indexed, partitioned, or otherwise differentiated. The data then can be efficiently rolled up by level using the partially normalized hierarchy.
Claims29
A method of obtaining information from a nested hierarchy of data stored in a database, the method comprising:
- defining, using a computer processor, levels of the nested hierarchy of data, wherein the nested hierarchy of data includes a first hierarchy of data which includes data for a plurality of projects which includes a first project including a task linking to a second project which is in a shallower level of the hierarchy of data than the second project, wherein the nested hierarchy of data includes a second hierarchy of data which includes a plurality of tasks, and wherein each of the plurality of tasks in the second hierarchy of data can only have one direct ancestor;
- assigning each of the plurality of projects to a shallowest possible level of the nested hierarchy of data in order to minimize a number of levels of the nested hierarchy of data to be analyzed and each of the plurality of tasks based on one or more ancestors of each task;
- analyzing the nested hierarchy of data to determine link data for each of the links between the plurality of projects and the plurality of tasks;
- distinguishing, using the computer processor, data for the nested hierarchy of data by separately indexing the data of each level of the nested hierarchy of data;
- normalizing, using the computer processor, task data for each project in a level of the nested hierarchy of data by adding the determined link data for each of the links between the plurality of projects and the plurality of tasks to a partially normalized table, wherein tasks in a level are only normalized if the tasks are in the same project;
- in response to receiving a request for task information for at least one of the plurality of tasks, for each level in the nested hierarchy of data, rolling up, using the computer processor, the normalized task data for each project at a current level;
- after rolling up the normalized task data for each project at the current level, rolling up, using the computer processor, project data for a project at the current level to any task at a shallower level that links to that project;
- and
- after rolling up data for the defined levels of the nested hierarchy of data, reporting, the computer processor, the rolled up data in response to the request.
A system for obtaining information from a nested hierarchy of data, comprising:
- a data storage device operable to store data for the nested hierarchy of data, the nested hierarchy of data including a first hierarchy of data including a plurality of projects, each project further including a second hierarchy of tasks;
- and
- an application server in communication with the data storage device and including instructions that when executed cause the application server to:
- define levels of the nested hierarchy of data, wherein the plurality of projects includes a first project including a task linking to a second project which is in a shallower level of the nested hierarchy of data than the second project, wherein the nested hierarchy of data includes a second hierarchy of data which includes a plurality of tasks, and wherein each of the plurality of tasks in the second hierarchy of data can only have one direct ancestor;
- assign each of the plurality of projects to a shallowest possible level of the nested hierarchy of data in order to minimize a number of levels of the nested hierarchy of data to be analyzed and each of the plurality of tasks based on one or more ancestors of each task;
- analyze the nested hierarchy of data to determine link data for each of the links between the plurality of projects and the plurality of tasks;
- distinguish data for the nested hierarchy of data by separately indexing the data of each level of the nested hierarchy of data;
- normalizing task data for each project in a level of the nested hierarchy of data by adding the determined link data for each of the links between the plurality of projects and the plurality of links to a partially normalized table, wherein tasks in a level are only normalized if the tasks are in the same project;
- in response to receiving a request for task information for at least one of the plurality of tasks, for each level in the nested hierarchy of data, roll up the normalized task data for each project at a current level;
- after rolling up the normalized task data for each project at the current level, roll up project data for a project at the current level to any task at a shallower level of the nested hierarchy of data that links to that project;
- and
- after rolling up data for the defined levels of the nested hierarchy of data, report the rolled up data in response to the request.
A non-transitory computer readable medium comprising a set of instructions stored therein which, when executed by a processor, causes the processor to obtain information from a nested hierarchy of data stored in a database by:
- defining levels of the nested hierarchy of data, wherein the nested hierarchy of data includes a first hierarchy of data which includes a plurality of projects which includes a first project including a task linking to a second project which is in a shallower level of the hierarchy of data than the second project, wherein the nested hierarchy of data includes a second hierarchy of data which includes a plurality of tasks, and wherein each of the plurality of tasks in the second hierarchy of data can only have one direct ancestor;
- assigning each of the plurality of projects to a shallowest possible level of the nested hierarchy of data of the nested hierarchy of data in order to minimize a number of levels of the nested hierarchy of data to be analyzed and each of the plurality of tasks based on one or more ancestors of each task;
- analyzing the nested hierarchy of data to determine link data for each of the links between the plurality of projects and the plurality of tasks;
- distinguishing data for the nested hierarchy of data by separately indexing the data of each level of the nested hierarchy of data;
- normalizing task data for each project in a level of the nested hierarchy of data by adding the determined link data for each of the links between the plurality of projects and the plurality of tasks to a partially normalized table, wherein tasks in a level of the nested hierarchy of data are only normalized if the tasks are in the same project;
- in response to receiving a request for task information for at least one of the plurality of tasks, rolling up the normalized task data for each project at a current level for each level in the nested hierarchy of data;
- rolling up project data for a project at the current level to any task at a shallower level of the nested hierarchy of data that links to that project, after rolling up task data for each project at the current level;
- and
- reporting the rolled up data in response to the request, after rolling up data for the defined levels of the nested hierarchy of data.
Dependencies are inferred from the claim text.