WO2019034452A1 - Procede de completion de requete sql - Google Patents

Procede de completion de requete sql Download PDF

Info

Publication number
WO2019034452A1
WO2019034452A1 PCT/EP2018/071106 EP2018071106W WO2019034452A1 WO 2019034452 A1 WO2019034452 A1 WO 2019034452A1 EP 2018071106 W EP2018071106 W EP 2018071106W WO 2019034452 A1 WO2019034452 A1 WO 2019034452A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
sql
group
database
user
Prior art date
Application number
PCT/EP2018/071106
Other languages
English (en)
Inventor
Marie LE GUILLY
Jean-Marc Petit
Vasile-Marian SCUTURICI
Original Assignee
Institut National Des Sciences Appliquees De Lyon
Centre National De La Recherche Scientifique
Universite Claude Bernard Lyon 1
Université Lumière Lyon 2
Ecole Centrale De Lyon
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institut National Des Sciences Appliquees De Lyon, Centre National De La Recherche Scientifique, Universite Claude Bernard Lyon 1, Université Lumière Lyon 2, Ecole Centrale De Lyon filed Critical Institut National Des Sciences Appliquees De Lyon
Publication of WO2019034452A1 publication Critical patent/WO2019034452A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2425Iterative querying; Query formulation based on the results of a preceding query

