FR 2920897 A1 20090313 FR 0757494 A 20070911 Procédé d'interrogation d'une base de données et dispositif d'interrogation La présente invention concerne un procédé d'interrogation ou de modification d'une base de données. De nos jours, 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 soient stockées dans des tables comportant chacune plusieurs champs, ces tables étant définies par le modèle de données. Des relations sont établies et mémorisées dans la base de données entre les champs des différentes tables. Afin d'obtenir les données recherchées dans une base de données, il est connu d'utiliser un langage de requête permettant une interrogation de la base io de données. Ainsi, une requête permet notamment d'obtenir le contenu de certains champs de certaines tables, ceci en fonction de critères prédéterminés qui sont couramment définis dans des filtres. Un langage utilisé couramment pour interroger une base de données est le langage SQL. La syntaxe de ce langage permet l'extraction de données is provenant de sources multiples, de les filtrer et de les recompiler en fonction de critères de recherche et des 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. 20 Ce langage est extrêmement puissant mais est réservé à des utilisateurs avertis ayant une très bonne maîtrise du langage. En particulier, afin de formuler une requête, il est nécessaire, conformément au langage SQL, de préciser les champs pour lesquels des données sont recherchées, les tables contenant ces champs, les filtres mis en oeuvre, ainsi que les relations entre les 25 tables contenant les différents champs, tels que définis dans la base. L'usage de ces requêtes est délicat et l'invention a pour but de proposer un procédé et des moyens de requête d'une base de données permettant d'accéder plus simplement aux données contenues dans la base. A cet effet, l'invention a pour objet un procédé d'interrogation ou de 30 modification d'une base de données comportant : - plusieurs tables chacune avec des champs, et - des relations entre les champs de tables différentes, le procédé comportant les étapes de: 1) renseigner une unique table privilégiée; 2) renseigner au moins un champ dans une autre table pour lequel des 5 données sont recherchées ou à modifier; ET/OU 2') renseigner au moins un filtre portant sur un champ d'une autre table permettant la sélection des données recherchées ou à modifier, 3) identifier dans la base de données, à partir des champs saisis et des io champs figurant dans les filtres saisis, les tables contenant ces champs ; 4) identifier dans la base de données, à partir des champs saisis et des champs figurant dans les filtres saisis, les relations entre ces champs de tables différentes ; 5) reformuler une requête auprès de la base de données en mentionnant 15 complètement : - les champs pour lesquels des données sont recherchées ou à modifier, - les tables identifiées contenant des champs saisis et 1 ou des champs figurant dans le filtre, - des jointures représentatives des relations entre les champs des 20 différentes tables 6) appliquer la requête à la base. Suivant des modes particuliers de mise en oeuvre, le procédé comporte l'une ou plusieurs des caractéristiques suivantes : - la saisie de filtres permettant la sélection des données recherchées ne 25 comporte pas la mention explicite des jointures représentatives des relations entre les champs de tables différentes, - la reformulation de la requête est faite en langage SQL, - la relation à une autre table est saisie implicitement dans un filtre en utilisant le nom d'un champ utilisé par la jointure dans le cas d'une relation 30 � plusieurs vers 1 �, - la relation à une autre table est saisie dans le filtre en utilisant, pour désigner les champs d'une table autre que la table saisie, une formulation contenant la forme : champsource.champdestination où champsource est le champs de la table de départ et champdestination est le champs de la table d'arrivée dans le cas d'une relation � plusieurs à 1 �, - la relation à une autre table est saisie dans le filtre en utilisant un nom préalablement affecté dans le modèle de données de la base de données à la 5 relation dans le cas d'une relation � 1 à plusieurs �, - les conditions imbriquées de filtrage sont saisies comme des variables du filtre identifiées par une syntaxe prédéterminée ({.}), sans que la variable ne comporte la mention explicite des jointures représentatives des relations entre les champs des différentes tables, to - le filtre comporte au moins un opérateur de comparaison de champs éventuellement combiné par des ET / OU. L'invention a en outre pour objet une installation d'interrogation ou de modification d'une base de données comportant une base de données ayant : - plusieurs tables chacune avec des champs, et 15 - des relations entre les champs de tables différentes, l'installation comportant : 1) des moyens pour renseigner une unique table privilégiée; 2) des moyens pour renseigner au moins un champ dans une autre table pour lequel des données sont recherchées ou à modifier; 20 ET/OU 2') des moyens pour renseigner au moins un filtre portant sur un champ d'une autre table permettant la sélection des données recherchées ou à modifier, 3) des moyens pour identifier dans la base de données, à partir des champs saisis et des champs figurant dans les filtres saisis, les tables contenant 25 ces champs ; 4) des moyens pour identifier dans la base de données, à partir des champs saisis et des champs figurant dans les filtres saisis, les relations entre ces champs de tables différentes ; 5) des moyens pour reformuler une requête auprès de la base de données 30 en mentionnant complètement : - les champs pour lesquels des données sont recherchées ou à modifier, - les tables identifiées contenant des champs saisis et / ou des champs figurant dans le filtre, - des jointures représentatives des relations entre les champs des différentes tables 6) des moyens pour appliquer la requête à la base. L'invention sera mieux comprise à la lecture de la description qui va 5 suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins, sur lesquels : - la figure 1 est une vue schématique d'une installation de gestion de base de données selon l'invention ; et - la figure 2 est un organigramme du procédé d'interrogation mis en 10 oeuvre. Sur la figure 1 est illustré un dispositif 10 d'interrogation de base de données comportant une base de données 12 et des moyens 14 d'interrogation de la base de données. Ces moyens d'interrogation sont formés par exemple d'un ordinateur mettant en oeuvre des logiciels adaptés. 15 En particulier, les moyens d'interrogation comportent un module de saisie 16 constitué par exemple d'un clavier et d'un éditeur de requête permettant la formulation de requêtes suivant un format prédéfini. L'interrogation peut également être effectuée sans intervention humaine dans le cadre de l'exécution d'un programme informatique. 20 Ils comportent en outre un module de conversion 18 connecté au module de saisie pour recevoir les requêtes formulées. Le module de conversion 18 est relié à la base de données 12 par une liaison permettant notamment la connaissance par le module de conversion des relations entre les champs des différentes tables de la base de données tels que celles-ci sont définies dans le 25 modèle de données. Les moyens de conversion 18 sont propres à retranscrire une requête initiale saisie depuis le module 14 suivant un format initial en une requête SQL complète ayant un format conforme au langage SQL en tenant compte du contenu de la requête Initiale et des relations recueillies dans la base entre les champs des 3o différentes tables de la base de données. Les moyens d'interrogation 14 comportent un module logiciel d'interrogation de la base 12 à partir de requêtes SQL. Ce module est désigné par requêteur SQL. Ce module est propre à recevoir des requêtes formulées au format SQL issues du module de conversion 18 et à extraire de la base de données 12 les données correspondant aux requêtes. Enfin, les moyens 14 comportent un module 22 de mise à disposition des données recueillies en réponse aux requêtes SQL formulées. II s'agit par 5 exemple d'un écran d'affichage de l'ordinateur ou de moyens de sauvegarde des données extraites. La base de données 12 comporte comme connu en soi un ensemble de tables 12A, 12B, 12C, 12D, par exemple au nombre de quatre. Chaque table comporte un ensemble de champs. Certains champs des différentes tables sont io reliés entre eux par des relations encore désignées couramment par � jointures �. Par exemple, les quatre tables sont respectivement "Clients", "Entreprises", "Produits", et "Achats". Les quatre tables contiennent les champs indiqués ci-dessous et sont telles qu'illustrées sur la figure 2. 15 Table Clients : IdClient : identifiant du client et clé de la table Nom : Nom du client Adresse : Adresse de l'entreprise Entreprise : référence à l'identifiant noté IdEnt de l'entreprise à laquelle 20 appartient le client, cet identifiant étant le premier champ de la table Entreprises. Important : contient Oui ou Non selon l'importance d'un client - Table Entreprises : IdClient : identifiant de l'entreprise et clé de la table Nom : Nom de l'entreprise 25 Secteur : Secteur d'activité de l'entreprise (Bâtiment ou informatique par exemple). - Table Produits proposant une liste de produits IdProd : identifiant du produit et clé de la table Nom : Nom du produit 30 Secteur : Secteur d'activité auquel se destine ce produit. Prix : Prix du produit Equivalent : référence à autre produit noté IdProd équivalent à celui-ci - Table Achats contenant la liste des achats réalisés par un client. Client : référence au client noté IdClient Produit : référence au produit acheté noté IdProd Quantité : nombre de produits achetés Date : Date de l'achat. Dans l'exemple considéré, les relations suivantes ont été définies entre les champs des tables. Ces relations peuvent être établies en consultant le modèle de données de la base de données. Les relations sont nommées pour pouvoir être explicitement référencées. Ainsi, pour la suite dès lors qu'il est fait référence à la relation en partant de son coté valeur unique (clé) et en allant vers lo le coté valeur multiple (clé étrangère) le nom de la relation est mentionné tel qu'il a été mentionné dans la base de données lors de la création de cette relation. A l'inverse pour décrire la relation dans le sens valeur multiple vers valeur unique, pour simplifier les écritures il est fait référence au nom du champ de départ car dans ce cas il ne peut y avoir d'ambiguïté. 15 Les relations sont au nombre de 4 et sont définies ci-dessous : - Le champ Entreprise de la table Clients et le champ IdEnt de la table Entreprises constituent une relation (plusieurs à 1) : Cette relation est nommée RefClients en partant de la table Entreprises et l'écriture Entreprise (comme le champ) est utilisée en partant de la table Clients. 20 - Le champ Client de la table Achats et le champ IdClient de la table Clients constituent une relation (plusieurs à 1) : Cette relation est nommée RefAchats en partant de la table Clients et l'écriture Client (comme le champ) est utilisée en partant de la table Achats. - Le champ Produit de la table Achats et le champ IdProd de la table 25 Produits constituent une relation (plusieurs à 1) : Cette relation est nommée RefProduitsAchats en partant de la table Produits et l'écriture Produit (comme le champ) est utilisée en partant du côté de la table Achats. - Le champ Equivalent de la table Produits et le champ IdProd de la table Produits constituent une relation (plusieurs à 1) : Cette relation est nommée 30 RefProduitsEquivalent en partant de la table Produits et l'écriture Equivalent (comme le champ) est utilisée en partant du champ Equivalent. Selon l'invention, le module de saisie 16 est tel que, pour chaque interrogation, trois types de variables d'interrogation doivent être renseignées, à savoir : Table, Champ, Filtre. Le premier type de variable "Table" est une table privilégiée de la base s de données. Celle-ci doit être impérativement définie. Cette table est unique bien qu'elle puisse changer pour chaque interrogation. Même si l'interrogation effectuée vise à extraire des données dans plusieurs tables, seule une table privilégiée est saisie dans le module de saisie. Il est à noter que cette table privilégiée peut être implicite et il n'est pas toujours nécessaire de la renseigner car elle peut être io déduite du contexte. En effet, on peut imaginer qu'une personne ou un programme qui consulte des données d'une table souhaite utiliser le procédé décrit dans cette invention afin de réduire la quantité d'informations consultées. Le deuxième type de variable d'interrogation "Champs" est constitué des champs pour lesquels des données sont recherchées. Ces champs peuvent is être des champs de la table privilégiée ou des champs d'autres tables de la base de données, même si ceux-ci ne font pas partie de la table privilégiée précédemment saisie. Enfin, le troisième type de variable d'interrogation "Filtre" est constitué d'un filtre définissant des conditions auxquelles doivent satisfaire les données 20 dans les champs prédéfinis pour que celles-ci soient renvoyées en réponse à la requête. Parmi les variables d'interrogation ne figurent ni les jointures représentatives des relations existant entre les champs des tables utilisées pour en extraire des données ni les tables autres que la table privilégiée dans 25 lesquelles des données doivent être extraites par la requête. Le module de conversion 18 est tel que, par analyse des seules variables d'interrogation saisies depuis le module de saisie 16, et à partir de la connaissance, par le module de conversion 18, du modèle de données donnant les relations entre les champs de tables, les champs de "jointure" représentatifs 30 des relations existant entre les champs des tables sont établis par le module de conversion 18 et sont réintroduits dans des requêtes SQL adressées ultérieurement au requêteur SQL 20. De même, les tables dans lesquelles des données doivent être extraites autres que la table privilégiée sont aussi établies et réintroduites dans les requêtes SQL. En l'absence de relation entre les champs des tables devant être interrogées, le module de conversion 18 assure seulement une conversion des 5 trois types de variables d'interrogation dans une requête suivant une syntaxe de requêtes SQL de format prédéterminé de la forme : SELECT champs des données recherchées FROM tables où les champs existent WHERE jointures + conditions Par exemple, dans les cas suivants, le module de conversion 18 assure io la conversion de la requête saisie en une requête SQL sous la forme explicitée ci-dessous. Pour le renvoi des Noms et Adresses des clients de la société "MaSociété" : o Requête saisie 15 Table : Clients, Champs : Nom , Adresse Filtre : Entreprise = "MaSociete" o Requête SQL SELECT Nom, Adresse FROM Clients WHERE Entreprise = "MaSociete" 20 Dans ce cas où une seule table est consultée et donc aucune relation n'est exploitée, l'intérêt de la saisie et de la conversion n'apparaît pas encore. Par ailleurs, le module de saisie 16 est propre à recevoir, dans le cas d'une relation � plusieurs à 1 � une expression formée du champ de la table de départ noté � champsource � et d'un champ de la table d'arrivée noté 25 � champdestination � sous la forme � champsource.champdestination �. Le module de conversion 18 est adapté pour indiquer explicitement la jointure correspondante à partir de la connaissance du modèle de données lors de la détection d'une forme du type � champsource.champdestination � dans une requête saisie. 30 Pour le renvoi des Nom et Adresse des clients ainsi que le secteur d'activité des entreprises correspondantes : o Requête saisie Table : Clients Champs : Nom, Adresse, Entreprise.Secteur Filtre : Aucun o Requête SQL SELECT Clients.Nom, Clients.Adresse, Entreprises.Secteur FROM Clients, 5 Entreprises WHERE Clients. Entreprise = Entreprises.IdEnt Pour le renvoi des Nom et Adresse des clients des sociétés dans le secteur du bâtiment : o Requête saisie lo Table : Clients Champs : Nom, Adresse Filtre : Entreprise.Secteur = "Bâtiment" o Requête SQL SELECT Clients.Nom, Clients.Adresse FROM Clients, Entreprises WHERE 15 Clients. Entreprise = Entreprises.IdEnt AND Entreprises.Secteur = "Bâtiment" Comme la relation entre les tables Entreprises et Clients est connue, il n'est pas nécessaire de rappeler explicitement la jointure entre ces tables et le module de conversion 18 assure l'ajout de la jointure "clients.Entreprise = 20 Entreprises.IdEnt" grâce à la connaissance de la relation issue du modèle de données et de la connaissance du recours à la table secondaire Entreprises par la présence dans le filtre du terme "Entreprise.Secteur Le langage SQL permet que les conditions utilisées comprennent des conditions imbriquées en ce sens que les conditions indiquées après l'opération 25 WHERE comportent au moins un opérateur SELECT Le module de saisie 16 et le module de conversion 18 comportent des moyens combinés de prise en compte de ces spécificités. Plus précisément, le format requis par le module de saisie prévoit qu'un filtre secondaire définissant une condition imbriquée dans une autre condition soit 30 définie sous la forme d'un filtre mentionné entre deux accolades { }. Le module de conversion 18, lors de la détection d'un tel filtre secondaire reformule la condition grâce à l'opérateur SELECT dans la condition indiquée après l'opération WHERE, SELECT dans la condition indiquée après l'opération 10 WHERE, en assurant une identification et un report dans la requête SQL de tables nécessaires à l'interrogation autres que la table privilégiée et des relations entre les champs des tables en cause. Par ailleurs, le module de saisie 16 est propre à recevoir le nom explicite donné à une relation entre deux tables. Le module de conversion 18 est adapté pour indiquer explicitement la jointure correspondante à partir de la connaissance du modèle de données lors de la détection du nom explicite d'une relation dans une requête saisie. Ainsi, le nom de la relation est utilisé dans le cas d'une relation 1 à i0 plusieurs. Pour le renvoi des Noms des clients qui ont réalisé au moins deux achats dont le prix de chacun des produits correspondants est supérieur à 100 : o Requête saisie Table : Clients 15 Champs : Nom Filtre : RefAchats.Count { Produit.Prix >=100} >= 2 o Requête SQL SELECT Nom FROM Clients WHERE (SELECT Count(*) FROM Achats, Produits WHERE Achats.Produit = Produits.IdProd AND Produits.Prix >= 100 20 AND Client = Clients.IdClient) >= 2. Un filtre secondaire est saisi sous la forme { }. II porte sur la table Achats et permet de préciser la méthode de comptabilisation des achats. Le nom de la relation RefAchats est présent dans la requête saisie, ce qui conduit le module de conversion 18 à ajouter la table "Achats" et la condition 25 "Client = Clients.IdClient" dans la requête SQL. Pour le renvoi des Noms et Adresses des clients qui ont réalisé au moins un achat constitué d'au moins deux exemplaires d'un produit dont le prix est supérieur à 100 : o Requête saisie 30 Table : Clients Champs : Nom, Adresse Filtre : RefAchats.Quantité.Min {Produit.Prix>100} >= 2 o Requête SQL SELECT Clients.Nom, Clients.Adresse FROM Clients WHERE (SELECT Min(Achats.Quantité) FROM Achats, Produits WHERE Achats.Produit=Produits.IdProd AND Produits.Prix>100 AND Achats.Client = Clients.ldClient) >= 2 Cet exemple illustre la capacité à préciser le champ sur lequel portera le calcul dans la table secondaire en l'occurrence ici � Quantité � ainsi que le type de calcul souhaité (ici � minimum �). Pour le renvoi des Nom et Adresse des clients qui ont réalisé au moins deux achats de produit dont le prix est supérieur à 100 et dont le secteur de 10 l'entreprise est dans le bâtiment : o Requête saisie Table : Clients Champs : Nom, Adresse Filtre : RefAchats.Count{ Produit.Prix >= 100 } >=2 AND Entreprise.Secteur 15 = "Bâtiment". o Requête SQL SELECT Clients.Nom, Clients.Adresse FROM Clients WHERE (SELECT Count(*) FROM Achats, Produits WHERE Achats.Produit=Produits.IdProd AND Produits.Prix >= 100 AND Achats.Client = Clients.IdClient) >= 2 AND Entreprise IN 20 (SELECT IdEnt FROM Entreprises WHERE Secteur = "Bâtiment") Comme l'illustre l'exemple ci-dessous il est également possible de généraliser la syntaxe � champsource.champdestination � à � champsource.champdestinationl... champdestination(x) � avec champdestination(x) étant un champ dans la table destinataire du champ 25 champdestination(x-1) et ainsi de soit extraire des champs soit de filtrer sur des champs n'étant pas immédiatement liés à la table privilégiée. Ainsi, pour le renvoi de la liste des achats ainsi que le nom des clients correspondants et les quantités achetées pour tous les achats dont l'entreprise du client est dans le secteur du bâtiment : 30 o Requête saisie Table : Achats Champs : Produit, Client.Nom, Sum(Quantité) Filtre : Client.Entreprise.Secteur = "Bâtiment". o Requête SQL SELECT Achats.Produit, Clients.Nom, Sum(Achats.Quantité) FROM Achats, Clients, Entreprises WHERE Achats.Client=Clients.IdClient AND Clients. Entreprise = Entreprises.IdEnt AND Entreprises.Secteur = "Bâtiment" La syntaxe présentée dans l'exemple précédent peut ainsi également être généralisée pour inclure des références à des noms de relations � valeur multiple vers valeur multiple� Ainsi pour le renvoi de la liste des personnes appartenant à des entreprises du secteur du bâtiment pour lesquels au moins deux clients ont réalisé des achats ~o portant sur 4 produits valant plus de 100 : o Requête saisie Table : Client Champs : Nom Filtre : Entreprise.RefClients.Count{ RefAchats.Count{ Quantité >= 4 AND is Produit. Prix >= 100 } >= 2 } AND Entreprise,Secteur= "Bâtiment". o Requête SQL SELECT Nom FROM Clients, Entreprises WHERE Clients.Entreprise = Entreprises.IdEntreprise AND (SELECT Count(*) From Clients AS Clients2 WHERE Entreprises.IdEntreprise=Clients2.Entreprise AND (SELECT IdClient 20 FROM Achats, Produits WHERE Achats.Client = Clients2.IdClient AND Achats.Quantité > 4 AND Produits.Prix >= 100 AND Produits.IdProduit = Achats.Produit) >=2) AND Entreprises.Secteur = "Bâtiment"). On constate que la simplification du langage est obtenue sur la partie WHERE de la requête SQL et qu'elle est d'autant plus importante que lorsqu'il est 25 nécessaire d'écrire de multiples sous-requêtes ou jointures en SQL. Ainsi, on comprend que la simplification de la saisie et de l'interrogation de la base de données résultent des deux points suivants : Un table et une seule table est choisie comme table privilégiée. Les écritures et significations de toutes les expressions sont dès lors simplifiées et 30 interprétées grâce à ce principe et les tables non indiquées explicitement sont recueillies dans la base de données à partir de la connaissance du modèle de données et des relations qu'elle contient, permettant que le module de conversion réintègre les champs dans les requêtes SQL. 13 II convient de noter que malgré l'existence de cette contrainte, il est possible de réaliser de très nombreuses requêtes, dans la mesure où le concept de table privilégié couvre la notion de table réelle mais également la notion de table virtuelle ou de Vue résultant d'une autre requête, notamment SQL ou formulée depuis le module de saisie dans le format initial. Les références aux relations entre les champs de tables, faites à partir du nom donné aux relations permettent de simplifier la formulation des requêtes en utilisant des jointures implicites entre les tables, alors que la syntaxe du langage SQL ne permet pas d'intégrer dans les requêtes SQL de telles références puisque to le langage SQL impose au contraire d'indiquer explicitement les jointures. Ainsi, il est possible par deux moyens différents de filtrer des données sur la base d'informations contenues dans une autre table. Le langage utilisé pour la saisie initiale est avantageusement enrichi pour traiter des cas plus complexes et offrir des écritures plus compactes et lisibles par 15 rapport à des syntaxes SQL et le module de conversion est propre à assurer la conversion avec la syntaxe SQL. Ainsi, par exemple, des ensembles de conditions cumulatives ou alternatives sont définis pour être convertis sous la forme de conditions successives séparées par ET ou OU. 20 En outre, il est possible d'enrichir le langage d'interrogation, en introduisant de nouveaux opérateurs eux même construits à partir de requêtes décrites avec les moyens d'interrogation décrits. Dans l'exemple ci-dessous, l'opérateur similaire � est introduit qui permet d'identifier deux produits équivalents : deux produits X et Y sont jugés équivalents si l'identifiant d'un produit Y est présent 25 dans le champ Equivalent d'un produit X. La définition de l'opérateur SIMILAIRE s'écrit alors comme suit: Opérateur : ?X SIMILAIRE ?Y Table : Produit Filtre : IdProd= ?X AND Equivalent= ?Y OR IdProd= ?Y AND Equivalent= 3o ?X o Requête SQL SELECT * FROM Produits WHERE IdProd=?X AND Equivalent=?Y OR IdProd=?Y AND Equivalent=?X 14 Les produits sont jugés équivalents si la requête ci-dessus renvoie au moins un enregistrement. II est à noter que la partie Champs de la requête n'est pas renseignée, car pour définir un nouvel opérateur seul le fait que la requête puisse renvoyer au moins un enregistrement pour un couple ?X et ?Y donné est pertinent. Une fois un tel opérateur défini on peut utiliser l'écriture suivante pour saisir la requête qui renvoie le nom des clients ainsi que les quantité achetées par des clients du secteur du bâtiment des produits similaires au produit "1dA": to o Requête saisie Table : Achats Champs : Nom.Client, Quantité Filtre : Produit SIMILAIRE "IdA" AND Client.Entreprise.Secteur = "Bâtiment" o Requête SQL 15 SELECT Clients.Nom, Achats.Quantité FROM Achats, Clients, Entreprises WH ERE Achats. Client=Clients.IdClient AND Clients. Entreprise = Entreprises.IdEnt AND Entreprises. Secteur = "Bâtiment" AND EXISTS (SELECT FROM Produits WHERE IdProd=Achats. Produit AND Equivalent="ldA" OR IdProd="IdA" AND Equivalent= 20 Achats.Produit) Dans le cas d'une définition d'un opérateur impliquant des champs provenant de plusieurs tables, le module de saisie et son module de conversion associé peuvent être utilisés pour prédéfinir à l'avance des schémas de jointures 25 entre tables réutilisables, ce qui serait très difficile à mettre en place en SQL compte tenu de la complexité de sa syntaxe. En outre, la description de l'opérateur pourrait être également être déduite d'une requête formulée directement en langage SQL selon une méthode similaire. Enfin, il est possible d'utiliser ces moyens d'interrogation pour réaliser des 30 modifications de données (par exemple modification de champs ou effacement d'enregistrements) sur un périmètre de données représenté par une requête exprimée dans le format de cette invention. Dans l'exemple ci-dessous la partie � Champs � n'a plus lieu d'être et est remplacée par � Action � qui décrit les changements de données attendus. Pour le passage au statut � important � à tous les clients qui ont réalisé au moins deux achats de produit dont le prix est supérieur à 100 et dont le secteur de 5 l'entreprise est dans le bâtiment : o Requête saisie Table : Clients Action: Important = "Oui" Filtre : RefAchats.Count{ Produit.Prix >= 100 } >=2 AND Entreprise.Secteur to = "Bâtiment". o Requête SQL UPDATE Clients SET Important = "Oui" WHERE (SELECT Count(*) FROM Achats, Produits WHERE Achats.Produit=Produits.IdProd AND Produits.Prix >= 100 AND Achats.Client = Clients.IdClient) >= 2 AND Entreprise IN (SELECT IdEnt 15 FROM Entreprises WHERE Secteur = "Bâtiment") REVENDICATIONS 1.- Procédé d'interrogation ou de modification d'une base de données comportant : - plusieurs tables chacune avec des champs, et - des relations entre les champs de tables différentes, le procédé comportant les étapes de: 1) renseigner une unique table privilégiée; 2) renseigner au moins un champ dans une autre table pour lequel des données sont recherchées ou à modifier; io ET/OU 2') renseigner au moins un filtre portant sur un champ d'une autre table permettant la sélection des données recherchées ou à modifier, 3) identifier dans la base de données, à partir des champs saisis et des champs figurant dans les filtres saisis, les tables contenant ces champs ; 15 4) identifier dans la base de données, à partir des champs saisis et des champs figurant dans les filtres saisis, les relations entre ces champs de tables différentes ; 5) reformuler une requête auprès de la base de données en mentionnant complètement : 20 - les champs pour lesquels des données sont recherchées ou à modifier, - les tables identifiées contenant des champs saisis et I ou des champs figurant dans le filtre, - des jointures représentatives des relations entre les champs des différentes tables 25 6) appliquer la requête à la base. 2. Procédé selon la revendication 1, caractérisé en ce la saisie de filtres permettant la sélection des données recherchées ne comporte pas la mention explicite des jointures représentatives des relations entre les champs de tables différentes. 30 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que la reformulation de la requête est faite en langage SQL. 4. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que la relation à une autre table est saisie implicitement dans unfiltre en utilisant le nom d'un champ utilisé par la jointure dans le cas d'une relation � plusieurs vers 1 �. 5. Procédé selon la revendication 4, caractérisé en ce que la relation à une autre table est saisie dans le filtre en utilisant, pour désigner les champs d'une table autre que la table saisie, une formulation contenant la forme : champsource.champdestination où champsource est le champs de la table de départ et champdestination est le champs de la table d'arrivée dans le cas d'une relation � plusieurs à 1 �. 6. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que la relation à une autre table est saisie dans le filtre en utilisant un nom préalablement affecté dans le modèle de données de la base de données à la relation dans le cas d'une relation � 1 à plusieurs �. 7. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que les conditions imbriquées de filtrage sont saisies comme 15 des variables du filtre identifiées par une syntaxe prédéterminée ({.}), sans que la variable ne comporte la mention explicite des jointures représentatives des relations entre les champs des différentes tables. 8 Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que le filtre comporte au moins un opérateur de comparaison de 20 champs éventuellement combiné par des ET / OU. 9.- Installation d'interrogation ou de modification d'une base de données comportant une base de données ayant : - plusieurs tables chacune avec des champs, et -des relations entre les champs de tables différentes, 25 l'installation comportant : 1) des moyens pour renseigner une unique table privilégiée; 2) des moyens pour renseigner au moins un champ dans une autre table pour lequel des données sont recherchées ou à modifier; ET / OU 30 2') des moyens pour renseigner au moins un filtre portant sur un champ d'une autre table permettant la sélection des données recherchées ou à modifier,18 3) des moyens pour identifier dans la base de données, à partir des champs saisis et des champs figurant dans les filtres saisis, les tables contenant ces champs ; 4) des moyens pour identifier dans la base de données, à partir des 5 champs saisis et des champs figurant dans les filtres saisis, les relations entre ces champs de tables différentes ; 5) des moyens pour reformuler une requête auprès de la base de données en mentionnant complètement : - les champs pour lesquels des données sont recherchées ou à modifier, ia - les tables identifiées contenant des champs saisis et I ou des champs figurant dans le filtre, - des jointures représentatives des relations entre les champs des différentes tables 6) des moyens pour appliquer la requête à la base.