Patent ID: 7571192

Claim:
A computer-implemented method for updating a database using a multi-dimensional data model in which data corresponding to the database are organized in multi-dimensional data blocks, each data block having summary information associated therewith corresponding to a current state of evolution of the associated data block, the method comprising: maintaining dependency information in the data model which identifies data dependencies within and among the data blocks; maintaining a list of change entries which identifies changes made to particular ones of the data blocks and times at which the changes were made; receiving a request to apply a change entry to a data block; applying the change entry to the data block, including generating a dependency list of data blocks whose data depends directly or indirectly from the updated data block; processing the data blocks in the dependency list in accordance with a dependency update algorithm to update the data blocks in the dependency list; and updating the database with reference to the dependency information, the summary information, and the list of change entries; wherein processing includes: determining whether a cell with a user input value has any dependent values in one or more other blocks; when the cell with the user input value has a dependent value in another block, creating a compensating derived change list entry that adjusts the dependent values in the one or more other blocks; determining whether a cell with a user input value has any dependent values in one or more other blocks that are user input and are derived; when a data value is modified and depends on both the user input derived values, assigning the compensating derived change list entry to only an innermost user input derived value; determining whether all values depending from the cell with the user input value are in the same block; when all values depending from the cell with the user input value are determined to be in the same block, reserving additional disk space to indicate that the derived data value has been modified by a user input; and ensuring that the user input value is not overridden by a derived value.