Patent Publication Number: US-8112448-B2

Title: Table classification device, table classification method, and table classification program

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to, for example, technique to classify a plurality of tables included in a database. 
     2. Discussion of the Background 
     There exist various kinds of databases in a company, and such databases have been large-scaled or complicated. Within the company or among companies, in case of integrating various kinds of databases, in order to achieve consistency of data, it is necessary to integrate tables or columns showing the same contents. Therefore, first, from a result of checking specifications of the databases by a specialist in database or modeling, or based on opinions of specialists belonging to each organization, a list of similar tables or columns, or redundant tables or columns is generated. Then, based on the generated list, the databases are integrated. 
     Recently, a tool for supporting schema matching has been developed as the integration of databases. This tool is to retrieve tables or columns having similar names from the databases of the whole company and to support the integration. 
     The non-patent document 1 describes a method of integration from a viewpoint of schema integration. The non-patent document 1 shows an example of comparing columns with considering a type of column, or if it is a key item or not in the classification of types of columns which form tables. However, although the non-patent document 1 describes the comparison of columns, no description is done for comparison of tables based on a type of columns, etc. which form tables. 
     LIST OF REFERENCES 
     
         
         
           
             [Non-Patent Document 1] Rahm, E. and Bernstein, P. A., “A survey of approaches to automatic schema matching.” VLDB J(10) pp. 334-350, 2001. 
           
         
       
    
     In case of integration of databases in a company or among companies, if it is large-scaled, some tens of thousands of columns are compared, and out of some hundreds or some thousands of tables, tables including the same columns or similar columns should be extracted. Then, an operation is necessary such that one of the tables including the same columns should be deleted, or tables including similar columns should be integrated. 
     However, even if the similarity of columns is found, it is not easy to determine if tables are similar or not based on information of similarity of columns. For example, it is assumed that a table A and a table B respectively include the same column X. Here, the column X in the table A may be a main key, and the column X in the table B is a foreign key for referencing to the table A. In such a case, even if the table A and the table B include the same column X, the meaning (role) of the column X in the table A and the meaning of the column X in the table B are different. Namely, although the table A and the table B include the same column X, they are not similar tables and cannot be a target of integration. Like this, it is impossible to determine the equality and the similarity as the table structure by only comparing the equality and the similarity of each of the columns. 
     The present invention aims to facilitate integration of databases by classifying a plurality of tables in databases into groups of similar tables. 
     SUMMARY OF THE INVENTION 
     A table classification device related to the present invention for classifying, for example, a plurality of tables included in a plurality of databases into a plurality of groups, the table classification device is characterized to include: using a processing device, a first classifying unit for determining if respective tables of the plurality of tables are similar or not based on column information including locations of columns in the respective tables, and according to determination result, classifying the plurality of tables into a plurality of groups; using the processing device, a second classifying unit for determining if the respective tables of the plurality of tables are similar or not based on column information other than locations of columns in the respective tables, and according to determination result, classifying the plurality of tables into a plurality of groups; and an outputting unit for outputting result classified by the first classification unit and the second classification unit to an outputting device. 
     According to another aspect of the invention, a table classification device for classifying a plurality of tables included in a plurality of databases, the table classification device is characterized to include: using a processing device, a role classifying unit for determining if respective tables of the plurality of tables are similar or not based on if columns of a same role are similar or not in the respective tables, and according to determination result, classifying the plurality of tables into a plurality of groups; using the processing device, a statistical classifying unit for determining if the respective tables of the plurality of tables are similar or not based on if a similar column is included or not regardless of the role of the column in the respective tables, and according to determination result, classifying the plurality of tables into a plurality of groups; and an outputting unit for outputting result classified by the role classifying unit and the statistical classifying unit to an outputting device. 
     According to another aspect of the invention, a table classification method classifying a plurality of tables included in a plurality of databases into a plurality of groups, the table classification method is characterized to include: using a processing device, a first classifying step for determining if respective tables of the plurality of tables are similar or not based on column information including locations of columns in the respective tables, and according to determination result, classifying the plurality of tables into a plurality of groups; using the processing device, a second classifying step for determining if the respective tables are similar or not based on column information other than locations of columns in the respective tables, and according to determination result, classifying the plurality of tables into a plurality of groups; and using an outputting device, an outputting step for outputting result classified by the first classification step and the second classification step. 
     According to another aspect of the invention, a table classification program classifying a plurality of tables included in a plurality of databases into a plurality of groups, the table classification program is characterized to include: a first classifying process for determining if respective tables are similar or not based on column information including locations of columns in the respective tables, and according to determination result, classifying the plurality of tables into a plurality of groups; a second classifying process for determining if the respective tables are similar or not based on column information other than locations of columns in the respective tables, and according to determination result, classifying the plurality of tables into a plurality of groups; and an outputting process for outputting result classified by the first classification step and the second classification step. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       A complete appreciation of the present invention and many of the attendant advantages thereof will be readily obtained as the same becomes better understood by reference to the following detailed description when considered in connection with the accompanying drawings, wherein: 
         FIG. 1  is a functional block diagram showing functions of a table classification device  1 ; 
         FIG. 2  shows a table list  11 ; 
         FIGS. 3A and 3B  respectively show a table node  111  and a column node  112  included in the table list  11 ; 
         FIG. 4  shows a column correspondence table  14 ; 
         FIG. 5  shows a column list  12 ; 
         FIG. 6  shows a frequently appearing column list  13 ; 
         FIG. 7  is a flowchart showing an operation of a semantic classifying unit  20 ; 
         FIG. 8  is an explanatory drawing ( 1 ) of table classification by the semantic classifying unit  20 ; 
         FIG. 9  is an explanatory drawing ( 2 ) of table classification by the semantic classifying unit  20 ; 
         FIG. 10  is an explanatory drawing ( 3 ) of table classification by the semantic classifying unit  20 ; 
         FIG. 11  is an explanatory drawing ( 4 ) of table classification by the semantic classifying unit  20 ; 
         FIG. 12  is an explanatory drawing ( 5 ) of table classification by the semantic classifying unit  20 ; 
         FIG. 13  shows a table semantic classification table  21 ; 
         FIG. 14  is a flowchart showing an operation of a statistical classifying unit  30 ; 
         FIG. 15  is an explanatory drawing ( 1 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 16  is an explanatory drawing ( 2 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 17  is an explanatory drawing ( 3 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 18  is an explanatory drawing ( 4 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 19  is an explanatory drawing ( 5 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 20  is an explanatory drawing ( 6 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 21  is an explanatory drawing ( 7 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 22  is an explanatory drawing ( 8 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 23  is an explanatory drawing ( 9 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 24  is an explanatory drawing ( 10 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 25  is an explanatory drawing ( 11 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 26  is an explanatory drawing ( 12 ) of table classification by the statistical classifying unit  30 ; 
         FIG. 27  is a flowchart showing an operation of a statistical classifying unit  30  according to the second embodiment; 
         FIG. 28  is an explanatory drawing ( 1 ) of table classification by the statistical classifying unit  30  according to the second embodiment; 
         FIG. 29  is an explanatory drawing ( 2 ) of table classification by the statistical classifying unit  30  according to the second embodiment; 
         FIG. 30  shows a column list  12  with considering availability of NULL value; 
         FIG. 31  shows the column list  12  with considering if it is a key item or not; and 
         FIG. 32  shows an example of hardware configuration of the table classification device  1 . 
     
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Embodiment 1 
     In the present embodiment, a classification method by combining the following two classification methods will be explained: (1) a semantic classification method determining similarity of tables with considering meaning (role) of columns in the table and classifying the tables, and (2) a statistical classification method determining similarity of tables without considering meaning of columns in the table and classifying the tables. 
       FIG. 1  is a functional block diagram showing functions of a table classification device  1 . 
     The table classification device  1  classifies a plurality of tables stored in various databases in a company into a plurality of groups based on similarity of a type, a size, a precision (scale) of columns included in a table. 
     The table classification device  1  includes a list generating unit  10 , a semantic classifying unit  20  (the first classification unit), a statistical classifying unit  30  (the second classification unit), and an outputting unit  40 . 
     The list generating unit  10  imports database catalog which will be inputted. The list generating unit  10  inputs the database catalog and a column correspondence table  14 , generates a table list  11 , a column list  12 , and a frequently appearing column list  13  using a processing device, and outputs the table list  11 , the column list  12 , and the frequently appearing column list  13 . 
     The semantic classifying unit  20  classifies tables by the semantic classification method. The semantic classifying unit  20  inputs the table list  11  and the column list  12 , generates a table semantic classification table  21  in which a plurality of tables shown by the table list  11  are classified into a plurality of groups using the processing device, and outputs the table semantic classification table  21 . 
     The semantic classifying unit  20  determines meaning of the column in the table based on a location of the column in each table. Further, the semantic classifying unit  20  determines that a column having a prescribed meaning is an important column in the table. The semantic classifying unit  20  determines if tables are similar or not based on whether the columns, which have the prescribed meaning and are determined as important, are similar or not. Then, the semantic classifying unit  20  generates the table semantic classification table  21  in which the tables are classified into a plurality of groups according to the determination result. 
     Here, it is assumed by the semantic classifying unit  20  that columns located near the top of each table might possibly be key items and important. Then, the semantic classifying unit  20  generates the table semantic classification table  21  in which the tables are classified into a plurality of groups based on whether the columns located near the top are similar or not. 
     The statistical classifying unit  30  classifies tables by the statistical classification method. The statistical classifying unit  30  inputs a table semantic classification table  21  and a frequently appearing column list  13 , generates a table classification list  31 , in which the tables classified into the same group by the semantic classifying unit  20  are further classified in detail, using the processing device and outputs the table classification list  31 . 
     The statistical classifying unit  30  determines an important column statistically without considering the meaning of the column in the table. The statistical classifying unit  30  determines if tables are similar or not based on whether the column, which is determined to be important statistically, is common or not. Then, the statistical classifying unit  30  generates the table classification list  31  in which the tables are classified into a plurality of groups according to the determination result. 
     Here, the statistical classifying unit  30  treats the column whose appearance rate is high is an important column. Then, the statistical classifying unit  30  generates the table classification list  31  in which the tables are classified into a plurality of groups based on whether the column whose appearance rate is high is common or not. 
     In particular, the statistical classifying unit  30  classifies further in detail the plurality of tables classified into the same group by the semantic classifying unit  20 . 
     The outputting unit  40  outputs a result classified by the semantic classifying unit  20  and the statistical classifying unit  30  to an outputting device. Namely, the outputting unit  40  outputs the table classification list  31 . 
     Here, the database catalog includes table information of tables by which the database is structured. The database catalog is information generally included in a database. Here, the list generating unit  10  inputs database catalogs (database catalogs  501 ,  502 , and  503  in the figure) of various databases of different types. 
     Next, the table list  11 , the column list  12 , the frequently appearing column list  13 , and the column correspondence table  14  will be explained. Further, an operation of the list generating unit  10  will be explained in addition to the explanation of the table list  11 , the column list  12 , the frequently appearing column list  13 , and the column correspondence table  14 . 
       FIG. 2  shows the table list  11 . The table list  11  includes information of the tables (table nodes  111 ) included in the database and information of columns (column nodes  112 ) included in the table. 
       FIGS. 3A and 3B  respectively show the table node  111  and the column node  112  included in the table list  11 .  FIG. 3A  shows the table node  111 , and  FIG. 3B  shows the column node  112 . 
     First, the list generating unit  10  obtains table information sequentially from each database catalog. The list generating unit  10  can obtain the table information from the database catalog by using an application program interface which is regularly equipped to the database. 
     The table information includes a table name and information of columns which form the table. Further, the information of columns includes a type (for example, a character type, a number type, a date type, etc.), a size, a scale (precision) of a column, key information (a main key, a foreign key, etc.), availability of NULL, and so on. 
     Next, the list generating unit  10  generates the table node  111  and the column node  112 , which form the table list  11 , from the table information obtained. 
     The table node  111  includes a node identification number  113 , a node name  114 , and a node type  115 . The node identification number  113  stores an identifier to identify a node uniquely The node name  114  stores a table name. The node type  115  stores an identifier to identify a table. 
     The column node  112  includes the node identification number  113 , the node name  114 , the node type  115 , a column type  116 , a size  117 , a scale  118 , key information  119  (whether it is a key item or not), and “availability of NULL value”  120  (whether it is a column for which the use of NULL is allowed or not). The node identification number  113  stores an identifier to identify a node uniquely. The node name  114  stores a column name. The node type  115  stores an identifier to identify a column. Further, the column type  116 , the size  117 , the scale  118 , the key information  119 , and the “availability of NULL value”  120  store setting information of the column. 
     Then, the list generating unit  10 , for each table, connects the column node  112  belonging to the table from the table node  111  with a list according to an order of alignment of columns in the table. After generating the table node  111  and the column node  112  for all the tables, the list generating unit  10  connects each table node  111  with the list. By this operation, the table list  11  is generated. 
       FIG. 4  shows a column correspondence table  14 . 
     The column correspondence table  14  is information showing correspondence relationship of columns among databases of different types. 
     Definition of types of columns differs according to various database management systems of different types employed by a company. Thus, the list generating unit  10  identifies correspondence of columns among the databases of different types using the column correspondence table  14 . 
     The column correspondence table  14  includes a DB type  141  (type of database), a unique column type  142 , and a common column type  143 . 
     The DB type  141  stores each database management system name (for example, Oracle (the registered trademark), IBM DB2 (the registered trademark), Microsoft (the registered trademark) SQLServer, etc.). 
     The unique column type  142  stores a column type defined by each database management system. 
     The common column type  143  stores information showing a column type for commonly treating data type being unique for each database management system and corresponding to the column type stored in the unique column type  142 . 
       FIG. 5  shows the column list  12 . 
     The column list  12  shows information of a list of columns which exist in all the tables. The column list  12  includes a column number  121 , a column type  122 , a size  123 , a scale  124 , and a number of appearances  125 . 
     The list generating unit  10  inputs the table list  11  and the column correspondence table  14  and generates the column list  12 . Here, the list generating unit  10  treats columns as the same columns if the column type, the size, and the scale are the same, and generates the column list  12 . 
     The list generating unit  10  obtains the column type  116 , the size  117 , and the scale  118  of each column node  112  sequentially from the top table node  111  of the table list  11 . Next, the list generating unit  10  converts the obtained column type  116  to a common column type  143  according to the column correspondence table  14 . Then, the list generating unit  10  adds a new record to the column list  12 . The list generating unit  10  stores an arbitrary value in the column number  121  of the added record, the obtained common column type  143  in the column type  122 , the obtained size  117  in the size  123 , the obtained scale  118  in the scale  124 , and  1  in the number of appearances  125 . 
     Here, if the same column already exists in the column list  12 , the list generating unit  10  increments the number of appearances  125  of the column. 
       FIG. 6  shows the frequently appearing column list  13 . 
     The frequently appearing column list  13  is information of columns whose frequency of appearance is high among a plurality of columns shown by the column list  12 . The frequently appearing column list  13  includes an order of appearance  131 , a column number  132 , a number of appearances  133 , and an appearance rate  134 . 
     The list generating unit  10  inputs the column list  12  and generates the frequently appearing column list  13 . The list generating unit  10  defines a minimum appearance rate and generates the frequently appearing column list  13  by sorting columns having at least minimum appearance rate in an order of appearance rate. Here, the minimum appearance rate is 2.0%. 
     Here, the appearance rate means a proportion of tables including that column to all tables. Namely, “the appearance rate”=“the number of tables including the column”/“the number of all tables”. 
     Next, an operation of a semantic classifying unit  20  will be explained. 
       FIG. 7  is a flowchart showing the operation of the semantic classifying unit  20 . 
     The semantic classifying unit  20  classifies tables including the top some (a prescribed number of) columns of the same column type, size, and scale into the same group. This is because the probability is high that the top some columns are key items, and also important columns semantically. 
     Here, in the following explanation, RECURSIVE_NUM is a parameter to determine how precisely the classification is done by the semantic classification method. For example, in the following explanation, RECURSIVE_NUM is defined to be 20. When RECURSIVE_NUM is defined to be 20. if the number of tables belonging to one group exceeds 20. such a group is tried to be classified further in detail.
     &lt;S 1 &gt;: The semantic classifying unit  20  inputs the table list  11  and starts the processing. Here, it is assumed that the table node  111  of the table list  11  has been sorted by the column type  116 , the size  117 , and the scale  118  of the column node  112 , which form the table node  11 .   &lt;S 2 &gt;: The semantic classifying unit  20  assigns 1 to a variable X. The variable X determines how many same columns  112  from the top included in the table nodes  111 , based on which the table nodes  111  are classified into the same group. That is, if the variable X is 1. the table nodes  111  whose top one column node  112  is the same are classified into the same group.   &lt;S 3 &gt;: The semantic classifying unit  20  connects all the table nodes  111  to a virtual route group. Further, the semantic classifying unit  20  registers the route group in an X unprocessed list.   &lt;S 4 &gt;: The semantic classifying unit  20  determines if there exists any node registered in the X unprocessed list. If no node is registered in the unprocessed list (NO at S 4 ), the semantic classifying unit  20  proceeds to &lt;S 12 &gt; and finishes the processing. On the other hand, if there exists a node registered in the unprocessed list (YES at S 4 ), the semantic classifying unit  20  proceeds to &lt;S 5 &gt;.   &lt;S 5 &gt;: The semantic classifying unit  20  makes a temporary group of the table nodes  111  which are the same from the top up to the X-th column node  112  within the group.   

     Here, the semantic classifying unit  20  converts the column type  116  (a column type unique to the database) of the column node  112  into the common column type  143  using the column correspondence table  14  in order to compare the column nodes  112  to check if they are the same or not. Next, the semantic classifying unit  20  obtains the column number  121  from the column list  12  based on the converted common column type  143 , the size  117  and the scale  118  of the column node  112 . Then, the semantic classifying unit  20  compares the obtained column numbers  121  to check if they are the same or not, and determines if the column nodes  112  are the same or not.
     &lt;S 6 &gt;: The semantic classifying unit  20  determines if the number of the table nodes  111  included in the temporary group is less than RECURSIVE_NUM or not. If the number of the table nodes  111  is at least RECURSIVE_NUM (NO at S 6 ), the semantic classifying unit  20  proceeds to &lt;S 7 &gt;. On the other hand, the number of the table nodes  111  is less than RECURSIVE_NUM (YES at S 6 ), and the semantic classifying unit  20  proceeds to &lt;S 8 &gt;.   &lt;S 7 &gt;: The semantic classifying unit  20  makes a true group from the temporary group of which the number of the table node  111  is at least RECURSIVE_NUM. Namely, the temporary group of which the number of the table nodes  111  is at least RECURSIVE_NUM is made as a true group instead of a temporary group. Further, the semantic classifying unit  20  registers the true group in an X+1 unprocessed list. By registering in the X+1 unprocessed list, the grouped table nodes  111  become a target for further classification.   &lt;S 8 &gt;: On the other hand, the semantic classifying unit  20  releases grouping of the temporary group of which the number of the table nodes  111  is less than RECURSIVE_NUM. Namely, the temporary group of which the number of the table nodes  111  is less than RECURSIVE_NUM is not grouped. The table nodes  111  belonging to the temporary group are connected to the processed list. Namely, grouping of the table nodes  111  which have not been grouped is finished.   &lt;S 9 &gt;: The semantic classifying unit  20  determines whether all the temporary groups connected to the X unprocessed list have been processed or not. If all the temporary groups have not been processed (NO at S 9 ), the semantic classifying unit  20  proceeds to &lt;S 10 &gt;. On the other hand, if all the temporary groups have been processed (YES at S 9 ), the semantic classifying unit  20  proceeds to &lt;S 11 &gt;.   &lt;S 10 &gt;: Since all the temporary groups have not been processed, the semantic classifying unit  20  carries out the processing for the next temporary group.   &lt;S 11 &gt;: On the other hand, since all the temporary groups have been processed, the semantic classifying unit  20  increments (+1) X and returns to &lt;S 4 &gt;. Namely, the semantic classifying unit  20  groups further the grouped table nodes  111 .   &lt;S 12 &gt;: The semantic classifying unit  20  finishes the processing.   

     Next, with reference to  FIGS. 8 through 12 , an example of the operation of the semantic classifying unit  20  will be explained.  FIGS. 8 through 12  are drawings for explaining table classification by the semantic classifying unit  20 . 
     At &lt;S 1 &gt;, the semantic classifying unit  20  inputs the table list  11  and starts the processing. Here, each table node  111  has been sorted by the column type  116 , the size  117 , and the scale  118  of the column node  112  which form the table node  111 . 
     Next, at &lt;S 2 &gt;, the semantic classifying unit  20  assigns 1 to a variable X. 
     Next, at &lt;S 3 &gt;, the semantic classifying unit  20  connects all the table nodes  111  to a virtual route group. Further, the semantic classifying unit  20  registers the route group in an X unprocessed list. Namely, as shown in  FIG. 8 , each table node  111  shown by the table list  11  is connected to the route group. Further, since the route group is registered in the X (=1) unprocessed list, all table nodes  111  are in the status of being registered in the X (=1) unprocessed list. 
     Next, at &lt;S 4 &gt;, the semantic classifying unit  20  determines if there exists any node connected to the X unprocessed list. Here, since the table node  111  shown in  FIG. 8  is connected to the unprocessed list, the operation proceeds to &lt;S 5 &gt;. 
     At &lt;S 5 &gt;, the semantic classifying unit  20  makes a temporary group of the table nodes  111  which are the same from the top up to the X(=1)-th column node  112  in the group. 
     Here, since X is 1. the table nodes  111  whose one top column node  112  is the same are classified to the same temporary group. As shown in  FIG. 9 , it is assumed that they are classified into M temporary groups. 
     Next, the semantic classifying unit  20  repeats steps of &lt;S 6 &gt; to &lt;S 11 &gt; to determine sequentially if the number of the table nodes  111  included in each temporary group is less than RECURSIVE_NUM (= 20 ) or not. The semantic classifying unit  20  registers the temporary group of which the number of the table nodes is at least RECURSIVE_NUM as a true group in the X+1 unprocessed list, releases grouping of the temporary groups of which the number of the table nodes is less than RECURSIVE_NUM to register in the processed list. 
     Here, it is assumed that the number of table nodes  111  of the temporary groups  1 ,  2 ,  3  . . . is at least RECURSIVE_NUM, and the number of table nodes  111  of the temporary group M is less than RECURSIVE_NUM. Namely, the temporary groups  1 ,  2 ,  3  . . . are grouped as the true groups. On the other hand, the temporary group M does not become a true group but treated as processed. Namely, as shown in  FIG. 10 , each true group is connected to the route group, and the table nodes  111  belonging to the true group are connected to each true group. Further, the table nodes  111  belonging to the temporary group M which does not become the true group become processed, with maintaining connected to the route group (that is, without being grouped). 
     Here, each true group connected to the route group is registered in the X+1 (=2) unprocessed list, and the table nodes  111  connected to the route group, with maintaining connected, are registered in the processed list. 
     Next, at &lt;S 11 &gt;, the semantic classifying unit  20  increments (+1) X and the operation returns to &lt;S 4 &gt;. 
     At &lt;S 4 &gt;, since a node is registered in the X (=2) unprocessed list, the semantic classifying unit  20  proceeds to &lt;S 5 &gt;. At &lt;S 5 &gt;, since X is 2. the semantic classifying unit  20  classifies the table nodes  111  of which top two column nodes  112  are the same to one temporary group. Namely, as shown in  FIG. 11 , the table nodes  111  connected to each true group are classified to some temporary groups. That is, hierarchical classification is implemented by incrementing X and further classifying each true group. Next, the semantic classifying unit  20  repeats steps of &lt;S 6 &gt; to &lt;S 10 &gt; to determine if the number of table nodes  111  belonging to each temporary group is less than RECURSIVE_NUM or not. According to the determination result, the semantic classifying unit  20  decides whether to classify each temporary group as a true group or to treat as processed. Then, after the processing for all temporary groups have been completed, the semantic classifying unit  20  classifies the next hierarchy. Finally, when no temporary group includes the table nodes  111 , the number of which is at least RECURSIVE_NUM, the operation ends. 
     Here, for example, the table nodes  111  are classified as shown in  FIG. 12 .  FIG. 13  shows a table semantic classification table  21  representing classification of the table nodes  111  shown in  FIG. 12 . 
     The table semantic classification table  21  includes a list of a group number to identify the group, a column number of the first column node  112 , a column number of the second column, . . . , and a column number of the N-th column, which are common to table nodes  111  belonging to the group, and an identifier of the table nodes  111  belonging to the group. 
     Here, up to which column node  112  from the top the table nodes are grouped is decided by a value of X, which is to be less than RECURSIVE_NUM in the flowchart of  FIG. 7 , and it varies for each group. 
     For example, the group of the group number  1  is a group composed of the table nodes  111 , whose first (the top) column node  112  is the table nodes  111  of the column number  2 . Since the number of the table nodes  111  whose first (the top) column node  112  is the column number  2  is at least RECURSIVE_NUM (=20), this group is grouped. However, in the group of the group number  1 , the number of table nodes  111 , which are the same up to the second (the second from the top) column node  112 , is less than RECURSIVE_NUM (=20), the grouping is finished up to the grouping by the first (the top) column node  112 . 
     Further, for example, the group of the group number  2  is a group composed of the table nodes  111  whose first column node  112  is the column number  4 . Since the number of the table nodes  111  whose first column node  112  is the column number  4  is at least RECURSIVE_NUM, this group is grouped. 
     Further, the number of the table nodes  111  whose second column node  112  is the column number  6  and the number of the table nodes  111  whose second column node  112  is the column number  7  are at least RECURSIVE_NUM (=20). Therefore, the group of the group number  2  is further grouped into groups of the group number  21  and the group number  22 . However, the number of the table nodes  111  whose second column node  112  is other than the column number  6  or  7  is less than RECURSIVE_NUM (=20). Therefore, the table nodes  111  whose second column node  112  is other than the column number  6  or  7  is not grouped further, and the grouping is finished up to the grouping by the first column node  112 . 
     Further, in the group of the group number  21 , the number of the table nodes  111  which are the same up to the third (the third from the top) column node  112  is less than RECURSIVE_NUM (=20), the grouping is finished up to the grouping by the second (the top) column node  112 . 
     In the group of the group number  22 , the number of the table nodes  111  whose third column node  112  is the column number  6  is at least RECURSIVE_NUM (=20). Therefore, the group of the group number  22  is further grouped as a group of the group number  221 . However, the number of the table nodes  111  whose third column node  112  is other than the column number  6  is less than RECURSIVE_NUM (=20) in any case. Therefore, the table nodes  111  whose third column node  112  is other than the column number  6  are not grouped further, but the grouping is finished up to the grouping by the second column node  112 . 
     In the group of the group number  221 , the number of the table nodes  111  which are the same up to the fourth (the fourth from the top) column node  112  is less than RECURSIVE_NUM (=20), the grouping is finished up to the grouping by the third (the top) column node  112 . 
     Next, an operation of a statistical classifying unit  30  will be explained. 
       FIG. 14  is a flowchart showing the operation of the statistical classifying unit  30 . 
     Here, the statistical classifying unit  30  classifies the tables having the same column, of which the appearance rate is high and which is registered in the frequently appearing column list  13 , into the same group. This is because the column of which the appearance rate is high is considered to be an important column in the database.
     &lt;S 31 &gt;: The statistical classifying unit  30  inputs the table semantic classification table  21  and extracts the lowest level group of which the number of table nodes  111  belonging to each group is at least LOW_LEVEL_NUM (10. for example).   

     The lowest level group means a group which has no lower level group in the grouping by the semantic classifying unit  20 . Namely, in the table semantic classification table  21  shown in  FIG. 13 , the lowest level groups are the groups of the group number  1 , the group number  21 , the group number  221 , . . .
     &lt;S 32 &gt;: The statistical classifying unit  30  registers all the groups extracted at &lt;S 31 &gt; in an unprocessed list of statistical classification.   &lt;S 33 &gt;: The statistical classifying unit  30  assigns 1 to a variable y.   &lt;S 34 &gt;: The statistical classifying unit  30  selects one unprocessed group which is registered in the unprocessed list of statistical classification.   

     Further, the statistical classifying unit  30  extracts all column numbers of the column nodes  112  belonging to the table nodes  111  of the selected group. Further, the statistical classifying unit  30  extracts an extracted column number which is registered in the frequently appearing column list  13 . Then, the statistical classifying unit  30  registers the extracted column number in a y unprocessed list.
     &lt;S 35 &gt;: The statistical classifying unit  30  extracts one combination of y columns (a combination of y column numbers) from the y unprocessed list. The statistical classifying unit  30  calculates an appearance rate of the combination of y columns (a support rate, hereinafter) in each table node  111  belonging to the selected group. Here, the support rate is a rate at which an extracted combination of the column nodes  112 , except the top column node  112  which is used for grouping of the group, appears in the selected group.   &lt;S 36 &gt;: The statistical classifying unit  30  checks if the support rate calculated at &lt;S 35 &gt; is less than the minimum support rate (5%, for example). If it is equal to or greater than the minimum support rate (NO at S 36 ), the statistical classifying unit  30  proceeds to &lt;S 37 &gt;. If less than the minimum support rate (YES at S 36 ), the statistical classifying unit  30  proceeds to &lt;S 38 &gt;.   &lt;S 37 &gt;: The statistical classifying unit  30  groups the table nodes  11  including the combination of columns of which the support rate is equal to or greater than the minimum support rate. Then, the statistical classifying unit  30  registers the combination of columns in y+1 unprocessed list.   &lt;S 38 &gt;: On the other hand, the statistical classifying unit  30  registers the combination of columns of which the support rate is less than the minimum support rate in the processed list.   &lt;S 39 &gt;: The statistical classifying unit  30  checks if the support rate is calculated or not for all combinations in the y unprocessed list. If the support rate is not calculated for all combinations (NO at S 39 ), the operation proceeds to &lt;S 40 &gt;. On the other hand, if the support rate is calculated for all combinations (YES at S 39 ), the operation proceeds to &lt;S 41 &gt;.   &lt;S 40 &gt;: The statistical classifying unit  30  calculates the support rate of the next combination and returns to &lt;S 36 &gt;.   &lt;S 41 &gt;: The statistical classifying unit  30  checks if two or more combinations exist or not in the y+1 unprocessed list. If two or more combinations exist (YES at S 41 ), the operation proceeds to &lt;S 42 &gt;. On the other hand, two or more combinations do not exist (NO at S 41 ), the operation proceeds to &lt;S 43 &gt;.   &lt;S 42 &gt;: The statistical classifying unit  30  increments y and returns to &lt;S 36 &gt;.   &lt;S 43 &gt;: The statistical classifying unit  30  checks if all the groups registered in the unprocessed list of statistical classification are selected at &lt;S 34 &gt; or not. If all the groups are not selected (NO at S 43 ), the operation returns to &lt;S 33 &gt; to select an unprocessed group. On the other hand, all the groups are selected (YES at S 43 ), the operation terminates.   

     In the following, with reference to  FIGS. 15 through 26 , an example of the operation of the statistical classifying unit  30  will be explained.  FIGS. 15 through 26  explain table classification by the statistical classifying unit  30 . 
     At &lt;S 31 &gt;, the statistical classifying unit  30  inputs the table semantic classification table  21  shown in  FIG. 13 , and extracts the lowest level group of which the number of the table nodes  111  belonging to each group is equal to or greater than LOW_LEVEL_NUM (10. for example). 
     Here, the statistical classifying unit  30  extracts the group of the group number  1 , the group of the group number  21 , the group of the group number  221  . . . . 
     Next, at &lt;S 32 &gt;, the statistical classifying unit  30  registers the groups extracted at &lt;S 31 &gt; in the unprocessed list of statistical classification. 
     Further, at &lt;S 33 &gt;, the statistical classifying unit  30  assigns 1 to the variable y. 
     Next, at &lt;S 34 &gt;, the statistical classifying unit  30  selects one unprocessed group registered in the unprocessed list of statistical classification. Here, it is assumed that the group of the group number  21  is selected. 
       FIG. 15  shows an example of the table node  111  belonging to the group of the group number  221  in the table semantic classification table  21 . Here, in  FIG. 15 , in order to facilitate the explanation, identifiers of the table node  111  belonging to the group of the group number  221  are made different from the identifiers shown in  FIGS. 8 through 13 . Namely, in  FIG. 15 , fifteen table nodes  111  (TABLE  1  to TABLE  15 ) having the first column node  112  of the column number  4  (the column type is char( 32 )), the second column node  112  of the column number  7  (the column type is int), and the third column node  112  of the column number  6  (the column type is char(256)) belong to the group of the group number  221 . Further, in the flowchart shown in  FIG. 7 , since RECURSIVE_NUM is set to 20. twenty or more table nodes  111  are essentially supposed to belong to the group of the group number  221 . However, for the ease of explanation, it is assumed here that fifteen table nodes  111  belong to the group of the group number  221 . Namely, it is assumed that the group of the group number  221  is formed as shown in  FIG. 16 . 
     Further, the statistical classifying unit  30  extracts all the column numbers of the column node  112  belonging to the table node  111  in the selected group, and among the extracted column numbers, further extracts the column number registered in the frequently appearing column list  13 . Then, the statistical classifying unit  30  registers the extracted column number in the y unprocessed list. Here, it is assumed that the column number  5  (char( 64 )) is extracted as the column number registered in the frequently appearing column list. Namely, it is assumed that the column number  5  (char( 64 )) is registered in the y unprocessed list. 
     Next, at &lt;S 35 &gt;, the statistical classifying unit  30  extracts one combination of y (=1) column from they (=1) unprocessed list. Here, the column number  5  (char( 64 )) is extracted. 
     Further, the statistical classifying unit  30  calculates the support rate of the column number  5  (char( 64 )). Among fifteen table nodes  111  shown in  FIG. 15 , seven table nodes  111  include the column node  112  of column number  5  (char( 64 )). Therefore, the support rate is “ 7/15=46.7%”. Here, since this group has been grouped using the column nodes  112  up to the third column node from the top, the support rate is calculated as a rate of the table nodes  111  including the column number  5  (char( 64 )) in or after the fourth column node  112 . Here,  FIG. 17  shows the table nodes  111  including the column number  5  (char( 64 )) out of fifteen table nodes  111  belonging to the group of the group number  221 . 
     Next, at &lt;S 36 &gt;, the statistical classifying unit  30  determines if the support rate calculated at &lt;S 35 &gt;is less than the minimum support rate or not. Here, since the minimum support rate is set to 5%, the support rate of the column number  5  (char( 64 )) exceeds the minimum support rate (NO at S 36 ). Therefore, the operation proceeds to &lt;S 37 &gt;. 
     At &lt;S 37 &gt;, the statistical classifying unit  30  groups the table nodes  111  including the column number  5  (char( 64 )). Further, the column number  5  (char( 64 )) is registered in the y+1 unprocessed list. 
     Namely, as shown in  FIG. 18 , the group of the group number  221  is further grouped. That is, a group of the table nodes  111  including the column number  5  (char( 64 )) is formed within the group of the group number  221 . 
     At &lt;S 39 &gt;, since the support rate has been calculated for all combinations, the operation of the statistical classifying unit  30  proceeds to &lt;S 41 &gt;. Further, at &lt;S 41 &gt;, since two or more combinations do not exist in the y+1 unprocessed list, the operation of the statistical classifying unit  30  proceeds to &lt;S 43 &gt;. Namely, the processing for the group of the group number  221  terminates. 
     At &lt;S 43 &gt;, since unselected groups exist, the operation of the statistical classifying unit  30  returns to &lt;S 33 &gt; to carry out the processing for the groups other than the group number  221 . 
     Subsequently, at &lt;S 33 &gt;, the statistical classifying unit  30  assigns 1 to the variable y once again. 
     Next, at &lt;S 34 &gt;, the statistical classifying unit  30  selects one unprocessed group registered in the unprocessed list of statistical classification. Here, it is assumed that the group of the group number  32  is selected. 
       FIG. 19  shows an example of the table nodes  111  belonging to the group of the group number  32  in the table semantic classification table  21 . Here, in  FIG. 19 , in order to facilitate the explanation, identifiers of the table node  111  belonging to the group of the group number  32  are made different from the identifiers shown in  FIGS. 8 through 13 . Namely, in  FIG. 19 , eighteen table nodes  111  (TABLE  1  to TABLE  18 ) having the top column node  112  of the column number  7  (the column type is int), the second column node  112  of the column number  6  (the column type is char( 256 )) belong to the group of the group number  32 . Further, in the flowchart shown in  FIG. 7 , since RECURSIVE_NUM is set to  20 , twenty or more table nodes  111  are essentially supposed to belong to the group of the group number  32 . However, for the ease of explanation, it is assumed that eighteen table nodes  111  belong to the group of the group number  32  here. Namely, it is assumed that the group of the group number  32  is formed as shown in  FIG. 20 . 
     Further, it is assumed that the column number  4  (char( 32 )) and the column number  5  (char( 64 )) are extracted as the column number registered in the frequently appearing column list. Namely, it is assumed that the column number  4  (char( 32 )) and the column number  5  (char( 64 )) are registered in the y unprocessed list. 
     Next, at &lt;S 35 &gt;, the statistical classifying unit  30  extracts one combination of y (=1) column from the y (=1) unprocessed list. Here, the column number  4  (char( 32 )) is extracted. 
     Further, the statistical classifying unit  30  calculates the support rate of the column number  4  (char( 32 )). Among eighteen table nodes  111  shown in  FIG. 19 , twelve table nodes  111  include the column node  112  of the column number  4  (char( 32 )). Therefore, the support rate is “ 12/18=67%”. Here, since this group has been grouped using the column nodes  112  up to the second column node from the top, the support rate is calculated as a rate of the table nodes  111  including the column number  4  (char( 32 )) in or after the third column node  112 . Here,  FIG. 21  shows the table nodes  111  including the column number  4  (char( 32 )) out of eighteen table nodes  111  belonging to the group of the group number  32 . 
     Next, at &lt;S 36 &gt;, the statistical classifying unit  30  determines if the support rate calculated at &lt;S 35 &gt; is less than the minimum support rate or not. Here, since the minimum support rate is set to 5%, the support rate (67%) of the column number  4  (char( 32 )) exceeds the minimum support rate (5%) (NO at S 36 ). Therefore, the operation proceeds to &lt;S 37 &gt;. 
     At &lt;S 37 &gt;, since the support rate is equal or greater than the minimum support rate, the table nodes  111  including the column number  4  (char( 32 )) are grouped. Further, the column number  4  (char( 32 )) is registered in the y+1 (=2) unprocessed list. 
     At &lt;S 39 &gt;, since the support rate has not been calculated for all combinations, the operation proceeds to &lt;S 40 &gt;. 
     At &lt;S 40 &gt;, the support rate of the next column, that is, the column number  5  (char( 64 )) is calculated. Among eighteen table nodes  111  shown in  FIG. 19 , ten table nodes  111  include the column node  112  of the column number  5  (char( 64 )). Therefore, the support rate is “ 10/18=55.6%”. Here, since this group has been grouped by the column nodes  112  up to the second column node from the top, the support rate is calculated as a rate of the table nodes  111  including the column number  5  (char( 64 )) in or after the third column node  112 . Here,  FIG. 22  shows the table nodes  111  including the column number  5  (char( 64 )) out of eighteen table nodes  111  belonging to the group of the group number  32 . 
     Subsequently, at &lt;S 36 &gt;, it is determined if the support rate calculated is less than the minimum support rate or not, and the support rate (55.6%) of the column number  5  (char( 64 )) exceeds the minimum support rate (5%) (NO at S 36 ). Therefore, the operation proceeds to &lt;S 37 &gt;. 
     At &lt;S 37 &gt;, since the support rate is equal or greater than the minimum support rate, the table nodes  111  including the column number  5  (char( 64 )) are grouped. Further, the column number  5  (char( 64 )) is registered in the y+1 (=2) unprocessed list. 
     Namely, as shown in  FIG. 23 , the group of the group number  32  is further classified. That is, at this point, in the group of the group number  32 , the group of the table nodes  111  including the column number  4  (char( 32 )) and the group of the table nodes  111  including the column number  5  (char( 64 )) are formed. 
     At &lt;S 39 &gt;, since the support rate has been calculated for all combinations in the y unprocessed list, the operation proceeds to &lt;S 41 &gt;. 
     At &lt;S 41 &gt;, since two column nodes (the column number  4  (char( 32 ) and the column number  5  (char( 64 )) exist in the y+1 (=2) unprocessed list (YES at S 41 ), the operation proceeds to &lt;S 42 &gt;. Then, at &lt;S 42 &gt;, y is incremented, and the operation returns to &lt;S 35 &gt;. 
     At &lt;S 35 &gt;, the column number  4  (char( 32 )) and the column number  5  (char( 64 )) are extracted as y (=2) columns registered in the y unprocessed list. Then, a rate (the support rate) including both of the column number  4  (char( 32 )) and the column number  5  (char( 64 )) is calculated. Among eighteen table nodes  111  shown in  FIG. 19 , six table nodes  111  include the column node  112  of both of the column number  4  (char( 32 )) and the column number  5  (char( 64 )). Therefore, the support rate is “ 6/18=33.3%”. Here, since this group has been grouped using the column nodes  112  up to the second column node from the top, the support rate is calculated as a rate of the table nodes  111  including both of the column number  4  (char( 32 )) and the column number  5  (char( 64 )) in or after the third column node  112 . Here,  FIG. 24  shows the table nodes  111  including both of the column number  4  (char( 32 )) and the column number  5  (char( 64 )) out of eighteen table nodes  111  belonging to the group of the group number  32 . 
     Next, at &lt;S 36 &gt;, the statistical classifying unit  30  determines if the support rate calculated at &lt;S 35 &gt; is less than the minimum support rate or not. Here, the support rate (33.3%) of both of the column number  4  (char( 32 )) and the column number  5  (char( 64 )) exceeds the minimum support rate (5%) (NO at S 36 ). Therefore, the operation proceeds to &lt;S 37 &gt;. 
     At &lt;S 37 &gt;, since the support rate is equal or greater than the minimum support rate, the table nodes  111  including both of the column number  4  (char( 32 )) and the column number  5  (char( 64 )) are grouped. Further, the combination of the column number  4  (char( 32 )) and the column number  5  (char( 64 )) is registered in the y+1 (=3) unprocessed list. 
     Namely, as shown in  FIG. 25 , the group including the column number  4  (char( 32 )) and the group including the column number  5  (char( 64 )) formed in the group of the group number  32  are further classified. That is, the group of the table nodes  111  including both of the column number  4  (char( 32 )) and the column number  5  (char( 64 )) is formed both in the group including the column number  4  (char( 32 )) and the group including the column number  5  (char( 64 )) formed in the group of the group number  32 . 
     At &lt;S 39 &gt;, the support rate has been calculated for all combinations, the operation of the statistical classifying unit  30  proceeds to &lt;S 41 &gt;. Further, at &lt;S 41 &gt;, since two or more combinations do not exist in the y+1 unprocessed list, the operation of the statistical classifying unit  30  proceeds to &lt;S 43 &gt;. Namely, the processing for the group of the group number  32  terminates. 
     Here, in the foregoing explanation, as shown in  FIG. 23 , some table nodes  111  overlap both in the group of the table nodes  111  including the column number  4  (char( 32 )) and the group of the table nodes  111  including the column number  5  (char( 64 )). Namely, one table node  111  may be sometimes classified into plural groups. 
     However, another classification can be done avoiding classifying one table node  111  into plural groups. For example, when the support rate is calculated at &lt;S 40 &gt; or the table nodes are grouped at &lt;S 37 &gt;, the table node  111 , which has been already classified into another group, can be omitted from the processing. Namely, in the example of the group number  32 , the table node  111 , which has been classified into the group of the table nodes  111  including the column number  4  (char( 32 )), can be omitted from the calculation of the support rate for the column number  5  (char( 64 )) or the classification into the group including the column number  5  (char( 64 )). That is, in the calculation of the support rate for the column number  5  (char( 64 )), the calculation can be done based on how many table nodes  111  include the column number  5  (char( 64 )) among six table nodes  111  except twelve table nodes  111  which have been classified to the group of the table nodes  111  including the column number  4  (char( 32 )). Namely, as shown in  FIG. 26 , the number of table nodes  111 , which are classified to the group including the column number  5  (char( 64 )), is decreased. 
     In this case, the classification result is obtained with considering by priority the combination of columns previously selected at &lt;S 35 &gt;. Therefore, for example, at &lt;S 35 &gt;, a combination of columns having a high appearance rate can be selected sequentially from the highest appearance rate. 
     Like this, the table classification device  1  according to the present embodiment combines the semantic classification method and the statistical classification method. Consequently, it is possible to efficiently perform effective classification, which is closer to the classification of the user&#39;s intention than the mechanical classification. 
     The table classification device according to the present invention determines if tables are similar or not based on column information including location of columns in the table. Based on the location of columns in the table, it is possible to determine a role of the column in the table. Therefore, by the table classification device of the present invention, it is possible to determine the similarity of tables with considering roles of columns in the tables and to classify the tables. 
     Embodiment 2 
     In the first embodiment, the statistical classifying unit  30  carries out the processing with avoiding inclusion of overlapped columns. Namely, in the first embodiment, when extracting a combination of two or more columns at &lt;S 35 &gt;, the statistical classifying unit  30  extracts a combination of two or more different columns. For example, the statistical classifying unit  30  extracts the combination of the column number  4  (char( 32 )) and the column number  5  (char( 64 )). In other words, a combination including a plurality of the same columns is not extracted such as the combination of two column numbers  4  (char( 32 )). Here, the same column means columns of which the column type, the size, and the precision (scale) are the same. 
     In the present embodiment, the combination including a plurality of the same columns is also extracted. By extracting the combination including the plurality of the same columns, the classification of tables including a plurality of the same columns having the same column type, the size, and the scale (precision) can be done more efficiently. 
       FIG. 27  is a flowchart showing an operation of the statistical classifying unit  30  according to the present embodiment. 
     In the flowchart shown in  FIG. 27 , &lt;S 35 &gt;, &lt;S 40 &gt;, and &lt;S 41 &gt; of the flowchart shown in  FIG. 14  are respectively changed to &lt;S 35   a &gt;, &lt;S 40   a &gt;, and &lt;S 41   a &gt;. In other words, other process of the flowchart shown in  FIG. 27  are the same as ones of the flowchart shown in  FIG. 14 .
     &lt;S 35   a &gt;: The statistical classifying unit  30  extracts one combination of y columns with permitting inclusion of overlapped columns from the y unprocessed list. Namely, the statistical classifying unit  30  extracts also a combination including a plurality of the same columns. Further, the statistical classifying unit  30  calculates an appearance rate (a support rate) of combination of y columns in each table node  111  in the group.   &lt;S 40   a &gt;: As well as &lt;S 35   a &gt;, the statistical classifying unit  30  calculates the support rate of the next combination with permitting inclusion of overlapped columns.   &lt;S 41   a &gt;: It is determined if a combination of one or more columns exists in the y+1 unprocessed list. If the combination of one or more columns exists (YES at S 41 ), the operation proceeds to &lt;S 42 &gt;. On the other hand, if no combination of one or more columns exists (NO at S 41 ), the operation proceeds to &lt;S 43 &gt;. In the first embodiment, unless the combination of two or more columns exists, the grouping of the next hierarchy cannot be done by incrementing y However, here, if the combination of only one column exists, new grouping can be done by grouping the overlapped table nodes including the combination. Therefore, here, if only the combination of one or more columns exists, the operation proceeds to &lt;S 42 &gt;.   

     As an example of the classification, the group of the group number  32  shown in  FIG. 19  is classified in the method shown in  FIG. 27 . While y=1. the same processing is done as the first embodiment. Therefore, as shown in  FIG. 23 , a group of the table node  111  including the column number  4  (char( 32 )) and a group of the table node  111  including the column number  5  (char( 64 )) are formed in the group of the group number  32 . 
     Subsequently, y is incremented to y=2 at &lt;S 42 &gt;, and the operation returns to &lt;S 35   a&gt;.    
     At &lt;S 35   a &gt;, one combination of y (=2) columns, with permitting inclusion of overlapped combination, is extracted. Here, the column number  4  (char( 32 )) and the column number  5  (char( 64 )) are registered in the y unprocessed list. Therefore, a combination of two column numbers  4  (char( 32 )) is extracted. Then, a support rate of the extracted combination is calculated. 
     Six table nodes  111  include two or more column numbers  4  (char( 32 )). Therefore, the support rate is 6/18=33.3%. Here, since this group has been grouped using the column nodes  112  up to the second column node from the top, the support rate is calculated as a rate of the table nodes  111  including two or more column numbers  4  (char( 32 )) in or after the third column node  112 . Here,  FIG. 28  shows the table nodes  111  including two or more column numbers  4  (char( 32 )) out of eighteen table nodes  111  belonging to the group of the group number  32 . 
     Subsequently, at &lt;S 36 &gt;, it is determined if the calculated support rate is less than the minimum support rate or not, and the support rate (33.3%) of the column number  4  (char( 32 )) exceeds the minimum support rate (5%) (NO at S 36 ). Therefore, the operation proceeds to &lt;S 37 &gt;. 
     At &lt;S 37 &gt;, since the support rate is equal to or greater than the minimum support rate, the table nodes  111  including two or more column numbers  4  (char( 32 )) are grouped. Further, the combination of two column numbers  4  (char( 32 )) is registered in the y+1 (=3) unprocessed list. 
     Namely, as shown in  FIG. 29 , the group including the column number  4  (char( 32 )) formed in the group of the group number  32  are further classified. That is, the group of the table nodes  111  including two or more column numbers  4  (char( 32 )) is formed in the group including the column number  4  (char( 32 )) formed in the group of the group number  32 . 
     Subsequently, at &lt;S 39 &gt;, since all combinations have not been selected (NO at S 39 ), next combination is selected at &lt;S 40   a &gt; and the classification is carried out. Namely, the processing on a combination of two column numbers  5  (char( 64 )) and the processing on a combination of the column number  4  (char( 32 )) and the column number  5  (char( 64 )) are done in the same manner. 
     Then, y is incremented further, the processing on a combination of three column numbers  4  (char( 32 )), etc. is carried out in the same manner. The processing is repeated until an end condition is satisfied at &lt;S 41   a &gt;, and the processing terminates for this group when the end condition is satisfied at &lt;S 41   a&gt;.    
     After that, the processing is done for other groups in the same manner, and when the processing for all the groups is finished (YES at S 43 ), the processing of the statistical classifying unit  30  terminates. 
     Embodiment 3 
     In the above embodiments, the columns are compared to determine the equality (determination if they are similar or not) using the column list  12  of  FIG. 5 . In the present embodiment, the columns are further compared to determine the equality with considering if NULL value is allowed or not in each column. 
     In general, a column for which NULL value is not allowed is often a key item, which includes contents (quality) of data being different from an item for which NULL value is allowed. Therefore, by comparing the columns to determine the equality with considering availability of NULL value, it is possible to classify tables more efficiently. 
       FIG. 30  shows the column list  12  with considering availability of NULL value. 
     In the column list  12  shown in  FIG. 30 , the column number  121  is assigned separately according to the “availability of NULL value”  126  even if the column type  122 , the size  123 , and the scale  124  are the same. Namely, columns of which the column type  122 , the size  123 , the scale  124 , and the “availability of NULL value”  126  are the same are treated as the same columns. Instead of the column list  12  shown in  FIG. 5 , by using the column list  12  shown in  FIG. 30 , the semantic classification method and the statistical classification method discussed in the foregoing embodiments are carried out, and thus it is possible to classify the tables efficiently. 
     Embodiment 4 
     In the present embodiment, the columns are further compared to determine the equality with considering if each column is a key item or not. 
     A key item means a main key or a foreign key, etc. The column of key item has contents (quality) of data being different from the column which is not a key item. Therefore, by comparing the columns to determine the equality with considering if the column is a key item or not, it is possible to classify the tables more efficiently. 
       FIG. 31  shows the column list  12  with considering if it is a key item or not. 
     In the column list  12  shown in  FIG. 31 , the column number  121  is assigned separately according to an “indication of a key item”  127  even if the column type  122 , the size  123 , and the scale  124  are the same. Namely, columns of which the column type  122 , the size  123 , the scale  124 , and the “indication of a key item”  127  are the same are treated as the same columns. Instead of the column list  12  shown in  FIG. 5 , by using the column list  12  shown in  FIG. 31 , the semantic classification method and the statistical classification method discussed in the foregoing embodiments are carried out, and thus it is possible to classify the tables efficiently. 
     Further, another column list  12  can be used with dividing an key item into a main key and a foreign key. 
     That is, the table classification device  1  according to the foregoing embodiments accumulates comparisons of respective columns in the tables stored in databases of different types existing in a company. Then, by determining structural similarity among the tables formed by such columns, the classification of tables is carried out. 
     When summarized, the following can be said. 
     A table classification device I classifying tables stored in various databases of a company based on similarity of a type, a size, and a scale (precision) of columns which form the table, the table classification device  1  includes: 
     a list generating unit  10  inputting catalog information of the database, generating a table list  11 , and according to a column correspondence table  14  which describes relationship among columns of different databases, generating a column list  12  and a frequently appearing column list  13 ; 
     a semantic classifying unit  20  classifying with considering meaning of columns which form the database; and 
     a statistical classifying unit  30  carrying out classification based on statistical information of columns, and 
     the table classification device  1  classifies hierarchically by combining the classification method of the semantic classifying unit  20  and the classification method of the statistical classifying unit  30 . 
     The statistical classifying unit  30 , which classifies based on the statistical information of columns, carries out the statistical classification on classified result of the semantic classifying unit  20 , which classifies with considering meaning of columns that form the table, as a classification of upper hierarchy. 
     The column correspondence table  14  is characterized in that, by making correspondence among columns of databases of different types, compares the column type, the size, and the scale (precision) of data type defined in the databases of different types. 
     The semantic classifying unit  20 , which carries out classification with considering meanings of columns which form the database, is characterized to focus on an order of alignment of columns which form the table, and classify the tables according to the equality of the column type, the size, and the scale (precision) of some columns which form the table from the top of the node. 
     The statistical classifying unit  30 , which carries out classification based on statistical information of the columns, is characterized to classify the tables by the statistical classification method, which classifies the tables including combinations of columns of which the column type, the size, and the scale (precision) are the same with considering a combination of columns which form the table. 
     The statistical classification method, which classifies the tables with considering the combination of columns, is characterized to classify the tables according to the combination of columns with considering the number of appearances when a plurality of columns of the same type appear. 
     It is characterized to compare columns with considering the availability of NULL value of the column in addition to the column type, the size, and the scale (precision). 
     It is characterized to compare columns with considering if the column is a key item or not in addition to the column type, the size, and the scale (precision). 
     Further, a role of the column in the table means, for example, it is a key item, a main key, a foreign key, an index, etc. 
     Next, a hardware configuration of the table classification device  1  according to the foregoing embodiments will be explained. 
       FIG. 32  shows an example of the hardware configuration of the table classification device  1 . 
     As shown in  FIG. 32 , the table classification device  1  includes a CPU  911  (Central Processing Unit, also called as a processing unit, an operation unit, a microprocessor, a microcomputer, or a processor). The CPU  911  is connected to a ROM  913 , a RAM  914 , an LCD  901  (Liquid Crystal Display), a keyboard  902  (K/B), a communication board  915 , and a magnetic disk drive  920  via a bus  912 , and controls these hardware devices. The magnetic disk drive  920  can be replaced with memories such as an optical disk drive, a memory card reader/writer, etc. 
     The ROM  913  and the magnetic disk drive  920  are examples of a non-volatile memory The RAM  914  is an example of a volatile memory. The ROM  913 , the RAM  914 , and the magnetic disk drive  920  are examples of a memory device (memory). Further, the keyboard  902  and the communication board  915  are examples of an inputting device. Further, the communication board  915  is an example of a communication device. Further, the LCD  901  is an example of a displaying device. The communication board  915  and the LCD  901  are examples of an outputting device. 
     The magnetic disk drive  920  or the ROM  913  stores an operating system  921  (OS), a window system  922 , a group of programs  923 , and a group of files  924 . Programs of the group of programs  923  are executed by the CPU  911 , the operating system  921 , or the window system  922 . 
     The group of programs  923  stores programs of a software and a program for implementing functions which have been explained in the foregoing embodiments as “the list generating unit  10 ”, “the semantic classifying unit  20 ”, “the statistical classifying unit  30 ”, “the outputting unit  40 ”, etc. and other programs. The programs are read and executed by the CPU  911 . 
     The group of files  924  store information, data, signal values, variable values, or parameters such as “the table list  11 ”, “the column list  12 ”, “the frequently appearing column list  13 ”, “the column correspondence table  14 ”, “the table semantic classification table  21 ”, “the table classification list  31 ”, etc. as each item of “files” or “databases”. “Files” or “databases” are stored in a recording medium such as a disk or a memory. Information, data, signal values, variable values or parameters are read by the CPU  911  via a reading/writing circuit to a main memory or a cache memory and used for the operation of the CPU  911  such as extraction, retrieval, reference, comparison, operation, calculation, processing, output, printing, displaying, etc. During the operation of the CPU  911  of extraction, retrieval, reference, comparison, operation, calculation, processing, output, printing, and displaying, the information, data, signal values, variable values or parameters are temporarily stored in the main memory, the cache memory, or a buffer memory. 
     Further, an arrow of the flowcharts in the above explanation mainly shows an input/output of data or signals, and data or signal values are recorded in a memory of the RAM  914  or the recording medium such as the optical disk, etc. Further, the data or signals are transmitted on-line via transmission medium such as the bus  912 , the signal line, a cable, and so on. 
     Further, in the above explanation, what is explained as “—unit” can be “—circuit”, “—device”, “—equipment”, “—means”, “—function” and also can be “—step”, “—procedure”, “—process”. Further, what is explained as “—device” can be “—circuit”, “—device”, “—equipment”, “—means”, “—function” and also can be “—step”, “—procedure”, “—process”. Further, what is explained as “—process” can be “—step”. Namely, what is explained as “—unit” can be implemented by firmware stored in the ROM  913 . Or it can be implemented by only by software, only by hardware such as elements, devices, boards, wiring, etc., or a combination of software and hardware, and further implemented by a combination with firmware. The firmware and software are stored as programs in the recording medium such as the ROM  913 , etc. The programs are read by the CPU  911  and executed by the CPU  911 . Namely, the programs are to function a computer, etc. as “—unit” which has been explained above. Or the programs are to have a computer, etc. execute a procedure or a method of “—unit” which has been explained above. 
     Having thus described several particular embodiments of the present invention, various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and scope of the present invention. Accordingly, the foregoing description is by way of example only, and is not intended to be limiting. The present invention is limited only as defined in the following claims and the equivalents thereto.