Definitions

  • the present invention relates to the general technical field of database management methods. More specifically, the present invention relates to the field of methods for interrogating a database.
  • the present invention relates to a method for completing the SQL query.
  • DBMS Database Management Systems
  • FIG. 1 An example of a table is illustrated in FIG. 1.
  • Each line 1a, 1b, 1c, 1d of the table corresponds to one datum
  • each column 2a, 2b, 2c, 2d corresponds to an attribute
  • the value taken by each attribute may vary from one data to another.
  • Databases often come from the integration of existing systems, they can be very complex in terms of the number of tables, the number of attributes per table, and the amount of data stored.
  • search for data in a database a query language is used.
  • a query allows you to obtain the content of certain attributes of certain tables, this according to criteria predetermined by a user and which are defined in filters.
  • SQL Structured Query Language
  • the syntax of this language makes it possible to extract data from multiple sources, to filter these data, and to recompile them according to search criteria and relations between the tables, in particular to order them in a two-dimensional array.
  • the SQL language has multiple keywords to perform one or more of these actions as part of the same query. This language is extremely powerful but is reserved for advanced users having:
  • Document EP 1 353 279 discloses a method for adapting database queries comprising the steps of:
  • EP 1 353 279 is effective for adapting an initial request in the case of a database whose attributes are known and limited in number, it does not allow to complete queries when the attributes of the base of data are unknown to the user.
  • US 6,470,337 describes a method of retrieving information using a hierarchical index to reduce a recovery result.
  • Document US 6,470,337 proposes an approach resulting from a technique called "case-based reasoning", one of the branches of artificial intelligence, to help a user identify a finer condition to identify cases of interest.
  • the method described in US 6,470,337 can be summarized as follows:
  • the set of cases is seen as a database
  • a plurality of viewpoints on the database is defined with the notion of hierarchical indexed data, which allow to represent the plurality of data from different points of view; each hierarchical indexing can be seen as a grouping of the data according to a point of view;
  • An object of the present invention is to provide a method for facilitating writing of SQL queries. More specifically, an object of the present invention is to provide a method of completion of a SQL query for simplifying access to data contained in a database.
  • the invention proposes a method for generating SQL queries implemented in a terminal including processing means, display means and input means, the method comprising the following steps:
  • said plurality of completed SQL queries comprising: ora first completed SQL query for the first group, said first SQL query making it possible to extract from the database the data contained in the first group,
  • the method comprises a step of dividing the plurality of data contained in the resulting table into at least first and second groups of separate data each satisfying a respective similarity criterion. This step is implemented upstream in search of attributes to define each group.
  • a data grouping step is implemented to identify an attribute making it possible to refine a result of querying said database, testing each attribute one by one.
  • the fact that the method comprises (following the step of dividing the data of the resulting array) a step of constructing a decision tree structure enables each group to be defined according to attributes. explicative without prior knowledge of these attributes by the user.
  • Preferred but nonlimiting aspects of the device according to the invention are the following: the method comprises a step of receiving a maximum number of groups for partitioning the data entered by the user on the input means, the step partitioning method comprising ranking the plurality of data in an amount of groups less than or equal to the maximum number of groups;
  • the method may furthermore comprise: ora step of receiving a threshold value entered by the user on the input means and representative of a maximum number of distinct values that can take a usable attribute to define the classification rules,
  • the method may further comprise a step of receiving a maximum depth for the tree structure, the step of constructing the tree structure comprising generating nodes and classification rules so that the number of nodes between the root and each end of the tree structure is less than or equal to the maximum depth minus one;
  • the plurality of data contained in the resulting array may consist of a subset of the set of data retrieved from the initial request; the initial request includes at least:
  • FROM ora statement relating to the selection of at least one table of the database in which to search for each selected attribute
  • the step of generating completed SQL queries comprises, for each group of data, the insertion in the initial request of the classification rules associated with said data group;
  • the invention also relates to a computer program product including program code instructions recorded on a computer readable medium, for carrying out the steps of the method described above when said program is run on a computer.
  • FIG. 1 is a schematic representation of a table of a database
  • FIG. 2 is a schematic representation of the different steps of the SQL query completion method
  • FIG. 3 is a schematic representation of the operating principle of certain steps of the SQL query completion method
  • FIG. 4 is a schematic representation of a system for implementing the SQL query completion method
  • FIG. 5 is a schematic representation of a graphical interface adapted to the SQL query completion method.
  • processing means 10 such as a processor and a memory programmed for the implementation of the method
  • display means 20 such as a touch screen, notably enabling the display of SQL queries to a user
  • input means 30 such as a keyboard allowing the user to write an initial SQL request.
  • the terminal (on which the completion method can be programmed) is for example composed of one (or more) workstation (s), and / or one (or more) computer (s) and / or a mobile phone, and / or an electronic tablet (such as an IPAD®), a personal assistant (or "PDA", the acronym for the "Personal Digital Assistant"), and / or any another type of terminal known to those skilled in the art.
  • the method comprises:
  • the first step 100 of the method concerns the reception of an initial SQL request entered by the user.
  • an SQL query is a text that gives an order to execute to a database engine on a database.
  • the SQL query can involve one or more tables and can be of arbitrary complexity, from a few lines to several pages.
  • the initial request entered by the user can be composed of:
  • the initial request entered by the user can be precise (if the user has knowledge of the database manipulated) or generic.
  • the result of the completion of the SQL query proposed by the method depends on the accuracy of the request initially entered by the user. Nevertheless, even if a generic request is initially entered by the user, a succession of completed SQL requests will be proposed to him. He can then refine his search by integrating one of the completed SQL queries as an initial request. The process is in this sense "iterative", and helps the user to specify his interest data.
  • Obtaining a resulting array The second step 200 of the method consists in obtaining a resulting table. This resulting array is obtained from the initial SQL query, according to the instructions and information it contains, including the table (s) in which the user wants the data to be extracted.
  • the resulting array may comprise only part of the data of the data set, limiting the size of the output for example by sampling or adding a SQL filter.
  • the step of obtaining the resulting table can be interrupted.
  • the resulting array includes only a subset of data belonging to the set of data that the execution of the initial query retrieves.
  • the initial query projects the result on a subset of attributes, in particular with a "SELECT" statement for selecting one (or more) attribute (s) of interest, it is not considered when getting the resulting array: all possible attributes are kept.
  • the data is extracted in their entirety to maximize learning opportunities from the data.
  • the third step 300 of the method consists in partitioning the data contained in the resulting array. Specifically, the data contained in the resulting array is divided into groups using a data partitioning algorithm.
  • Data partitioning (or "data clustering") is a method of data analysis for dividing a set of data into different homogeneous "groups" of data, the data of each group sharing common characteristics, corresponding to the more often to proximity criteria (computer similarity) defined by introducing measures and classes of distance between objects.
  • centroid-based methods such as k-means or k-medoid algorithms
  • the data contained in the resulting array is classified into separate groups c1, c2, c3 (i.e. data belonging to a group c1 can not belong to another group c2, c3).
  • the data of the resulting array can be separated into first and second groups:
  • the method may include a step of receiving a maximum number of groups desired by the user.
  • the data is classified in a quantity of groups limited to the maximum number of groups desired by the user. This allows the user to choose a degree of fineness for the score according to his needs.
  • the fourth step 400 of the method consists of constructing a decision tree structure (also known as a "decision tree").
  • Decision tree generators are automated data analysis systems. They can analyze large amounts of data, and construct a tree structure to describe how to determine a target dataset based on a set of explanatory attributes.
  • An "explanatory attribute” is a relevant attribute for the construction of the tree structure. Not all attributes of a given data are relevant to describe how to determine a target dataset. For example, an attribute whose value is never the same from one data to another in a table (for example, the attribute "size" 2e of the table illustrated in FIG. 1) does not make it possible to define groups of data, but only singular data in the table.
  • a decision tree also called a classification tree is composed of nodes and leaves:
  • each node i.e. junction between two branches of the tree
  • each sheet corresponds to a collection of respective data.
  • the construction of the tree structure continues until the data contained in each collection all belongs to a single group. It is said that the data in the collection are homogeneous.
  • the data of a leaf of the tree structure can therefore correspond to:
  • a part of the data of a group (collections c1 of the tree 50 illustrated in FIG. 3); in this case, several sheets must be combined to arrive at the interest group for which it is desired to generate an SQL query allowing the extraction of data from the group in the database.
  • the decision tree structure may comprise more leaves than the number of groups obtained at the output of the partitioning step.
  • the method may comprise a prior step of receiving a threshold value representative of a maximum number of distinct values that can be taken by a relevant attribute for carrying out tests in the tree structure. This allows the user to define which attributes can be used to describe how to determine a group in the tree structure (ie which attributes can be used in the test nodes). For example, in the case of the table illustrated in FIG.
  • the threshold value is defined as being equal to 2
  • the "first name” attribute 2a will be considered irrelevant during the construction of the tree structure (and will not be therefore not used for a test in the nodes of the structure), while the attribute "sex” will be considered as relevant (and can therefore be used for a test in a node if it is relevant to describe a group) .
  • the method may also include a step of receiving a maximum depth for the tree structure.
  • the fifth step 500 of the method consists of generating SQL queries from the tree structure constructed in the previous step.
  • each collection may consist of some or all of the data in a group.
  • the generation of an associated SQL query consists in collecting the test (s) of the various nodes making it possible to reach the collection considered.
  • each test relates to a value of an attribute of the data to be classified.
  • Each test is converted into an additional clause to be added to the initial request received from the user. The concatenation of the various additional clauses to the initial request makes it possible to generate a completed query whose execution on the data base induces the extraction of the data of the group.
  • the generation of an associated SQL query consists in collecting the tests of the various nodes making it possible to reach the different collections whose union forms the group. Once collected, the tests are converted into additional clauses allowing the selection of data ("WHERE” / "AND” instructions) from the different collections. These additional clauses are added to the SQL request received from the user to form a completed request allowing the extraction (of the database) of the data of the group when said request is executed.
  • Each request thus generated makes it possible to extract the data of a respective group.
  • the step of generating SQL queries makes it possible to generate a number of queries equal to the number of groups obtained during the partitioning step. 2.6. Viewing
  • the sixth step of the method consists in displaying the generated SQL queries on display means such as a screen. This allows the user to select from the set of completed requests, the one of interest to him.
  • the operating principle of the method is as follows.
  • the user uses the input means 30 to enter an initial SQL request in a dialogue window 5 provided for this purpose.
  • a dialogue window 5 provided for this purpose.
  • it may also specify:
  • a threshold value representing a maximum number of distinct values that an attribute can take for example using a second virtual rule 7,
  • a maximum depth for the tree structure for example using a third virtual rule 8.
  • the processing means 10 of the terminal extract from a database 40 the data satisfying the initial request. This extracted data is stored in the resulting array (Ans Q, d). The data contained in the resulting table is then classified by group d, c2, c3. The ranking of a given item in a group is a function of its similarity with other group data.
  • different partitioning methods k-means, "k-modes", etc.
  • a tree structure 50 (also known as a "decision tree") is constructed from the groups thus formed. During the construction of this tree structure, threshold conditions relating to the values that certain attributes of the different data can take are determined. These threshold conditions make it possible to define criteria that satisfy the data of each group. To construct a tree structure from the data, various methods known to those skilled in the art can be used.
  • the threshold conditions of the tree structure are then used to formulate completed SQL queries Rc1, Rc2, Rc3, (by integrating the threshold conditions into the initial request), each completed SQL request Rc1, Rc2, Rc3 for extracting from the database, the data of a respective group c1, c2, c3.
  • the method described above makes it possible to generate completed SQL queries from an initial request entered by the user. Unlike the existing solutions, the method according to the invention is centered on the data of the request, that is to say on the semantics that the request conveys through its data.
  • This process facilitates the writing of SQL statements for the user, especially in complex contexts (large volume of data, complexity of the basic schema (number of tables, number of attributes per table), naming of attributes not very explicit, lack knowledge of the user, etc.).
  • the method described above allows the user, starting with any initial request (which can be very general and therefore easily expressible in SQL), to refine it by completion (by specifying additional data selection clauses). until you reach the data sought by the user.
  • the method according to the invention makes it possible to reduce the time spent by a user to design SQL queries.
  • each completed query itself contains information about the structure of the database (in addition to the data it extracts from the database by executing it).
  • the completed queries can reveal patterns in the data that the user was not necessarily initially aware of.
  • the inventors have been led to study a database in which a table comprising 1200 columns, entitled Data0001, Data0002, and so on until Datai 200.
  • the purpose of the SQL query completion method is to propose SQL query completions, that is to say, starting from an initial query, to keep this query, but to add conditions to make it more specific and therefore return fewer results. Thus, it is hoped to be able to give the user a completion leading the data group of interest.
  • the proposed SQL query completion method is based on the use of machine learning techniques. To find completions from an initial query Q which is known to evaluate years (Q, d) on a database, one can rely on a method including the two steps below:
  • the step of searching for a request consists in finding additional clauses to be added to the initial request Q to obtain the good completion Q 'making it possible to obtain the desired set of results.
  • a decision tree can be used to move from the known result set to an SQL query.
  • a decision tree is a supervised algorithm, that is, the The data on which it is built must be labeled so that the tree learns to discriminate between different classes.
  • the prior step of partitioning allows labeling of the data by group, considering that the group to which a tuple belongs corresponds to its class.
  • a course of the tree then makes it possible to obtain the class conjunctions leading to a sheet representing a given class.
  • These clauses are directly injectable in the initial request.
  • This process has the advantage of being completely transparent to the user, which thus remains in the world of SQL queries without having to really understand what is happening in the background. Indeed, the user has only to provide an initial request input, to obtain several possible completions output.
  • the learning algorithms are necessarily very sensitive to the data, and the attributes specified by the user can completely modify the result of the completion.
  • the maximization step therefore aims to select as many attributes as possible in order to widen the learning field as much as possible, and to be able to guide the user on attributes that he would not have thought of.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

