IP Library Granted Patent US 7,672,966
Granted Patent B2
US 7,672,966 · App. 10/881,305 · Granted Mar 2, 2010

Adding extrinsic data columns to an existing database schema using a temporary column pool

Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,672,966
App. No.
10/881,305
Granted
Mar 2, 2010
Kind
B2
Abstract

A facility for storing extrinsic data is described. The facility receives data associated with a distinguished extrinsic data item of a specified type. The facility determines whether a flexible column directory table contains an entry mapping the distinguished extrinsic data item to a flexible column pool column. If the flexible column directory table does not contain an entry mapping the distinguished extrinsic data item to a flexible column pool column, the facility creates an entry in the flexible column directory table that maps the distinguished extrinsic data item to an available flexible column pool column of the specified type. The facility then copies the received data to the flexible column pool column mapped from the distinguished extrinsic data item.

Claims (91)

1. A computer-readable storage medium whose contents cause a computing system to perform a method for storing extrinsic data in an application, comprising:

receiving data associated with a particular extrinsic data item of a specified type, extrinsic data items not being among a set of intrinsic data items for which the application can store data when in an initial state;

accessing a column directory table containing zero or more entries, each entry mapping a particular extrinsic data item to a column pool column;

determining whether the column directory table contains an entry mapping the particular extrinsic data item to a column pool column;

if the column directory table does not contain an entry mapping the particular extrinsic data item to a column pool column:

selecting an available column pool column, wherein the available column pool column has a specified type identical to the specified type of the particular extrinsic data item, wherein the available column pool column of the specified type existed at the time the receiving of data associated with the particular extrinsic data item of the specified type occurred, and wherein the available column pool column of the specified type is contained in a table that has a particular schema at the time the receiving of data associated with the particular extrinsic data item of the specified type occurred; and

creating an entry in the column directory table that maps the particular extrinsic data item to the available column pool column of the specified type;

determining that the particular extrinsic data item is a multivalued extrinsic data item and that the data received for the particular extrinsic data item includes multiple values;

in response to determining that the particular extrinsic data item is a multivalued extrinsic data item:

selecting an association table key to represent the particular extrinsic data item in an association table; and

for each value of the data received for the particular extrinsic data item, storing a row in the association table, the stored row containing (1) the selected association table key and (2) an indication of the value;

without altering the particular schema of the table containing the available column pool column of the specified type, copying the received data to the column pool column that is mapped to the particular extrinsic data item by the entry created in the column directory table, wherein the received data copied to the column pool column that is mapped to the particular extrinsic data item by the entry created in the column directory table is the selected association table key;

receiving a request to access the multiple values of the particular extrinsic data item, wherein the request includes an identifier of the particular extrinsic data item; and

in response to the received request:

accessing the column directory table;

based on the identifier of the particular extrinsic data item, identifying the entry in the column directory table mapping the particular extrinsic data item to the column pool column;

based on the identified entry, accessing the column pool column;

identifying the association table key in the column pool column that represents the particular extrinsic data item in the association table;

accessing the association table; and

based on the identified association table key, accessing the multiple values of the particular extrinsic data item in the association table.

2. The computer-readable storage medium of claim 1 wherein the received data is also associated with a particular entity, and wherein the received data is copied to a field in the column pool column that is mapped to the particular extrinsic data item by the entry created in the column directory table, wherein the field corresponds to the particular entity.

3. The computer-readable storage medium of claim 1 , the method further comprising, if the column directory table does not contain an entry mapping the particular extrinsic data item to a column pool column, identifying an available column pool column of the specified type using a column inventory table.

4. The computer-readable storage medium of claim 1 , the method further comprising generating a report that includes both (1) data for the particular extrinsic data item retrieved from the column pool column that is mapped to the particular extrinsic data item by the entry created in the column directory table and (2) data for an intrinsic data item not contained in any column pool column.

5. The computer-readable storage medium of claim 1 , the method further comprising:

receiving weights for the received values of the particular extrinsic data item; and

for each of the values of the data received for the particular extrinsic data item, storing the weight received for the value in the row of the association table containing an indication of the value.

