Le développement d'une application permettant de gérer une grande quantité d'information est quelque chose de complexe, nécessitant de solides compétences en programmation et en architecture de données. Imaginez l'écriture de méthodes capables de modifier rapidement l'adresse d'un client dans un fichier de 100'000 personnes, de supprimer ce client particulier ou d'obtenir la liste de toutes les clientes habitant le canton de Fribourg, âgées entre 20 et 30 ans, ayant acheté en moyenne au moins un livre par mois et dépensé plus de 200 francs durant ces 12 derniers mois...
Heureusement, il existe des outils informatiques capables de décharger les développeurs et les utilisateurs de ces tâches complexes de gestion de données. Ces logiciels, appelés systèmes de gestion de base de données (SGBD), permettent d'organiser, de contrôler, de consulter et de modifier une base de données. Il s'agit d'applications informatiques de première importance pour les entreprises. Certaines sont les fleurons de sociétés spécialisées (IBM, Oracle, Microsoft, Informix, Sybase,...) et sont en général vendues à des prix fort élevés. D'autres ont été développées dans des centres de recherche et d'enseignement universitaires (PostgreSQL, SQLite, MySQL, OpenOffice Base,...) et sont généralement gratuites.
Ces sytèmes ont chacun leurs spécificités et leurs performances mais sont construits de telle sorte que l'accès aux informations d'une base de données ne se fait pas en lisant ou en écrivant directement dans les fichiers de la base. Pour modifier la structure ou le contenu de la base ainsi que pour obtenir des informations, il est nécessaire de s'adresser au SGDB qui fait office d'intermédiaire entre l'utilisateur et les fichiers de la base de données:
Système de gestion de base de données
Un SGBD consiste en un composant de stockage et un composant de gestion de données. Le composant de stockage a pour but de réunir sous forme de tables toutes les données ainsi que leurs liens d'interdépendance. Le composant de gestion comporte essentiellement un langage de requête, tel que SQL, capable de définir et manipuler des données. Ce composant englobe également les fonctions utilitaires pour la restauration de la base de données en cas de panne, la protection et la sécurité des données.
Un système de gestion de bases de données doit donc se caractériser par les propriétés suivantes:
La plupart des SGBD fonctionnent sur le modèle client-serveur, ce qui signifie que la plus grosse partie de l'application ainsi que la base de données prise en charge est installée en un seul endroit, en principe sur une machine puissante constituant le serveur, alors que l'autre partie, beaucoup plus simple, est installée sur un nombre indéterminé de postes de travail, appelés clients.
Accès distant à une base de données multi-utilisateur
Les clients sont reliés au serveur par divers procédés et protocoles (éventuellement par l'intermédiaire d'Internet). Chacun d'entre eux peut accéder à une partie plus ou moins importante des données, avec autorisation ou non de modifier certaines d'entre elles, d'en ajouter ou d'en supprimer, en fonction de règles d'accès bien déterminées, définies par un administrateur de la base de données.
Pour accéder aux données, l'utilisateur du système doit lancer l'exécution d'une application cliente sur un poste de travail quelconque. Dans son processus de démarrage, l'application cliente commence par établir une connexion avec le serveur et la base de données en transmettant quelques informations pour obtenir l'accès: adresse du serveur sur le réseau, nom de la base de données, nom d'utilisateur, mot de passe,... Lorsque la connexion est établie, l'application cliente peut interroger le serveur en lui envoyant une requête sous une forme convenue. Le serveur exécute alors la requête en recherchant les données correspondant aux critères de la requête dans la base, puis il expédie en retour une certaine réponse au client. Les requêtes sont généralement des instructions SQL expédiées du client au serveur, non seulement pour extraire des données de la base, mais aussi pour en ajouter, en supprimer, en modifier, etc.