SYSTEM AND METHOD FOR INTEGRATING ELECTRONIC STORAGE
FACILITIES
DESCRIPTION OF THE INVENTION
Field of the Invention
[001] The present invention relates to systems and methods for indexing information to facilitate the sharing of data between electronic storage facilities.
Background of the Invention
[002] In a business there may exist multiple electronic storage facilities (e.g., databases) for storing information on customers. For example, a company that provides multiple services to customers may have separate electronic storage facilities for each service provided to store customer information. As another example, a company with multiple locations may have separate electronic storage facilities at each company location.
[003] Oftentimes, the storage facilities within a company duplicate information and have no capability for sharing data. Therefore, when there is a need to update information, each storage facility must be accessed individually. Furthermore, the inability to share information limits the ability of a company to consolidate customer information and fully exploit targeted marketing opportunities.
[004] In addition, the inability of separate companies to efficiently share customer information with each other further limits their opportunities to consolidate customer information for targeted marketing opportunities. That is, separate businesses may store different information on the same customers. It would be advantageous if companies could efficiently share customer information.
[005] Consolidating data from multiple storage facilities into a single storage facility would take tremendous effort and require massive disk space. Therefore, it is desirable to provide a system and method for accessing information across multiple storage facilities.
SUMMARY OF THE INVENTION
[006] In accordance with the present invention, a method for sharing customer information among a plurality of electronic storage facilities is provided. The method comprises receiving identifying information on a customer from an electronic storage facility and determining whether an identifier exists in a master data store for the customer based on the received identifying information. The method further compπses assigning an identifier based on a result of the determination and cross-referencing the assigned identifier with the received identifying information.
[007] Additional objects and advantages of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The objects and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.
[008] It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
BRIEF DESCRIPTION OF THE DRAWINGS
[009] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one embodiment of the invention and together with the description, serve to explain the principles of the invention.
[010] Fig. 1 illustrates an environment for practicing the present invention.
[011] Fig. 2 illustrates an exemplary MDNA index.
[012] Fig. 3 illustrates a method of assigning a CDNA ID.
[013] Fig. 4 illustrates a method of retrieving data source IDs and corresponding customer IDs.
[014] Fig. 5 illustrates exemplary customer information stored at an electronic storage facility.
[015] Fig. 6 illustrates a method of deleting a customer ID from the MDNA index.
[016] Fig. 7 illustrates an exemplary state of an MDNA index.
DESCRIPTION OF THE EMBODIMENTS
[017] Reference will now be made in detail to the present embodiment of the invention, an example of which is illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
[018] Fig. 1 illustrates an environment 100 in which to practice the method of the present invention. The environment 100 comprises multiple electronic storage facilities 110, 120, 130 for storing customer information. The customer information may be stored by a company that maintains multiple storage facilities. In this case, data sources 115, 125, and 135 may correspond to separate business units within a company. Alternatively, data sources 115, 125, and 135 may correspond to multiple companies that desire to share information with each other. The data sources 115, 125, and 135 are connected via a communication link 140, which also connects the data sources 115, 125, 135 to a CDNA system 145. In an alternate embodiment, the data sources 115, 125, and 135 and the CDNA system 145 may be connected using communications techniques used to provide wireless transmission, for example, satellite. Furthermore, the data sources 115, 125, 135, and the CDNA system 145 may communicate via a COBRA (Common Object Request Broker Architecture) framework.
[019] The CDNA system 145 of the present invention creates one central repository, the master DNA (MDNA) index 155, which enables multiple intra- and/or inter-company electronic storage facilities 110, 120, 130 to share
data by assigning to each customer and storing in the master DNA (MDNA) index 155 a unique identification number (i.e., a customer DNA (CDNA) number). Each data source also assigns to each customer and stores in the corresponding electronic storage facility a unique identification number (i.e., a customer ID) for uniquely identifying the customer information stored in the electronic storage facility. Furthermore, each electronic storage facility is identified by a data storage identifier, i.e., data storage ID.
[020] For each electronic storage facility that stores customer information, the master DNA (MDNA) index 155 cross references the CDNA ID of the customer with the data storage ID and corresponding customer ID for retrieving the customer information stored in the electronic storage facility. As mentioned above, the customer ID uniquely identifies the customer information stored in the electronic storage facility. For example, when an electronic storage facility stores customer information in a database, a primary key uniquely identifies the customer information and therefore may serve as the customer ID in the CDNA system 145. The CDNA system 145 of the present invention may also cross-reference the CDNA ID of a customer with other information (e.g., name, address, credit card number, phone number, email address, etc.) regarding the customer.
[021] Because of disk space concerns and data coordination concerns, the MDNA index 155 does not store all the information on a customer that the electronic storage facilities 110, 120, 130 may store on the customer. Instead, the MDNA index 155 stores enough information to allow for the retrieval of the desired information from the electronic storage facilities 110, 120, 130, as described below in greater detail. As stated above, the MDNA index 155 may also store other information about a customer to serve as a definitive source of common data about the customer (e.g., address, phone number, email, etc.).
[022] Fig. 2 illustrates an exemplary MDNA index 155 comprising multiple tables 210, 230, 250 consisting of multiple records 215, 235, 255, having multiple fields 220, 240, 260, respectively. A method for building a MDNA index 155 will be described in greater detail below. Each record in a
table consists of information about a particular customer. For example, each record in the Cross Reference Table 210 consists of the storage location of information on a customer. For instance, information on a customer with a CDNA ID of 3 is stored in electronic storage facility 120; information on a customer with a CDNA ID of 105 is stored in electronic storage facility 110, and so on.
[023] Furthermore, each record in table 210 provides the customer ID for retrieving the customer information from the electronic storage facility where the customer information is stored. For example, table 210 illustrates that customer ID "CBK01" will retrieve information on a customer with a CDNA ID of 71 from electronic storage facility 120.
[024] Still further, there may be multiple records with the same CDNA ID. This may occur because information regarding a customer is stored in multiple electronic storage facilities. This may also occur because the customer may be identified by more than one customer ID within the same electronic storage facility. As shown in table 210, there exist two records for a customer corresponding to a CDNA ID of 3, indicating that information on the customer is stored in multiple electronic storage facilities identified by data storage identifiers 120 and 130. Furthermore, there exists two records for a customer with a CDNA ID of 71 , indicating that information on the customer is stored in a single electronic storage facility 120 under two different customer IDs, i.e., CBK01 and RYT51.
[025] When a request for information is received, the CDNA system 145 may use table 210 stored in the CDNA index 155 to determine where information on a customer is stored and returns the customer ID provided by table 210. Information on the customer may then be retrieved from the electronic storage facility storing the customer information using the customer ID. A method for retrieving information from the CDNA index 155 will be discussed in greater detail below with reference to Fig. 4. By providing a table that provides information on where customer information is stored and further providing information on how to retrieve the customer information, the CDNA
system 145 is able to facilitate the sharing of data between multiple electronic storage facilities.
[026] That the CDNA system 145 facilitates the sharing of data between multiple electronic storage facilities is illustrated by the following example. If information on a particular customer (e.g., customer "A") is stored in electronic storage facility 120 and information on another customer (e.g., customer "B") is stored in data source 110, the CDNA system 145 can facilitate the sharing of this data by first generating a CDNA ID, e.g., 71 , for customer A and a CDNA ID, e.g., 235, for customer B and storing these CDNA IDs in the MDNA index 155, as shown in Fig. 2. The CDNA system 145 further stores in the MDNA index 155 the customer IDs needed to retrieve the customer information stored in the electronic storage facilities. That is, if customer ID "CBK01" retrieves information regarding customer A stored in electronic storage facility 120, then, as illustrated in Fig. 2, the MDNA index 155 cross references with customer A, having a CDNA ID of 71 , the electronic storage facility that contains information on customer A and the corresponding customer ID for retrieving information on customer A stored in the electronic storage facility. Similarly, the MDNA index 155 cross references with customer B, having a CDNA ID of 235, the electronic storage facility that contains information on customer B and the corresponding customer ID for retrieving information on customer B stored in the electronic storage facility. Based on the information stored in the MDNA index 155 of Fig. 2, it is readily determined that information on customer A, having a CDNA ID of 71 , is stored in data source 120. Similarly, it is readily determined that information on customer B, having a CDNA ID of 235, is stored in data source 110. To access the information on customer A stored in data source 120, the CDNA system 145 provides the data source identifier 120 and the customer ID CBK01. To access the information on customer B stored in data source 140, the CDNA system 145 provides the data source identifier 110 and the customer ID, "Jane Doe."
[027] Since the CDNA index 155 may further cross-reference the CDNA ID of a customer with other core information (e.g., name, address, etc.)
regarding the customer, the MDNA index 155 may comprise additional tables such as a Customer Name Table 250 and a Customer Phone Table 230 as shown in Fig. 2. Other tables may also exist in the MDNA index 155. For example, a customer address table that cross-references a CDNA ID with an address may exist in the MDNA index 145. Fields of the customer address table may include a street number field, a street name field, a city name field, a state name field, and a zip code field. In addition, a customer email table or a customer credit card table may exist in the MDNA index 155. The customer email table may cross-reference a CDNA ID with an email address. The customer credit card table may cross-reference a CDNA ID with a credit card number.
[028] As discussed above, the CDNA system 145 assigns a unique identification number, a CDNA ID, to each customer referenced in the MDNA index 155. Once a CDNA ID has been assigned to a customer, that number is thereafter used to reference data associated with that customer in the MDNA index 155. Fig. 3 illustrates an exemplary method of generating a CDNA ID. The process of creating a CDNA ID begins when a data source 115, 125, 135 makes a request 302 to add a customer ID number to the MDNA index 155 by supplying its data storage ID, the customer ID, and customer data to the CDNA system 145. The data storage ID is an identifier for the requesting system. The customer data may consist of attributes such as the customer's name and address.
[029] The request to add a customer ID to the MDNA index 155 may be initiated after the data source 115, 125, 135 stores new information regarding a customer in its electronic storage facility. For example, some data sources 115, 125, 135 assign different customer IDs each time a customer completes a transaction. For instance, a company that sells products may assign a new customer ID number each time a product is sold, regardless of whether a customer purchasing the product has previously purchased a product from the company. Therefore, each time the same customer buys a product from the company, the company assigns a new customer ID number for the transaction, even though the customer is the
same. Thus, a customer may have several different customer IDs corresponding to the customer stored in a company's electronic storage facility. Fig. 5 illustrates an exemplary table 500 which may be stored in an electronic storage facility. The table consists of records 510, having indexes 520. Each record corresponds to a new transaction, i.e., the sale of a product. Therefore, each time a customer purchases a product, the company stores in its electronic storage facility 110, 120, 130 a record having a transaction number, the customer's name and address, and the product sold, for example. Each time a record in created, the company requests storage of the transaction number, i.e., the customer ID, in the MDNA index 155. As illustrated in Fig. 5, the same customer may have multiple customer IDs. For example, customer "Susan Hill" has customer IDs 201 and 203. Other data sources 115, 125, 135 may provide one customer ID for the same customer and update information on the customer referencing the customer ID.
[030] At steps 305 and 310, the CDNA system 145 checks the data storage ID to determine whether the requesting system is an authorized system. If the requesting system is not an authorized system, i.e., "NO" at step 310, the CDNA system 145 denies access to the MDNA index 155. If the requesting system is an authorized system, i.e., "YES" at step 310, then the CDNA system 145 checks the customer ID to determine whether the customer ID exists in the MDNA index 155 at step 320. If the customer ID already exists in the MDNA index 155, i.e., "YES" at step 325, then the CDNA system 145 returns a message informing the requesting system that the customer ID already exists.
[031] If the customer ID does not exist in the MDNA index 155, i.e., "NO" at step 325, then the CDNA system 145 transforms and cleans the customer data to a standardized form at step 340. For example, assume a data source supplies customer data that reads: "123 Main St. Apt. 354." The CDNA system 145 may transform and clean the customer data to read: "123 Main Street 354." As another example, assume a data source supplies customer data including a phone number that reads: "1-(234)-567-8901." The CDNA system 145 may transform and clean the phone number to read:
"12345678901. At step 350, the CDNA system 145 compares the standardized customer data with existing customer data in the MDNA index 155 to determine whether a CDNA ID exists for the customer. The standardizing and comparison process may be performed using Trillium.
[032] If the CDNA system 145 matches the standardized customer data with customer data already existing in the CDNA index 155, i.e., "YES" at step 355, then the CDNA ID is retrieved for that customer and cross- referenced in the MDNA index 155 with the data storage ID and customer ID provided by the requesting system at step 360. For example, the CDNA system 145 may create a record in table 210, for example, using the CDNA ID retrieved and the data storage ID and customer ID provided by the requesting system.
[033] If there is no match, i.e., "NO" at step 355, then the standardized customer data is added to the MDNA index 155 and the CDNA system 145 assigns a CDNA ID for the customer at step 365. A CDNA ID may be assigned sequentially or may be derived using an algorithm based on the customer data, for example. The CDNA ID and the customer ID are then cross referenced in the MDNA index 145 at step 370. An exemplary program specification for performing the above steps is illustrated in the appendix by an addindex() function.
[034] The MDNA index is continually updated each time a subscribing data source creates and stores a new customer ID or other information related to a customer. A subscribing data source is a data source 115, 125, 135 that has authority to add data to and retrieve data from the MDNA index 155. Each time a subscribing data source creates and stores a new customer ID or other information, the data source transmits information to the CDNA system 145 for storage in the MDNA index 155. If a CDNA ID already exists for a customer, then the CDNA systems cross-references the CDNA ID in the MDNA index 155 with the data source ID and the customer ID provided by the requesting system, i.e., step 360 in Fig. 3.
[035] A subscribing data source may also request to delete a customer ID from the MDNA index 155. As illustrated in Fig. 6, a data source
initiates a delete request by transmitting its data storage ID and the customer ID to be deleted to the CDNA system 145. At steps 605 and 610, the CDNA system 145 checks the data storage ID to determine whether the requesting system is an authorized system. If the requesting system is not an authorized system, i.e., "NO" at step 610, the CDNA system 145 denies access to the MDNA index 155. If the requesting system is an authorized system, i.e., "YES" at step 610, then the CDNA system 145 checks the customer ID to determine whether the customer ID exists in the MDNA index 155 at step 620. If the customer ID does not exist in the MDNA index 155, i.e., "NO" at step 625, then the CDNA system 145 returns a message to the requesting data source that the deletion was unsuccessful at step 630. If the customer ID exists in the MDNA index 155, i.e., "YES" at step 625, then the CDNA system 145 retrieves the CDNA ID and deletes the customer ID from the MDNA index 155 at step 635.
[036] Processing proceeds to step 640, where the CDNA system 145 uses the CDNA ID, to determine whether other customer IDs are cross- referenced with the CDNA ID in the MDNA index 155. If there are no other customer IDs, i.e., "NO" at step 640, then the customer data associated with the CDNA ID is deleted from the MDNA index 155. If there exists other customer IDs, i.e., "YES" at step 640, then the other customer IDs and other customer data stored in the MDNA index 155 are retained and processing ends. An exemplary program specification for performing the above steps is illustrated in the appendix by a deleteindex() function.
[037] Using the MDNA index 155, a subscribing data source may retrieve information on customers stored in other data sources. Fig. 4 illustrates the steps performed to retrieve information on a customer from other data sources. The process starts when a requesting system transmits 402 a data storage ID and a customer ID to the CDNA system 145. At steps 405 and 410, the CDNA system 145 checks the data storage ID to determine whether the requesting system is an authorized system. If the requesting system is not an authorized system, i.e., "NO" at step 410, the CDNA system 145 denies access to the requesting system at step 415. If the requesting
system is an authorized system, i.e., "YES" at step 410, the CDNA system 145 checks the customer ID to determine whether the customer ID exists in the MDNA index 155 at step 420. If the customer ID does not exists in the MDNA index 155, i.e., "NO" at step 425, then the CDNA system 45 returns an error message to the requesting system.
[038] If the customer ID exists in the MDNA index 155, i.e., "YES" at step 425, then the CDNA system 145 cross references the customer ID to determine the CDNA ID for the customer at step 435. The MDNA index 145 is then queried at step 440 to determine if other customer IDs for different data sources exist for the customer having the CDNA ID determined at step 435. If other customer IDs exist, i.e., "YES" at step 445, then the CDNA system 145 returns a list of customer IDs and corresponding data storages IDs to the requesting system at step 455. Otherwise, the CDNA system may return a response indicating that no other customer IDs exist at step 450. An exemplary program specification for performing the above steps is illustrated in the appendix by a getindex() function.
[039] As discussed above, the MDNA index 155 may cross- reference the CDNA IDs of customers with other core information (e.g., name, address, etc.) regarding the customer. A data source 115, 125, 135 may transmit information to the CDNA system 145 to request a change of this core information. For example, if a customer's address changes, a data source may transmit a request to the CDNA system 145 to update the customer's address in the MDNA index 155. The CDNA system 145 may also inform other data sources via communication link 140 of the change to a customer's core information. An exemplary program specification for performing the above steps is illustrated in the appendix by a modifycustomer() function.
[040] An additional feature of the CDNA system 145 is the periodic housekeeping of the tables in the MDNA index 155 to remove multiple CDNA IDs for a customer. A customer may have multiple CDNA IDs because the CDNA system 145 was unable to match the standardized customer data at step 355 with existing data in the MDNA index 155 due to an initial misspelling, for example, in the customer data. Because the CDNA system
145 may be unable to match the standardized customer data with existing data in the MDNA index 155, a new CDNA ID may be assigned to a customer that may already exist in the MDNA index 155.
[041] Therefore, to ensure that customers have only one CDNA ID in the MDNA index 155, the CDNA system 145 may query electronic storage facilities, retrieving information on the customers to possibly match the customers in the MDNA index 155. Fig. 7 illustrates an example of this process. Assume the MDNA index 155 comprises a customer name table 710 including a record for "John Doe" having a CDNA ID of 518 and a record for "James Doe" having a CDNA ID of 620. The MDNA index 155 further includes a cross reference table 705 comprising records that include the location of information (i.e., data storage facility 120 and 130) on "John Doe" and "James Doe" and the corresponding customer ID. Assume that "John Doe" and "James Doe" are the same customer, however, data source 120 mistakenly stored the name "James Doe" in its data storage facility 130 when it created a record for "John Doe". Therefore, the CDNA system 145 assigned a new CDNA ID for "James Doe" when the data storage facility 130 transmitted the customer data (i.e., "James Doe"), the customer ID, and its data storage identifier to the CDNA system 145. The CDNA system 145 may solve this problem by retrieving information from the data storage facilities on "John Doe" and "James Doe." Table 720 and 730 illustrates data stored in data storage facilities 120 and 130, respectively. When the CDNA system 145 retrieves the social security number (SSN) from the data storage facilities for "John Doe" and "James Doe" using the customer IDs stored in the MDNA index 155, the CDNA system 145 can determine that "John Doe" and "James Doe" are the same customer because they have the same address and same SSN. The CDNA system 145 may then assign a common CDNA ID to all records from "John Doe" and "James Doe" in the MDNA index 155.
[042] Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples
be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.