La présente invention concerne un procédé pour la génération de requêtes SQL comprenant les étapes suivantes : - recevoir (100) une requête SQL initiale, - déterminer (200) un tableau résultant comprenant une pluralité de données, - diviser(300)la pluralité de données en au moins des premier et deuxième groupes de données distincts, - construire (400) une structure arborescente de décision (50) - générer (500) une pluralité de requêtes SQL complétées à partir de la structure arborescente, - afficher (600) la pluralité de requêtes SQL complétées.

Description

PROCEDE DE COMPLETION DE REQUETE SQL
DOMAINE DE L'INVENTION La présente invention concerne le domaine technique général des procédés de gestion de base de données. Plus précisément, la présente invention concerne le domaine des procédés d'interrogation d'une base de données.
Notamment, la présente invention concerne un procédé pour la complétion de requête SQL.
ARRIERE PLAN DE L'INVENTION
Depuis 40 ans, les systèmes de gestion de bases de données (SGBD) ont connu un développement sans précédent.
Aujourd'hui, les bases de données sont utilisées pour stocker un très grand nombre de données issues de sources multiples. Il est connu que ces données (ou enregistrements) soient stockées dans des tables comportant chacune plusieurs attributs (ou champs).
A titre indicatif, un exemple de table est illustré à la figure 1. Chaque ligne 1 a, 1 b, 1 c, 1 d de la table correspond à une donnée, et chaque colonne 2a, 2b, 2c, 2d correspond à un attribut, la valeur prise par chaque attribut pouvant varier d'une donnée à une autre.
Les bases de données étant souvent issues de l'intégration de systèmes existants, celles-ci peuvent être très complexes en ce qui concerne le nombre de table, le nombre d'attributs par table, ainsi que la quantité de données stockées. Pour rechercher des données dans une base de données, un langage de requête est utilisé. Une requête permet notamment d'obtenir le contenu de certains attributs de certaines tables, ceci en fonction de critères prédéterminés par un utilisateur et qui sont définis dans des filtres.
Un exemple de langage de requête utilisé pour interroger une base de données est le langage SQL (sigle de l'expression anglo-saxonne « Structured Query Language », signifiant « langage de requête structurée » en français).
La syntaxe de ce langage permet d'extraire des données provenant de sources multiples, de filtrer ces données, et de les recompiler en fonction de critères de recherche et de relations entre les tables, notamment pour les ordonner dans un tableau à deux dimensions.
Le langage SQL comporte de multiples mots clés afin de réaliser une ou plusieurs de ces actions dans le cadre d'une même requête. Ce langage est extrêmement puissant mais est réservé à des utilisateurs avertis ayant :
- une très bonne maîtrise du langage, et
- une connaissance fine de la (ou des) base(s) de données interrogée(s).
En particulier, afin de formuler une requête SQL, il est nécessaire de préciser :
- les attributs pour lesquels des données sont recherchées,
- les tables contenant ces attributs,
- les filtres mis en œuvre, ainsi que
- les relations entre les tables contenant les différents attributs, tels que définis dans la base.
Or aujourd'hui, il est très rare qu'un utilisateur implémentant des requêtes SQL pour l'interrogation d'une base de données soit le concepteur de la base de données elle- même, de sorte qu'une connaissance du langage SQL n'est plus suffisante pour permettre l'interrogation d'une base de données. Par ailleurs, avec la démocratisation de l'accès aux données, des utilisateurs sans connaissances spécifiques des SGBD sont amenées à implémenter des requêtes SQL, malgré leur peu de connaissance sur leur mode de fonctionnement. On connaît du document EP 1 353 279 un procédé pour l'adaptation de requêtes de base de données comprenant les étapes consistant à :
- générer une requête initiale définie par un utilisateur,
- identifier un ensemble de résultats correspondant à ladite requête initiale au moyen d'un moteur de recherche,
- si le nombre de résultats de l'ensemble est dans une plage prescrite, les afficher à l'utilisateur;
- si le nombre de résultats de l'ensemble est supérieur à ladite plage, subdiviser ledit ensemble de résultats en au moins deux sous-ensembles de résultats en associant des contraintes supplémentaires à la requête initiale, et afficher des informations concernant lesdites contraintes supplémentaires et le nombre de résultats dans les sous-ensembles respectifs de résultats,
- si le nombre de résultats de l'ensemble est inférieur à ladite plage, construire au moins une requête « relâchée » comprenant uniquement certaines contraintes de la requête initiale, identifier un ensemble de résultats « relâché » correspondant à cette requête « relâchée », et afficher des informations concernant ladite requête « relâchée » et le nombre de résultats de l'ensemble « relâché » identifié.
Même si la solution dans EP 1 353 279 est efficace pour adapter une requête initiale dans le cas d'une base de données dont les attributs sont connus et en nombre limité, elle ne permet pas de compléter des requêtes lorsque les attributs de la base de données sont inconnus de l'utilisateur.
Le document US 6 470 337 décrit un procédé de récupération d'informations utilisant un index hiérarchique pour réduire un résultat de récupération. Le document US 6 470 337 propose une approche issue d'une technique dite du « raisonnement à base de cas », une des branches de l'intelligence artificielle, pour aider un utilisateur à identifier une condition plus fine pour identifier des cas d'intérêt. La méthode décrite dans US 6 470 337 peut se résumer ainsi :
- L'ensemble de cas est vu comme une base de données ;
- Une pluralité de points de vue sur la base de données est définie avec la notion d'indexés hiérarchiques de données, qui permettent de représenter la pluralité des données sous différents points de vue ; chaque indexation hiérarchique peut se voir comme un regroupement des données selon un point de vue ;
- A partir d'une sélection de cas « intéressants pour l'utilisateur » issus de la base de données, la méthode propose :
o Identifier des « nœuds requêtes » et des « nœuds réponses » à partir des indexes hiérarchiques disponibles, et ne garder que ceux susceptibles de fournir une restriction utile des données,
o Trier la liste de questions (les noeuds utiles) à présenter à l'utilisateur en utilisant « information attendue » basée sur l'entropie de Shanon (test utilisé dans l'algorithme ID3 (cf. colonne 14, ligne 20) pour la construction d'arbre de décision). Le partitionnement initial des données, nécessaire pour le calcul de l'information attendue, est déduit des « cas intéressants » fournies pour l'utilisateur,
o 3. Interagir avec l'utilisateur pour sélectionner les données caractérisées par la question sélectionnée.
Même si la solution dans US 6 470 337 permet d'obtenir une nouvelle condition pour sélectionner des données d'intérêts, dans le cas d'une base de données dont les attributs sont connus et en nombre limité, elle ne permet pas de compléter des requêtes lorsque les attributs de la base de données sont inconnus de l'utilisateur. Par ailleurs, l'hypothèse de l'expression de la pluralité des points de vues avec des indexes hiérarchiques nécessitent de dupliquer les données, ce qui est incompatible dans le cadre des bases de données massives actuelles (également connues sous le nom de « big data »). Un but de la présente invention est de proposer un procédé permettant de faciliter écriture de requêtes SQL. Plus précisément, un but de la présente invention est de proposer un procédé de complétion d'une requête SQL permettant de simplifier l'accès aux données contenues dans une base de données.
BREVE DESCRIPTION DE L'INVENTION
A cet effet, l'invention propose un procédé pour la génération de requêtes SQL mis en œuvre dans un terminal incluant des moyens de traitement, des moyens d'affichage et des moyens de saisie, le procédé comprenant les étapes suivantes :
- recevoir une requête SQL initiale saisie par un utilisateur sur les moyens de saisie (ou choisie par l'utilisateur lors d'une précédente itération du procédé),
- déterminer un tableau résultant comprenant une pluralité de données extraites par les moyens de traitement d'une base de données à partir de la requête SQL initiale,
- diviser, en utilisant un algorithme de partitionnement de données, la pluralité de données contenues dans le tableau résultant en au moins des premier et deuxième groupes de données distincts :
oies données du premier groupe satisfaisant au moins un premier critère de similarité, et
oies données du deuxième groupe satisfaisant au moins un deuxième critère de similarité distinct du premier critère,
- construire en utilisant un générateur d'arbre de décision, une structure arborescente de décision permettant la classification des premier et deuxième groupes, la structure arborescente comprenant une pluralité de nœuds et de règles de classification,
- générer une pluralité de requêtes SQL complétées à partir des règles de classification de la structure arborescente, ladite pluralité de requêtes SQL complétées comprenant : oune première requête SQL complétée pour le premier groupe, ladite première requête SQL permettant d'extraire de la base de données, les données contenues dans le premier groupe,
oune deuxième requête SQL complétée pour le deuxième groupe, ladite deuxième requête SQL permettant d'extraire de la base de données, les données contenues dans le deuxième groupe,
- afficher sur des moyens d'affichage les première et deuxième requêtes SQL complétées. Ainsi dans le cadre de la présente invention, le procédé comprend une étape consistant à diviser la pluralité de données contenues dans le tableau résultant en au moins des premier et deuxième groupes de données distincts satisfaisant chacun un critère de similarité respectif. Cette étape est mise en œuvre en amont à la recherche d'attributs permettant de définir chacun des groupes. Au contraire dans le procédé selon EP 1 353 279 où les attributs des données stockés dans la base de données sont connus et en nombre limité, une étape de regroupement de données est mise en œuvre pour identifier un attribut permettant d'affiner un résultat d'interrogation de ladite base de données, en testant chaque attribut un à un. Dans le cadre de la présente invention, le fait que le procédé comprenne (à la suite de l'étape consistant à diviser les données du tableau résultant) une étape consistant à construire une structure arborescente de décision permet définir chaque groupe en fonction d'attributs explicatifs sans connaissance a priori de ces attributs par l'utilisateur. Des aspects préférés mais non limitatifs du dispositif selon l'invention sont les suivants : - le procédé comprendre une étape de réception d'un nombre maximum de groupes pour le partitionnement des données saisi par l'utilisateur sur les moyens de saisie, l'étape de partitionnement comprenant le classement de la pluralité de données dans une quantité de groupes inférieure ou égale au nombre maximum de groupes ;
- le procédé peut comprendre en outre : oune étape de réception d'une valeur seuil saisie par l'utilisateur sur les moyens de saisie et représentative d'un nombre maximal de valeurs distinctes que peut prendre un attribut utilisable pour définir les règles de classification,
oune étape de sélection parmi les attributs d'une donnée, des attributs dont le nombre de valeurs distinctes est inférieur au nombre maximal, d'utilisation d'au moins un des attributs sélectionnés pour définir une règle de classification ;
le procédé peut comprendre en outre une étape de réception d'une profondeur maximale pour la structure arborescente, l'étape de construction de la structure arborescente comprenant la génération de nœuds et de règles de classification de sorte que le nombre de nœuds entre la racine et chaque extrémité de la structure arborescente soit inférieur ou égale à la profondeur maximale moins un ;
la pluralité de données contenues dans le tableau résultant peut consister en un sous-ensemble de l'ensemble des données extraites à partir de la requête initiale ; la requête initiale comprend au moins :
oune instruction (« SELECT ») relative à la sélection d'au moins un attribut d'au moins une base de données,
oune instruction (« FROM ») relative à la sélection d'au moins une table de la base de données dans laquelle rechercher chaque attribut sélectionné,
l'instruction relative à la sélection d'au moins un attribut n'étant pas prise en compte lors de l'étape consistant à déterminer le tableau résultant ;
- l'étape consistant à générer des requêtes SQL complétées comprend, pour chaque groupe de données, l'insertion dans la requête initiale des règles de classification associées audit groupe de données ;
L'invention concerne également un produit programme d'ordinateur incluant des instructions de code programme enregistrées sur un support lisible par un ordinateur, pour mettre en œuvre les étapes du procédé décrit ci-dessus lorsque ledit programme est exécuté sur un ordinateur. BREVE DESCRIPTION DES DESSINS
D'autres avantages et caractéristiques du procédé de complétion de requête SQL selon l'invention ressortiront mieux de la description qui va suivre de plusieurs variantes d'exécution, données à titre d'exemples non limitatifs, à partir des dessins annexés sur lesquels :
- La figure 1 est une représentation schématique d'une table d'une base de données,
- La figure 2 est une représentation schématique des différentes étapes du procédé de complétion de requête SQL,
- La figure 3 est une représentation schématique du principe de fonctionnement de certaines étapes du procédé de complétion de requête SQL,
- La figure 4 est une représentation schématique d'un système pour la mise en œuvre du procédé de complétion de requête SQL,
- La figure 5 est une représentation schématique d'une interface graphique adaptée au procédé de complétion de requête SQL.
DESCRIPTION DETAILLEE DE L'INVENTION
On va maintenant décrire un exemple de procédé de complétion de requête SQL en référence aux figures 1 à 5. Dans ces différentes figures, les éléments équivalents sont désignés par la même référence numérique. 1. Généralités
Le procédé de complétion de requête SQL est adaptable sur tout type de terminal incluant (cf figure 4) :
- des moyens de traitement 10 - tels qu'un processeur et une mémoire - programmés pour la mise en œuvre du procédé, - des moyens d'affichage 20 - tels qu'un écran tactile - permettant notamment l'affichage de requêtes SQL à un utilisateur,
- des moyens de saisie 30 - tels qu'un clavier - permettant à l'utilisateur l'écriture d'une requête SQL initiale.
Le terminal (sur lequel le procédé de complétion peut être programmé) est par exemple composé d'une (ou plusieurs) station(s) de travail, et/ou d'un (ou plusieurs) ordinateur(s) et/ou d'un téléphone portable, et/ou d'une tablette électronique (tel qu'un IPAD®), un assistant personnel (ou « PDA », sigle de l'expression anglo-saxonne « Personal Digital Assistant »), et/ou de tout autre type de terminal connu de l'homme du métier.
En référence à la figure 2, on a illustré les différentes étapes du procédé de complétion de requête SQL. Le procédé comprend :
- la réception 100 d'une requête SQL initiale saisie par un utilisateur,
- l'obtention 200 d'un tableau résultant,
- la partition 300 des données contenues dans le tableau résultant,
- la construction 400 d'une structure arborescente à partir de la partition des données,
- la génération 500 de requêtes SQL à partir de l'arbre de décision,
- l'affichage 600 des requêtes générées et le choix par l'utilisateur de l'une d'elle à partir d'un critère statistique (nombre de lignes retournées par le résultat de la complétion sur le nombre de lignes du résultat de la requête initiale) et du « pattern » ou motif révélé par la complétion elle-même.
2. Description du procédé de complétion de requête SQL
2.1. Réception d'une requête SQL initiale La première étape 100 du procédé concerne la réception d'une requête SQL initiale saisie par l'utilisateur. Comme décrit précédemment, une requête SQL est un texte qui donne un ordre à exécuter à un moteur de base de données sur une base de données. La requête SQL peut mettre en jeu une ou plusieurs tables et peut être de complexité arbitraire, de quelques lignes à plusieurs pages.
La requête initiale saisie par l'utilisateur peut être composée :
- d'instruction en langage SQL, telles que les instructions :
o « SELECT » qui permet de sélectionner un (ou plusieurs) attribut(s) (i.e. colonne) d'intérêt d'une (ou plusieurs) table(s),
o « FROM » qui permet de sélectionner la (ou les) table(s) dans laquelle rechercher chaque enregistrement,
o « WHERE » qui permet de sélectionner les enregistrements (i.e. ligne d'une table) respectant une condition, etc.
- d'informations relatives au contenu recherché telles que le (ou les) attribut(s) d'intérêt, la (ou les) table(s) d'intérêt, la (ou les) condition(s) que doivent satisfaire les enregistrement(s), etc.
La requête initiale saisie par l'utilisateur peut être précise (si l'utilisateur a une connaissance de la base de données manipulée) ou générique.
Bien entendu, le résultat de la complétion de requête SQL proposée par le procédé dépend de la précision de la requête saisie initialement par l'utilisateur. Néanmoins, même si une requête générique est initialement saisie par l'utilisateur, une succession de requêtes SQL complétées lui sera proposé. Il pourra par la suite affiner sa recherche en intégrant l'une des requêtes SQL complétée en tant que requête initiale. Le processus est en ce sens « itératif », et aide l'utilisateur à spécifier ses données d'intérêts. 2.2. Obtention d'un tableau résultant La deuxième étape 200 du procédé consiste à obtenir un tableau résultant. Ce tableau résultant est obtenu à partir de la requête SQL initiale, en fonction des instructions et informations qu'elle contient, et notamment de la (ou les) table(s) dans laquelle l'utilisateur souhaite que les données soient extraites.
L'exécution de cette requête SQL initiale permet l'extraction d'un ensemble de données.
Avantageusement lorsque le nombre de données de l'ensemble de données est trop important, le tableau résultant peut comprendre uniquement une partie des données de l'ensemble de données, en limitant la taille de la sortie par exemple en procédant par échantillonnage ou en ajoutant un filtre SQL. Ceci permet de limiter la durée de la deuxième étape d'extraction des données à partir de la requête initiale, ainsi que la durée de traitement des étapes suivantes du procédé. Par exemple lorsque le nombre de données obtenues à partir de la requête initiale dépasse une valeur seuil, l'étape d'obtention du tableau résultant peut être interrompue. Dans ce cas, le tableau résultant ne comprend qu'un sous-ensemble de données appartenant à l'ensemble de données que l'exécution de la requête initiale permet d'extraire.
Si la requête initiale projette le résultat sur un sous-ensemble d'attributs, notamment avec une instruction « SELECT » pour la sélection d'un (ou plusieurs) attribut(s) d'intérêt, elle n'est pas considérée lors de l'obtention du tableau résultant : tous les attributs possibles sont gardés. Ainsi, les données sont extraites dans leur intégralité afin de maximiser les possibilités d'apprentissage à partir des données.
En effet, l'unique prise en compte des attributs d'intérêt peut s'avérer insuffisante pour une mise en œuvre efficace du procédé. Le fait d'extraire tous les attributs associés à une donnée lors de l'étape d'obtention du tableau résultant autorise la prise en compte d'autres attributs que les attributs d'intérêt, notamment lors des étapes suivantes de partitionnement et de construction de la structure arborescente.
2.3. Partition des données
La troisième étape 300 du procédé consiste à partitionner les données contenues dans le tableau résultant. Plus précisément, les données contenues dans le tableau résultant sont divisées en groupes en utilisant un algorithme de partitionnement de données. Le partitionnement de données (ou « data clustering » en anglais) est une méthode d'analyse des données visant à diviser un ensemble de données en différents « groupes » homogènes de données, les données de chaque groupe partageant des caractéristiques communes, qui correspondent le plus souvent à des critères de proximité (similarité informatique) définis en introduisant des mesures et classes de distance entre objets.
Les méthodes de partitionnement des données sont bien connues de l'homme du métier et ne seront pas décrites plus en détails dans la suite. Dans le cadre de la présente invention, différentes méthodes de partitionnement de données peuvent être utilisées en fonction de l'application visée, parmi lesquelles :
- Les méthodes basées centroïdes (telles que les algorithmes des k-moyennes ou k-médoïdes),
- Les méthodes de regroupement hiérarchique ;
- Les méthodes de maximisation de l'espérance (EM) ;
- Les méthodes basées sur la densité (telles que DBSCAN ou OPTICS)
- etc.
A l'issue de l'étape de partitionnement, les données contenues dans le tableau résultant sont classées en groupes distincts c1 , c2, c3 (c'est-à-dire qu'une donnée appartenant à un groupe c1 ne peut pas appartenir à un autre groupe c2, c3). Par exemple, les données du tableau résultant peuvent être séparées dans des premier et deuxième groupes :
- les données du premier groupe satisfaisant au moins un premier critère de similarité, et
- les données du deuxième sous-ensemble satisfaisant au moins un deuxième critère de similarité distinct du premier critère,
les premier et deuxième groupes contenant des données différentes. Dans certaines variantes de réalisation, le procédé peut comprendre une étape de réception d'un nombre maximal de groupes souhaité par l'utilisateur. Dans ce cas, les données sont classées dans une quantité de groupes limitée au nombre maximal de groupes souhaité par l'utilisateur. Ceci permet à l'utilisateur de choisir un degré de finesse pour la partition en fonction de ses besoins.
2.4. Construction d'un arbre de décision
La quatrième étape 400 du procédé consiste à construire une structure arborescente de décision (également connue sous le nom « d'arbre de décision »).
Les Générateurs d'arbres de décision sont des systèmes d'analyse automatisée de données. Ils permettent d'analyser de grandes quantités de données, et de construire une structure arborescente permettant de décrire la façon de déterminer un groupe de données cible en fonction d'un ensemble d'attributs explicatifs.
Un « attribut explicatif » est un attribut pertinent pour la construction de la structure arborescente. Tous les attributs d'une donnée ne sont pas forcément pertinents pour décrire la façon de déterminer un groupe de données cible. Par exemple, un attribut dont la valeur n'est jamais la même d'une donnée à l'autre dans une table (par exemple l'attribut « taille » 2e de la table illustré à la figure 1 ) ne permet pas de définir des groupes de données, mais uniquement des données singulières dans la table. Un arbre de décision (aussi appelé arbre de classification) est composé de nœuds et de feuilles :
- chaque nœud (i.e. jonction entre deux branches de l'arbre) constitue un test portant sur la valeur d'un attribut explicatif des données à classer ;
- chaque feuille (i.e. terminaison libre d'une branche non connectée à d'autres branches) correspond à une collection de données respectives.
De préférence, la construction de la structure arborescente continue jusqu'à ce que les données contenues dans chaque collection appartiennent toutes à un unique groupe. On dit alors que les données de la collection sont homogènes. Dans le cas d'une collection homogène, les données d'une feuille de la structure arborescente peuvent donc correspondre à :
- La totalité des données d'un groupe (collections c2 et c3 de l'arbre 50 illustré sur la figure 3), ou
- Une partie des données d'un groupe (collections c1 de l'arbre 50 illustré à la figure 3) ; dans ce cas, plusieurs feuilles doivent être combinées pour aboutir au groupe d'intérêt pour lequel on souhaite générer une requête SQL permettant l'extraction dans la base de données, des données du groupe.
On comprend de ce qui précède que la structure arborescente de décision peut comprendre plus de feuilles que le nombre de groupes obtenus en sortie de l'étape de partition. Dans certaines variantes de réalisation de l'invention, le procédé peut comprendre une étape préalable de réception d'une valeur seuil représentative d'un nombre maximal de valeurs distinctes que peut prendre un attribut pertinent pour la réalisation de tests dans la structure arborescente. Ceci permet à l'utilisateur de définir quels attributs peuvent être utilisés afin de décrire la façon de déterminer un groupe dans la structure arborescente (i.e. quels attributs peuvent être utilisés dans les nœuds tests). Par exemple dans le cas de la table illustrée à la figure 1 , si la valeur seuil est définie comme étant égale à 2, l'attribut « prénom » 2a sera considéré comme non pertinent lors de la construction de la structure arborescente (et ne sera donc pas utilisé pour un test dans les nœuds de la structure), tandis que l'attribut « sexe » sera considéré comme pertinent (et pourra donc être utilisé pour un test dans un nœud s'il s'avère pertinent pour décrire un groupe).
Le procédé peut également comprendre une étape de réception d'une profondeur maximale pour la structure arborescente.
2.5. Génération de requêtes SQL
La cinquième étape 500 du procédé consiste à générer des requêtes SQL à partir de la structure arborescente construite à l'étape précédente.
Comme indiqué précédemment, chaque collection peut consister en une partie ou la totalité des données d'un groupe.
Lorsque toutes les données d'un groupe sont contenues dans une collection de données, la génération d'une requête SQL associée consiste à collecter le (ou les) test(s) des différents nœuds permettant d'aboutir à la collection considérée. Comme indiqué précédemment, chaque test porte sur une valeur d'un attribut des données à classer. Chaque test est converti en une clause additionnelle à ajouter à la requête initiale reçue de l'utilisateur. La concaténation des différentes clauses additionnelles à la requête initiale permet de générer une requête complétée dont l'exécution sur la base de données induit l'extraction des données du groupe.
Lorsque les données d'un groupe sont contenues dans plusieurs collections de données, la génération d'une requête SQL associée consiste à collecter les tests des différents nœuds permettant d'aboutir aux différentes collections dont l'union forme le groupe. Une fois collectés, les tests sont convertis en clauses additionnelles permettant la sélection des données (instructions « WHERE » / « AND ») des différentes collections. Ces clauses additionnelles sont ajoutées à la requête SQL reçue de l'utilisateur pour former une requête complétée permettant l'extraction (de la base de données) des données du groupe lorsque ladite requête est exécutée.
Chaque requête ainsi générée permet d'extraire les données d'un groupe respectif. L'étape de génération de requêtes SQL permet de générer un nombre de requêtes égal au nombre de groupes obtenus lors de l'étape de partitionnement. 2.6. Affichage
La sixième étape du procédé consiste à afficher les requêtes SQL générées sur des moyens d'affichage tel qu'un écran. Ceci permet à l'utilisateur de sélectionner parmi l'ensemble des requêtes complétées, celle présentant un intérêt pour lui.
Si l'utilisateur considère que les requêtes complétées ne permettent pas une sélection suffisamment limitée par rapport à ses besoins, celui-ci peut alors remplacer la requête initiale par l'une des requêtes complétées.
Jusqu'à satisfaction de l'utilisateur, les étapes du procédé peuvent alors être réitérées pour affiner les résultats et générer des requêtes complétées plus précises correspondant à ce qu'il ou elle avait à l'esprit.
2.7. Principe de fonctionnement
En référence aux figures 2, 3 et 5, le principe de fonctionnement du procédé est le suivant. L'utilisateur utilise les moyens de saisi 30 pour saisir une requête SQL initiale dans une fenêtre de dialogue 5 prévue à cet effet. Dans certains modes de réalisation, il peut également spécifier :
- un nombre maximal de groupes souhaité, par exemple à l'aide d'une première règle virtuelle 6,
- une valeur seuil représentative d'un nombre maximal de valeurs distinctes que peut prendre un attribut, par exemple à l'aide d'une deuxième règle virtuelle 7,
- une profondeur maximale pour la structure arborescente, par exemple à l'aide d'une troisième règle virtuelle 8.
A partir d'une requête initiale saisie par un utilisateur, les moyens de traitement 10 du terminal extraient d'une base de données 40 les données satisfaisant la requête initiale. Ces données extraites sont stockées dans le tableau résultant (Ans Q, d). Les données contenues dans le tableau résultant sont ensuite classées par groupe d , c2, c3. Le classement d'une donnée dans un groupe est fonction de sa similarité avec les autres données du groupe. Pour classer les données par groupes, différentes méthodes de partitionnement (« k-means », « k-modes », etc.) connues de l'homme du métier peuvent être utilisées.
Une structure arborescente 50 (également connue sous le nom « d'arbre de décision ») est construite à partir des groupes ainsi formés. Au cours de la construction de cette structure arborescente, des conditions seuil relatives aux valeurs que peuvent prendre certains attributs des différentes données sont déterminées. Ces conditions seuils permettent de définir des critères que satisfont les données de chaque groupe. Pour construire une structure arborescente à partir des données, différentes méthodes connues de l'homme du métier peuvent être utilisées.
Les conditions seuil de la structure arborescente sont ensuite utilisées pour formuler des requêtes SQL complétées Rc1 , Rc2, Rc3, (en intégrant les conditions seuil dans la requête initiale), chaque requête SQL complétée Rc1 , Rc2, Rc3 permettant d'extraire de la base de données, les données d'un groupe respectif c1 , c2, c3.
Ces requêtes SQL complétées Rc1 , Rc2, Rc3 sont ensuite affichées à l'utilisation, par exemple dans une fenêtre de dialogue 9.
2.8. Résumé
Le procédé décrit précédemment permet de générer des requêtes SQL complétées à partir d'une requête initiale saisie par l'utilisateur. Contrairement aux solutions existantes, le procédé selon l'invention est centré sur les données de la requête, c'est-à- dire sur la sémantique que véhicule la requête à travers ses données.
Ce procédé facilite l'écriture de requête SQL pour l'utilisateur, notamment dans des contextes complexes (volume important de données, complexité du schéma de base (nombre de tables, nombre d'attribut par table), nommage des attributs peu explicite, manque de connaissance de l'utilisateur, etc.).
Plus spécifiquement, le procédé décrit précédemment permet à l'utilisateur, en commençant par une requête initiale quelconque (qui peut être très générale et donc facilement exprimable en SQL), de la raffiner par complétion (en spécifiant des clauses additionnelles de sélection de données) jusqu'à aboutir aux données recherchées par l'utilisateur. Le procédé selon l'invention permet de diminuer le temps passé par un utilisateur pour concevoir des requêtes SQL. De plus, chaque requête complétée contient elle-même de l'information concernant la structure de la base de données (outre les données qu'elle permet d'extraire de la base de données en l'exécutant). Ainsi, les requêtes complétées peuvent permettre de révéler des motifs dans les données dont l'utilisateur n'avait pas forcément conscience initialement. On va maintenant décrire plus en détail les grands principes associés au procédé selon l'invention.
3. Théorie relative à l'invention
Avec la prolifération des données connue sous le terme « mégadonnées » (ou « big data » en anglai), les volumes de données traitées sont devenus de plus en plus conséquent. Cette augmentation du volume de données a directement impacté les bases de données, qui ont tendance à contenir plus de tables (parfois des centaines), dont certaines peuvent elles-mêmes contenir de très nombreux attributs (parfois des milliers de colonnes). Cela donne lieu à des structures complexes, pour lesquels il peut alors être difficile d'être rigoureux, notamment en ce qui concerne la dénomination associée à chaque attribut.
Par exemple, les inventeurs ont été amenés à étudier une base de données dans laquelle une table comprenant 1200 colonnes, intitulées Data0001 , Data0002, et ainsi de suite jusqu'à Datai 200.
Dès lors que l'on souhaite interroger une telle base, la formulation d'une requête SQL devient complexe, voire impossible sans connaissance des entités physiques et structurelles associées à chaque attribut. Cet exemple n'est pas un cas isolé, et de manière générale, un analyste passe plus de temps à formuler une requête SQL qu'il n'en faut au SGBD pour l'évaluer et retourner le résultat.
Dans ces conditions, il semble nécessaire de concevoir des solutions permettant une aide à la formulation de requêtes. Si des aides syntaxiques existent déjà, pour suggérer des mots clés ou des éléments connus du schéma, cela n'apporte aucun élément nouveau à un analyste vis-à-vis des données elles-mêmes. C'est pourquoi les inventeurs ont développé un procédé de complétion de requête SQL basé sur les données, c'est-à-dire prenant en compte les informations sur le contenu même de la base de données.
L'objectif du procédé de complétion de requête SQL est de proposer des complétions de requête SQL, c'est-à-dire, en partant d'une requête initiale, de garder cette requête, mais de lui ajouter des conditions permettant de la rendre plus spécifique et donc de renvoyer moins de résultats. Ainsi, on espère pouvoir donner à l'utilisateur une complétion le menant groupe de données d'intérêt. Dans la suite, on présentera le procédé de complétion en référence à l'adjonction de conditions au niveau d'une clause « Where » de la requête SQL. Il est bien entendu pour l'homme du métier que le procédé de complétion décrit ci-dessous peut s'appliquer à l'ajout de conditions sur d'autres clauses que la clause « Where » de la requête SQL initial.
Pour schématiser, on peut considérer le problème de complétion en référence à la requête ci-dessous :
Clauses additionnelle
Figure imgf000022_0001
- Q représente la requête initiale, et
- Qi une complétion de Q. Le procédé de complétion de requête SQL proposé est basé sur l'utilisation de techniques d'apprentissage automatique. Pour trouver des complétions à partir d'une requête initiale Q dont on connaît l'évaluation ans(Q, d) sur une base de données, on peut se baser sur une méthode incluant les deux étapes ci-dessous :
- la division de ans(Q, d) en différents groupes de tuples,
- la recherche d'une requête pour chaque groupe telle que le résultat de cette requête retourne les tuples du groupe.
Pour réaliser ces deux étapes, il est possible d'utiliser deux méthodes bien connues dans le monde de l'apprentissage automatique. Concernant l'étape de division de ans(Q, d), un algorithme de partitionnement (« clustering » en anglais) peut être utilisé. En effet, l'objectif étant de diviser un ensemble de données en différents groupes, cette méthode est adaptée. Bien entendu d'autres méthodes pourraient être utilisées. Par exemple les tuples pourraient être séparés de manières aléatoires pour les répartir dans différents groupes. Mais l'utilisation du partitionnement permet de faire une séparation basée sur les données elles-mêmes, et donc de faire une séparation ayant un sens.
Une fois les données séparées, on souhaite trouver les requêtes permettant d'obtenir ces différents groupes. On connaît une partie de la requête que l'on souhaite trouver (issue de la requête initiale). Ainsi pour chaque groupe, l'étape de recherche d'une requête consiste à trouver des clauses additionnelles à ajouter à la requête initiale Q pour obtenir la bonne complétion Q' permettant d'obtenir l'ensemble de résultats souhaité. Un arbre de décision peut être utilisé pour passer de l'ensemble de résultat connus à une requête SQL. Un arbre de décision est un algorithme supervisé, c'est-à-dire que les données sur lesquelles il se construit doivent être labellisés afin que l'arbre apprenne à discriminer entre les différentes classes.
Dans le cas présent, l'étape préalable de partitionnement permet une labellisation des données par groupe, en considérant que le groupe auquel un tuple appartient correspond à sa classe. Un parcours de l'arbre permet ensuite d'obtenir les conjonctions de classe menant à une feuille représentant une classe donnée. Ces clauses sont directement injectables dans la requête initiale. On peut donc représenter le processus de complétion comme sur la figure 2. A partir de l'évaluation d'une requête initiale sur une base de données, on applique un partitionnement pour obtenir différents groupes de tuples. Un arbre de décision est ensuite utilisé pour discriminer entre les groupes, et ses clauses de décisions sont utilisées pour construire des complétions.
Ce processus à l'avantage d'être complètement transparent à l'utilisateur, qui reste ainsi dans le monde des requêtes SQL sans avoir besoin de comprendre réellement ce qui se passe en arrière-plan. En effet, l'utilisateur n'a qu'à fournir une requête initiale en entrée, pour en obtenir plusieurs complétions possibles en sortie.
Ainsi, la couche supplémentaire d'apprentissage automatique est « cachée » puisque l'utilisateur reste dans l'environnement habituel en n'ayant à manipuler que des requêtes SQL. Une version en pseudo-code de l'algorithme de la solution proposée est donnée ci- dessous à titre d'exemple :
Figure imgf000025_0001
L'homme du métier appréciera que dans ce pseudocode, une version maximisée de la requête initiale Q est utilisée. Cette maximisation se fait au niveau de la projection des attributs de la requête. En effet ceux-ci déterminent les attributs présents dans ans(Q, d), et donc les données sur lesquels les méthodes de partitionnement et d'arbre de décision vont apprendre.
Or les algorithmes d'apprentissage sont forcément très sensibles aux données, et les attributs spécifiés par l'utilisateur peuvent complètement modifier le résultat de la complétion.
L'utilisateur peut par exemple ne pas sélectionner des attributs qui auraient pourtant été les plus pertinents. L'étape de maximisation vise donc à sélectionner le plus d'attributs possible afin d'élargir autant que possible le champ d'apprentissage, et de pouvoir guider l'utilisateur sur des attributs auquel il n'aurait pas forcément pensé.
Bien entendu dans d'autres modes de réalisation du procédé, une version non maximisée de la requête initiale peut être utilisée. Le lecteur aura compris que de nombreuses modifications peuvent être apportées à l'invention décrite précédemment sans sortir matériellement des nouveaux enseignements et des avantages décrits ici. Par conséquent, toutes les modifications de ce type sont destinées à être incorporées à l'intérieur de la portée des revendications jointes.

Claims

REVENDICATIONS
Procédé pour la génération de requêtes SQL mis en œuvre dans un terminal incluant des moyens de traitement, des moyens d'affichage et des moyens de saisie, le procédé comprenant les étapes suivantes :
- recevoir (100) une requête SQL initiale saisie par un utilisateur sur les moyens de saisie (30) (ou choisie par l'utilisateur lors d'une précédente itération du procédé),
- déterminer (200) un tableau résultant comprenant une pluralité de données extraites par les moyens de traitement (10) d'une base de données à partir de la requête SQL initiale,
- diviser (300), en utilisant un algorithme de partitionnement de données, la pluralité de données contenues dans le tableau résultant en au moins des premier et deuxième groupes de données distincts :
oies données du premier groupe (c1 ) satisfaisant au moins un premier critère de similarité, et
oies données du deuxième groupe (c2) satisfaisant au moins un deuxième critère de similarité distinct du premier critère,
- construire (400) en utilisant un générateur d'arbre de décision, une structure arborescente de décision (50) permettant la classification des premier et deuxième groupes (c1 , c2), la structure arborescente comprenant une pluralité de nœuds et de règles de classification,
- générer (500) une pluralité de requêtes SQL complétées à partir des règles de classification de la structure arborescente, ladite pluralité de requêtes SQL complétées comprenant :
oune première requête SQL complétée (Rc1 ) pour le premier groupe (c1 ), ladite première requête SQL permettant d'extraire de la base de données, les données contenues dans le premier groupe,
oune deuxième requête SQL complétée (Rc2) pour le deuxième groupe (c2), ladite deuxième requête SQL permettant d'extraire de la base de données, les données contenues dans le deuxième groupe, - afficher (600) sur des moyens d'affichage (20) les première et deuxième requêtes
SQL complétées.
Procédé selon la revendication 1 , lequel comprend une étape de réception d'un nombre maximum de groupes pour le partitionnement des données saisi par l'utilisateur sur les moyens de saisie (30), l'étape de partitionnement comprenant le classement de la pluralité de données dans une quantité de groupes inférieure ou égale au nombre maximum de groupes.
Procédé selon la revendication 1 , lequel comprend en outre :
- une étape de réception d'une valeur seuil saisie par l'utilisateur sur les moyens de saisie (30) et représentative d'un nombre maximal de valeurs distinctes que peut prendre un attribut utilisable pour définir les règles de classification,
- une étape de sélection parmi les attributs d'une donnée, des attributs dont le nombre de valeurs distinctes est inférieur au nombre maximal,
- l'utilisation d'au moins un des attributs sélectionnés pour définir une règle de classification.
Procédé selon la revendication 1 , lequel comprend en outre une étape de réception d'une profondeur maximale pour la structure arborescente, l'étape de construction de la structure arborescente comprenant la génération de nœuds et de règles de classification de sorte que le nombre de nœuds entre la racine et chaque extrémité de la structure arborescente soit inférieur ou égale à la profondeur maximale moins un.
Procédé selon la revendication 1 , dans lequel la pluralité de données contenues dans le tableau résultant consiste en un sous-ensemble de l'ensemble des données extraites à partir de la requête initiale. 6. Procédé selon la revendication 1 , dans lequel la requête initiale comprend au moins :
- une instruction (« SELECT ») relative à la sélection d'au moins un attribut d'au moins une base de données, - une instruction (« FROM ») relative à la sélection d'au moins une table de la base de données dans laquelle rechercher chaque attribut sélectionné,
l'instruction relative à la sélection d'au moins un attribut n'étant pas prise en compte lors de l'étape consistant à déterminer le tableau résultant.
Procédé selon la revendication 1 , dans lequel l'étape consistant à générer des requêtes SQL complétées comprend, pour chaque groupe de données, l'insertion dans la requête initiale des règles de classification associées audit groupe de données.
Produit programme d'ordinateur incluant des instructions de code programme enregistrées sur un support lisible par un ordinateur, pour mettre en œuvre les étapes du procédé selon l'une des revendications précédentes lorsque ledit programme est exécuté sur un ordinateur.
PCT/EP2018/071106 2017-08-14 2018-08-03 Procede de completion de requete sql WO2019034452A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1757682A FR3070074A1 (fr) 2017-08-14 2017-08-14 Procede de completion de requete sql
FR1757682 2017-08-14

Publications (1)

Publication Number Publication Date
WO2019034452A1 true WO2019034452A1 (fr) 2019-02-21

Family

ID=61655823

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2018/071106 WO2019034452A1 (fr) 2017-08-14 2018-08-03 Procede de completion de requete sql

Country Status (2)

Country Link
FR (1) FR3070074A1 (fr)
WO (1) WO2019034452A1 (fr)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470337B1 (en) 1998-12-24 2002-10-22 Nec Corporation Information retrieval system using a hierarchical index for narrowing a retrieval result and its method and storing medium with information retrieval program stored therein
EP1353279A1 (fr) 2002-04-12 2003-10-15 Bouygues S.A. Procédé et système assistés par ordinateur pour adaptation pilotée par des données de requêtes de base de données

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470337B1 (en) 1998-12-24 2002-10-22 Nec Corporation Information retrieval system using a hierarchical index for narrowing a retrieval result and its method and storing medium with information retrieval program stored therein
EP1353279A1 (fr) 2002-04-12 2003-10-15 Bouygues S.A. Procédé et système assistés par ordinateur pour adaptation pilotée par des données de requêtes de base de données

Also Published As

Publication number Publication date
FR3070074A1 (fr) 2019-02-15

Similar Documents

Publication Publication Date Title
US10997244B2 (en) Method and system for identifying and discovering relationships between disparate datasets from multiple sources
Van Zwol et al. Faceted exploration of image search results
Firan et al. Bringing order to your photos: event-driven classification of flickr images based on social knowledge
US8903794B2 (en) Generating and presenting lateral concepts
CN102567483B (zh) 多特征融合的人脸图像搜索方法和系统
Cafarella et al. Web-scale extraction of structured data
EP1426882A2 (fr) Stockage et récuperation des informations
Zaharieva et al. Automated social event detection in large photo collections
EP2188744A1 (fr) Installation de gestion d'une base de données
FR3043816A1 (fr) Procede de suggestion de contenus extraits d’un ensemble de sources d’information
Taipalus Vector database management systems: Fundamental concepts, use-cases, and current challenges
FR2939537A1 (fr) Systeme de recherche d'information visuelle
Kumar et al. Web 2.0 social bookmark selection for tag clustering
Olivares et al. Boosting image retrieval through aggregating search results based on visual annotations
WO2019034452A1 (fr) Procede de completion de requete sql
US20160147879A1 (en) Fuzzy Search and Highlighting of Existing Data Visualization
Yuan et al. Feature selection with data field
Schich et al. Exploring co-occurrence on a meso and global level using network analysis and rule mining
CH717260A2 (fr) Méthode mise en oeuvre par ordinateur pour la recherche analogique de documents.
Mousselly-Sergieh et al. Tag relatedness in image folksonomies
Rahman et al. An efficient approach for web mining using semantic web
EP1334444A1 (fr) Procede de recherche, de selection et de representation cartographique de pages web
Pleska et al. A framework for interrogating social media images to reveal an emergent archive of war
Sebastine et al. Semantic web for content based video retrieval
KR102649622B1 (ko) 브랜드 평판 분석 서비스를 제공하기 위한 방법, 컴퓨터 장치, 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18746716

Country of ref document: EP

Kind code of ref document: A1