6. The computer-readable storage medium of claim 1 wherein each indication of the value of the data received for the particular extrinsic data item stored in the association table explicitly contains the value.

7. The computer-readable storage medium of claim 1 wherein each indication of the value of the data received for the particular extrinsic data item stored in the association table contains a key usable to look up the value in a separate table.

8. The computer-readable storage medium of claim 1 , the method further comprising:

determining that the particular extrinsic data item is a weighted extrinsic data item;

receiving weights for the received values of the particular extrinsic data item;

in response to determining that the particular extrinsic data item is a weighted extrinsic data item, allocating an additional column pool column to contain weights for values of the particular extrinsic data item; and

copying the received weights to the allocated additional column pool column.

9. The computer-readable storage medium of claim 8 , the method further comprising generating a report that includes both (1) data for the particular extrinsic data item retrieved from the column pool column that is mapped to the particular extrinsic data item by the entry created in the column directory table and (2) the weights for the values of the particular extrinsic data item retrieved from the allocated additional column pool column.

10. A method for storing extrinsic data in an application that is performed by one or more computing systems, each computing system having a processor and memory, the method comprising:

receiving data associated with a particular extrinsic data item of a specified type, extrinsic data items not being among a set of intrinsic data items for which the application can store data when in an initial state;

accessing a column directory table containing zero or more entries, each entry mapping a particular extrinsic data item to a column pool column;

determining whether the column directory table contains an entry mapping the particular extrinsic data item to a column pool column;

if the column directory table does not contain an entry mapping the particular extrinsic data item to a column pool column:

selecting an available column pool column, wherein the available column pool column has a specified type identical to the specified type of the particular extrinsic data item, wherein the available column pool column of the specified type existed at the time the receiving of data associated with the particular extrinsic data item of the specified type occurred, wherein the available column pool column of the specified type is contained in a table that has a particular schema at the time the receiving of data associated with the particular extrinsic data item of the specified type occurred; and

creating an entry in the column directory table that maps the particular extrinsic data item to the available column pool column of the specified type;

determining that the particular extrinsic data item is a multivalued extrinsic data item and that the data received for the particular extrinsic data item includes multiple values;

in response to determining that the particular extrinsic data item is a multivalued extrinsic data item:

selecting an association table key to represent the particular extrinsic data item in an association table; and

for each value of the data received for the particular extrinsic data item, storing a row in the association table, the stored row containing (1) the selected association table key and (2) an indication of the value; and

without altering the particular schema of the table containing the available column pool column of the specified type, copying the received data to the column pool column that is mapped to the particular extrinsic data item by the entry created in the column directory table, wherein the received data copied to the column pool column that is mapped to the particular extrinsic data item by the entry created in the column directory table is the selected association table key;

receiving, by the one or more computing systems, a request to access the multiple values of the particular extrinsic data item, wherein the request includes an identifier of the particular extrinsic data item; and

in response to the received request:

accessing, by the one or more computing systems, the column directory table;

based on the identifier of the particular extrinsic data item, identifying, by the one or more computing systems, the entry in the column directory table mapping the particular extrinsic data item to the column pool column;

based on the identified entry, accessing, by the one or more computing systems, the column pool column;

identifying, by the one or more computing systems, the association table key in the column pool column that represents the particular extrinsic data item in the association table;

accessing, by the one or more computing systems, the association table; and

based on the identified association table key, accessing, by the one or more computing systems, the multiple values of the particular extrinsic data item in the association table.

11. A computer-readable storage medium whose contents cause a computing system to perform a method for storing extrinsic data in an application, comprising:

receiving data associated with a particular extrinsic data item of a specified type, extrinsic data items not being among a set of intrinsic data items for which the application can store data when in an initial state;

accessing a column directory table containing zero or more entries, each entry mapping a particular extrinsic data item to a column pool column;

determining whether the column directory table contains an entry mapping the particular extrinsic data item to a column pool column;

if the column directory table does not contain an entry mapping the particular extrinsic data item to a column pool column:

selecting an available column pool column, wherein the available column pool column has a specified type identical to the specified type of the particular extrinsic data item, wherein the available column pool column of the specified type existed at the time the receiving of data associated with the particular extrinsic data item of the specified type occurred, and wherein the available column pool column of the specified type is contained in a table that has a particular schema at the time the receiving of data associated with the particular extrinsic data item of the specified type occurred; and

creating an entry in the column directory table that maps the particular extrinsic data item to the available column pool column of the specified type;

without altering the particular schema of the table containing the available column pool column of the specified type, copying the received data to the column pool column that is mapped to the particular extrinsic data item by the entry created in the column directory table;

receiving a request to access the data associated with the particular extrinsic data item, wherein the request includes an identifier of the particular extrinsic data item;

in response to the received request:

accessing the column directory table;

based on the identifier of the particular extrinsic data item, identifying the entry in the column directory table mapping the particular extrinsic data item to the column pool column;

based on the identified entry, accessing the column pool column; and

accessing the data associated with the particular extrinsic data item in the column pool column; and

in response to receiving an indication that the particular extrinsic data item has been removed, removing the entry in the column directory table that maps the particular extrinsic data item to the available column pool column of the specified type.

12. A method for storing extrinsic data in an application that is performed by one or more computing systems, each computing system having a processor and memory, the method comprising:

receiving data associated with a particular extrinsic data item of a specified type, extrinsic data items not being among a set of intrinsic data items for which the application can store data when in an initial state;

accessing a column directory table containing zero or more entries, each entry mapping a particular extrinsic data item to a column pool column;

determining whether the column directory table contains an entry mapping the particular extrinsic data item to a column pool column;

if the column directory table does not contain an entry mapping the particular extrinsic data item to a column pool column:

selecting an available column pool column, wherein the available column pool column has a specified type identical to the specified type of the particular extrinsic data item, wherein the available column pool column of the specified type existed at the time the receiving of data associated with the particular extrinsic data item of the specified type occurred, and wherein the available column pool column of the specified type is contained in a table that has a particular schema at the time the receiving of data associated with the particular extrinsic data item of the specified type occurred; and

creating an entry in the column directory table that maps the particular extrinsic data item to the available column pool column of the specified type;

without altering the particular schema of the table containing the available column pool column of the specified type, copying the received data to the column pool column that is mapped to the particular extrinsic data item by the entry created in the column directory table;

receiving, by the one or more computing systems, a request to access the data associated with the particular extrinsic data item, wherein the request includes an identifier of the particular extrinsic data item;

in response to the received request:

accessing, by the one or more computing systems, the column directory table;

based on the identifier of the particular extrinsic data item, identifying, by the one or more computing systems, the entry in the column directory table mapping the particular extrinsic data item to the column pool column;

based on the identified entry, accessing, by the one or more computing systems, the column pool column; and

accessing, by the one or more computing systems, the data associated with the particular extrinsic data item in the column pool column; and

in response to receiving an indication that the particular extrinsic data item has been removed, removing the entry in the column directory table that maps the particular extrinsic data item to the available column pool column of the specified type.

13. A method for accessing extrinsic data in an application that is performed by one or more computing systems, each computing system having a processor and memory, the method comprising:

receiving, by the one or more computing systems, a request to access data associated with a particular extrinsic data item, wherein the request includes an identifier of the particular extrinsic data item, the particular extrinsic data item not among a set of intrinsic data items for which the application can store data when in an initial state; and

in response to the received request:

accessing, by the one or more computing systems, a column directory table containing one or more entries, each entry mapping a particular extrinsic data item to a column pool column;

based on the identifier of the particular extrinsic data item, identifying, by the one or more computing systems, an entry in the column directory table mapping the particular extrinsic data item to a column pool column;

based on the identified entry, accessing, by the one or more computing systems, the column pool column; and

accessing, by the one or more computing systems, the data associated with the particular extrinsic data item in the column pool column.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2004
From: MOLNAR, LADISLAU; CONLAN, PATRICK; SOUROV, ALEXANDER
To: MICROSOFT CORPORATION
Reel/Frame 015364/0465 →
Continuity (1)
Related Publication 20060004686A1 · Jan 5, 2006