Abstract:
A method and system are provided for 1) dynamically building a relational database (DB), also known as the “Dynamic Data Model” (DDM), 2) defining and capturing “user defined attributes” (UDAs) and populating the DB with these values, and 3)querying a DB of UDAs dynamically by interacting with the results of the queries to refine and improve the query. UDAs define specific properties or characteristics of a data element (e.g., HTML is an attribute value for the Format of an Advertisement or Media, Software is an attribute value for the Product Category). UDAs allow the user to categorize and compare things that they were unable to categorize and compare before, thereby providing a more robust way to learn from historical experience.  
     Once attributes are defined and captured (selected), the user utilizes the interactive querying process to determine which UDA(s) have had the most impact on the measured result. For example, in advertising, the user can compare click-through rates or conversion rates (e.g., email registrations or sales) assuming different creative and placement attributes, thereby providing them with insight on how to formulate the next ad campaign.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS  
       [0001]    Embodiments of the present invention relate to U.S. Provisional Application Serial No. 60/331,901, filed Nov. 19, 2001, entitled “Method and Apparatus for Dynamic Database Creation and Interactive Analysis,” which is hereby incorporated by reference herein and is a basis for a claim of priority.  
     
    
     
       BACKGROUND OF THE INVENTION  
         [0002]    1. Field of the Invention  
           [0003]    This invention relates generally to databases, and more particularly to advertising data.  
           [0004]    2. Description of the Related Art  
           [0005]    DBs are used in many aspects of today&#39;s business, particularly with respect to capturing data and then using the data to measure a business result (e.g., an advertising campaign&#39;s effectiveness) and forecast future results. Using DBs for “data mining” requires that the user specify the “factors” or attributes, (and the relationships between them), that it wants to capture to measure against results.  
           [0006]    In order to create a useful DB of this type, most companies rely on DB specialists to define the data elements and build the relational data structures. In order to add elements or relationships, a DB specialist must go directly into the database software and manually modify the DB. For example, a user might define HTML as a field related to Media Format, and later realize that they want to add another field related to Media Format, called Text. Or they might want to create an entirely new UDA called Media Frequency and assign two possible values to it, Daily and Monthly. It is desirable to manipulate the data and the relationships on-the-fly, without any direct DB interaction. The present invention accomplishes this result.  
           [0007]    An attribute that is defined dynamically and, therefore potentially proprietary to the user&#39;s organization, is called a User Defined Attribute (UDA). The ability to create UDA&#39;s is a breakthrough with respect to any analysis because it allows the user to compare things that were previously not comparable, thereby providing an answer to “why” or “why-not” something is performing. In many vertical markets, a tendency exists to view events in isolation and as individual circumstances that have no relation to prior events. As a result, historical events cannot often be compared against one another, or if comparisons are made, they are made against only basic and singular categories. For example, in advertising, most practitioners view each ad placement as a singular event. They know (or think they know) if that ad placement is working. At most, they might be able to query their data to compare ads that were in Text Format vs. HTML Format, or some such single level query. It is desirable to be able to compare events based on single or multiple levels, (e.g., Text vs. HTML ad performance by the Day of Week that the ads were placed and the Size of the ad and the Offer in the ad). The present invention accomplishes this result.  
         SUMMARY OF THE INVENTION  
         [0008]    The ability to create new UDAs allows for new comparisons. For example, an advertiser might define a new UDA as Product Price Range, and for every ad placement, capture the selling price for the advertised product. Now this advertiser can compare all ad performance results for all products within similar price ranges (as well as many other potential UDAs).  
           [0009]    The ability to interactively query the DB is desirable because it allows the user to make further query decisions based on the results that are displayed. For example, the user might not know, before hand, if software ads on Tuesday achieve greater results if they contain 3,4, or 5 lines of text. Using a dynamic querying model, the user can see the results for software ads on Tuesday, for each of the new choices (3,4, or 5 lines) and then select which of these to use and continue to query further if necessary.  
           [0010]    Once the DB is defined with UDAs, the UDA values are captured into the DB. It is desirable to be able to quickly and efficiently capture this data, either during a stand-alone process or in conjunction with a process related to the workflow function. For example, in advertising, a user might want to quickly define ad placements, select the relevant UDA values, and marry this data to the ad performance results (e.g., clicks) in a streamlined process. Or they might want to define the UDA values during the normal course of their media buying process, and possibly while they are using a Company created or third-party “workflow” tool. Workflow tools describe the general set of software tools that help the user manage client, product, and order information with respect to the specific business that they operate in. In advertising, this process might include the following steps, among others:  
           [0011]    media research  
           [0012]    “insertion order” (IO) creation;  
           [0013]    creative development;  
           [0014]    ad placement  
           [0015]    post campaign reporting  
           [0016]    The present invention accomplishes these results and allows for fast entry or can be integrated into existing Company, or third party “workflow” process tools.  
           [0017]    Lastly and relating to the advertising business, it is desirable to have a pre-defined set of UDAs so that the user can start capturing the data with minimal set-up to the DB. The present invention accomplishes this by pre-defining over 100 UDAs specific to the particular field or industry, e.g., advertising.  
           [0018]    The present invention provides a method, apparatus, and computer interface to dynamically create a relational DB for data mining analysis. Furthermore, the present invention defines an advertising DB, which can be created by collecting ad campaign performance data and attributes of the ad, media, product, etc. (UDAs), and marrying these data so that the user can analyze what and why things are working. This advertising DB is then used for dynamic querying, based on single or combinations of UDAs. The present invention also provides a list of specific UDAs related to the advertisement industry.  
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0019]    Referring to FIG. 1. 1 , the physical architecture of the invention is described in more detail below.  
         [0020]    [0020] 101 : The client computer environment  101  represents various microcomputers which are electronically connected to the server environment  105  via a connection provided by any of the public Internet, a private network, or a corporate Intranet. The client computers communicate with the server environment using the Internet Protocol (IP). The computers make use of a software application called an Internet Browser (provided by third party manufacturers) to access the functions of the present invention.  
         [0021]    [0021] 102 : The electronic connection between the client computer environment and the network environment  103  is accomplished by various means including dial-up networking, local/wide area networking, and others—each provided by third party manufacturers.  
         [0022]    [0022] 103 : The network environment  103  may be any of the Public Internet, a private network, or a corporate Intranet—each provided by third parties.  
         [0023]    [0023] 104 : The electronic connection between the network environment and the server environment is accomplished in a manner as described in  102 , above.  
         [0024]    [0024] 105 : The server environment  105  represents various microcomputers which are electronically connected to the client computer environment  101  as described in  101 , above. These microcomputers execute program code and store data, all processes of which are part of the present invention.  
         [0025]    [0025] 106 : The Web server  106  executes program code which generates user functionality which is the subject of the present invention.  
         [0026]    [0026] 107 : The database server  107  stores data in a manner which is the subject of the present invention.  
         [0027]    Referring to FIG. 1. 2 , the Client Computer environment is described in additional detail as compared to FIG. 1. 1 .  
         [0028]    [0028] 101 : As described above.  
         [0029]    [0029] 102 : As described above.  
         [0030]    [0030] 103 : As described above.  
         [0031]    [0031] 108 : The input device  108  includes the use of a standard microcomputer keyboard and/or mouse (or other touch pad, key pad or pointing device).  
         [0032]    [0032] 109 : The output device  109  includes the use of a standard video display monitor and a printer.  
         [0033]    [0033] 110 : The client computer includes several components, which are hereby described:  
         [0034]    the CPU or central processing unit, which executes the instructions contained in the program code; the memory, including random access memory (RAM) and read only memory (ROM) which stores program instructions and data which are being processed by the CPU; the program and data storage device which permanently stores program code and data which is used by the client computer; and the Web site browser, which is an application program, provided by a third party, which provides the user with access to application software actually stored on other computers.  
         [0035]    [0035] 111 : The external interface is a computer hardware device that allows the client computer to be connected to the network environment. This device may be a network interface card (NIC) or a modem, or other device appropriate to the connection being used, and is provided by a third party.  
         [0036]    Referring to FIG. 1. 3 , the Network environment is described in additional detail as compared to FIG. 1. 1 .  
         [0037]    [0037] 102 : As described above.  
         [0038]    [0038] 103 : As described above.  
         [0039]    [0039] 104 : As described above.  
         [0040]    Referring to FIG. 1. 4 , Server environment is described in additional detail as compared to FIG. 1. 1 .  
         [0041]    [0041] 103 : As described above.  
         [0042]    [0042] 104 : As described above.  
         [0043]    [0043] 105 : As described above.  
         [0044]    [0044] 106 : As described above.  
         [0045]    [0045] 107 : As described above.  
         [0046]    [0046] 108 : As described above.  
         [0047]    [0047] 109 : As described above.  
         [0048]    [0048] 112 : The program storage device provides a facility for permanent storage of the program code which is the subject of the present invention.  
         [0049]    [0049] 113 : The Web server is a system application software program, provided by a third party, which executes the program code which is the subject of the present invention.  
         [0050]    [0050] 114 : The data storage device provides a facility for permanent storage of the data and the structure of the database which is the subject of the present invention.  
         [0051]    [0051] 115 : The database server is a system application software program, provided by a third party, which stores data as per the instructions of the program code which is the subject of the present invention.  
         [0052]    Referring to FIG. 2, the Dynamic Data Drill (3-D) is hereby described.  
         [0053]    [0053] 201 : This is the starting point of the process, where the user is presented with various selection choices and options as to how they are to conduct their data analysis.  
         [0054]    [0054] 202 : First, the user is allowed to select to begin a new query, or to access a query that they have previously performed and saved.  
         [0055]    [0055] 203 : If the user chooses to access a saved query the system first displays a list of available queries. To accomplish this, the system queries the database and selects all and only those queries which were previously entered and saved by the user. The user selects one of the queries selected, and then the system displays the query criteria.  
         [0056]    [0056] 204 : The system then performs the query on the database using those criteria. The system performs a database query, locating those records that have attribute values that are identical to the ones that are selected (from the saved query) as key fields. The records that are selected from the query have attribute values identical to all of the selected attribute values, not just one or more of these attribute values.  
         [0057]    [0057] 205 : The system displays the results of the query so that the user can review those results. The query results are displayed as both an aggregation of the queried records, as well as the individual components that are included in the query. The aggregation is a summation of key field values (such as total ad impressions or clicks, in advertising) thereby allowing the comparison of similar records across the selected attribute categories.  
         [0058]    [0058] 206 : At that point the user can choose to delete the saved query or continue to view the currently selected query ( 208 ).  
         [0059]    [0059] 207 : If the user chooses to delete the current query, that query information is deleted from the database, and the user is returned to the starting point of the Dynamic Data Drill process ( 201 ).  
         [0060]    [0060] 208 : If the user chooses to not delete the current query in step  207 , the display is updated with current data from the database and the results of the query are redisplayed as described in step  205 , above.  
         [0061]    [0061] 209 : If the user chooses to begin a new query in step  202 , the user can select an Attribute Category on which to perform the query. A list of Attribute Categories are displayed for the user to select based on the data model in the database.  
         [0062]    [0062] 210 : Once an Attribute Category is selected, the display updates the appropriate attribute data based on that selection. The system perform a query that retrieves all records of all items that contain any of the attribute values associated with that attribute category, and subject to any prior query selection requirements, and displays the aggregation of these as described in  205  above. The ‘dynamic’ data drilling allows for interactive querying of the data set. Additionally, if the user chooses to view the currently selected query in step  207 , the user is presented with an updated display of query results based on their currently selected query. The query results are generated in the same manner as described in item  204 , above.  
         [0063]    [0063] 211 : The user then selects an attribute value on which to continue to perform the query on. Once the attribute value is selected, the user can now continue to select other attribute categories as described in  209  above, and further refine the current query.  
         [0064]    [0064] 212 : The system then also queries the database and retrieves any data related to the sub-attribute which was selected, and the display is updated to include that information.  
         [0065]    [0065] 213 : If any sub-attributes were displayed as a result of item  211 , described above, the user may elect to select one of those sub-attributes.  
         [0066]    [0066] 214 : If a sub-attribute was selected, a list of attribute values is displayed. The system then performs the functions as described in item  212 , above.  
         [0067]    [0067] 215 : The user then either chooses another attribute category, attribute, or sub-attribute, and restarts the data evaluation process as described in item  209 , above, or the user selects an attribute value as available from the currently selected attribute or sub-attribute.  
         [0068]    [0068] 216 : When the attribute value is selected, the query is processed as described in item  204 , above, and the results of that query are displayed for the user&#39;s evaluation.  
         [0069]    [0069] 217 : At that time the user may either select additional attribute categories, attributes or sub-attributes to add to the analysis, in which case they revert to item  209  of the process, described above. Alternatively, the user may clear the query (described in  218 , following); save the query (described in  220 , following); or the user may view statistics relating to the current query (described in  222 , following).  
         [0070]    [0070] 218 : Should the user elect to clear the current query, the user selects the clear query function.  
         [0071]    [0071] 219 : When the clear query function is accessed, all of the details of the current query are removed from the current display, and the list of attribute categories, attributes, sub-attributes, and attribute values are all reset to what was displayed when the Dynamic Data Drill was first accessed. At that time the user can return to item  201  of the process, described above.  
         [0072]    [0072] 220 : Should the user elect to save the current query, the user selects the save query function.  
         [0073]    [0073] 221 : When the save query function is accessed, the user is prompted to enter a name for the query. Once entered, the query information is saved to the database, along with the query name, so that it may be easily accessed by the user at a later time, as described in item  202 , described above.  
         [0074]    [0074] 222 : Should the user elect to view the statistics of the current query, the user selects the view stats function.  
         [0075]    [0075] 223 : When the view stats function is accessed, the system updates the display to show the detailed statistics of the current query by retrieving details related to the current query from the database, computing the statistical values (including, but not limited to average, standard deviation, minimum, and maximum), and displaying those values which result.  
         [0076]    [0076] 224 : At any time the user may elect to exit the Dynamic Data Drill application, which ends the processing of that software application.  
         [0077]    Referring to FIG. 3. 0 , the Attribute Category Definition process is hereby described.  
         [0078]    [0078] 301 : This is the starting point of the process, where the user is presented with various selection choices and options as to how to conduct their data analysis. The display is initiated and includes a list of the attribute categories currently included in the database.  
         [0079]    [0079] 302 : The user can choose any of the attribute categories displayed.  
         [0080]    [0080] 303 : Once selected, the system updates the display in two areas: first, the details related to the selected category are displayed. Those details include the item name (which is the same as the attribute category); the item type; the parent item; and an indicator as to whether the attribute category is a “super folder” or not. A “super folder” is a generic term for an attribute category or value that is “superior” to attributes below it and the user wishes to be able to aggregate all of these sub attributes for display at the “super” level. An example of this in a product category could be “Software”, where the true attribute values might be the type of software (i.e., operating system, analytic package, etc.). A user creates super folders so that they can view the aggregation of all subordinate attributes as one attribute value (software) instead of or in addition to their specific values (i.e., operating systems), when performing a data query. Second, the attributes related to the selected attribute category are displayed, immediately under the attribute category which was selected.  
         [0081]    [0081] 304 : The user may then select an attribute to review, or may select the add question function.  
         [0082]    [0082] 305 : Should the user elect to enter a new item name, the user selects the add question function. In this case, the system displays a text entry box, titled “New Item Name” and the user enters the name of the new item. Once complete, the user selects either the execute or cancel function.  
         [0083]    [0083] 306 : If the user has entered a new item name and then selects the cancel function, the system returns the user to the display of the attribute category previously selected.  
         [0084]    [0084] 307 : If the user has entered a new item name and then selects the execute function, the system stores the new item into the database.  
         [0085]    [0085] 308 : The system then updates the display with the new item name, and the system also returns the user to the initial display of the attribute category definition process.  
         [0086]    [0086] 309 : After display of the item details for the initial attribute category selected, the user may elect to select an attribute.  
         [0087]    [0087] 310 : Once selected, the system updates the display in two areas: first, the details related to the selected attribute are displayed. Those details might include the item name (which is the same as the attribute); the item type; the parent item; and an indicator as to whether the attribute is a super folder or not. Second, the sub-attributes and/or attribute values related to the selected attribute are displayed, immediately under the attribute which was selected. The user is then presented with several options:  
         [0088]    [0088] 311 : The user may select a sub-attribute. In this situation, the display is updated as described in item # 310 , described above. Multiple levels of sub-attributes are supported in a like manner.  
         [0089]    [0089] 312 : The user may select the move function. The results of this selection are described in FIG. 3. 1 , below.  
         [0090]    [0090] 313 : The user may select the add child function. The results of this selection are described in FIG. 3. 2 , below.  
         [0091]    [0091] 314 : The user may select the modify function. The results of this selection are described in FIG. 3. 3 , below.  
         [0092]    [0092] 315 : The user may select the delete function. The results of this selection are described in FIG. 3. 4 , below.  
         [0093]    [0093] 316 : The user may select the super folder checkbox function. The results of this selection are described in FIG. 3. 5 , below.  
         [0094]    [0094] 317 : The user may select an attribute value. The results of this selection are described in FIG. 3. 6 , below.  
         [0095]    Referring to FIG. 3. 1 , the Move Function of the Attribute Category Definition process is hereby described.  
         [0096]    [0096] 318 : When the move function is selected, the user is prompted to select a new parent for the currently selected attribute category, attribute, or sub-attribute. At this point they will make such a selection.  
         [0097]    [0097] 319 : At this point the user either selects the execute or cancel function.  
         [0098]    [0098] 320 : If the execute function is selected, the database is updated, where the currently selected attribute category, attribute, or sub-attribute is moved to become part of the newly selected attribute category, attribute, or sub-attribute. The display is also updated to reflect the update, and the user is returned to the beginning of the category definition process, item  302 , described above.  
         [0099]    [0099] 321 : If the cancel function is executed, the user immediately returns to the first step of the move function, as described in  312 , above.  
         [0100]    Referring to FIG. 3. 2 , the Add Child Function of the Attribute Category Definition process is hereby described.  
         [0101]    [0101] 322 : When the add child function is selected, the user is prompted to enter the name of the new child.  
         [0102]    [0102] 323 : At this point the user either selects the execute or cancel function.  
         [0103]    [0103] 324 : If the execute function is selected, the database is updated, where the new attribute category, attribute, or sub-attribute is added to become part of the currently selected attribute category, attribute, or sub-attribute. The display is also updated to reflect the update, and the user is returned to the beginning of the category definition process, item  302 , described above.  
         [0104]    [0104] 325 : If the cancel function is executed, the user returns to the first step of the add child function, as described in  313 , above.  
         [0105]    Referring to FIG. 3. 3 , the Modify Function of the Attribute Category Definition process is hereby described.  
         [0106]    [0106] 326 : When the modify function is selected, the user is prompted to enter the new name of the currently selected attribute category, attribute, or sub-attribute.  
         [0107]    [0107] 327 : At this point the user either selects the execute or cancel function.  
         [0108]    [0108] 328 : If the execute function is selected, the database is updated, where the new name of the attribute category, attribute, or sub-attribute is added to replace the previous name of the currently selected attribute category, attribute, or sub-attribute. The display is also updated to reflect the update, and the user is returned to the beginning of the category definition process, item  302 , described above.  
         [0109]    [0109] 329 : If the cancel function is executed, the user is returned to the first step of the modify function, as described in  314 , above.  
         [0110]    Referring to FIG. 3. 4 , the Delete Function of the Attribute Category Definition process is hereby described.  
         [0111]    [0111] 315 : When the delete function is selected, the system prepares to remove the currently selected attribute category, attribute, or sub-attribute.  
         [0112]    [0112] 330 : At this point the user either selects the execute or cancel function.  
         [0113]    [0113] 331 : If the execute function is selected, the database is updated, where the currently selected attribute category, attribute, or sub-attribute is removed. The display is also updated to reflect the update, and the user is returned to the beginning of the category definition process, item  302 , described above.  
         [0114]    [0114] 332 : If the cancel function is executed, the user is returned to the first step of the delete function, as described in  315 , above.  
         [0115]    Referring to FIG. 3. 5 , the Super Folder Checkbox Function of the Attribute Category Definition process is hereby described.  
         [0116]    [0116] 333 : When the super folder checkbox is selected, the database is updated, where the currently selected attribute category, attribute, or sub-attribute is updated to reflect its new super folder status. The display is also updated to reflect the update, and the user is returned to the beginning of the category definition process, item  302 , described above.  
         [0117]    [0117] 334 : If the super folder checkbox is unselected, the database is updated, where the currently selected attribute category, attribute, or sub-attribute is updated to reflect its new non-super folder status. The display is also updated to reflect the update, and the user is returned to the beginning of the category definition process, item  302 , described above.  
         [0118]    Referring to FIG. 3. 6 , Attribute Value Definition within the Category Definition process is hereby described.  
         [0119]    [0119] 313 : When an attribute value is selected, functionality described above for attribute categories, attributes, and sub-attributes is available as described above.