Introduction aux bases de données
Qu’est-ce qu’une base de données ?
Le nombre d’informations disponibles et les moyens de les diffuser sont en constante progression. La croissance du World Wide Web a encore accru ce développement, en fournissant l’accès à des bases de données très diverses avec une interface commune. Celles-ci se situent au cœur de l’activité des entreprises, des administrations, de la recherche et de bon nombre d’activités humaines désormais liées à l’informatique. Dans le domaine purement informatique, elles interviennent dorénavant à tous les niveaux. Les développeurs d’applications s’appuient sur des bases de données externes pour gérer leurs données alors qu’auparavant elles étaient intégrées dans le programme. Citons un autre exemple : la gestion des fichiers dans les nouveaux systèmes d’exploitation (par exemple, Panther de chez Apple™ ou le futur Vista de Microsoft™) évolue vers de véritables bases de données mises à jour en permanence. Elles permettent de retrouver les fichiers instantanément, par leur nom mais aussi par leur contenu, à la manière d’un moteur de recherche. Les bases de données reposent sur des théories solides et sont à l’origine d’une des plus importantes disciplines de l’informatique : l’ingénierie des systèmes d’information. Cette section présente une idée intuitive de ce qu’est une base de données, de son utilisation puis des éléments de qualité qui lui sont associés.
NOTION DE BASE DE DONNÉES
Tout le monde a une idée naturelle de ce que peut être une base de données : elle peut revêtir la forme d’une liste de CD contenant le nom des artistes et les titres des morceaux ou encore celle de fiches de recettes de cuisine. On remarque qu’une caractéristique des données contenues dans une base de données est qu’elles doivent posséder un lien entre elles. En effet, des données choisies au hasard ne constituent certainement pas une base de données. Celle-ci est donc une représentation partielle et (très) simplifiée du monde réel, que l’on a obtenu par un processus de modélisation. En résumé, on définit une base de données comme l’ensemble des données stockées. Pour les manipuler, on utilise généralement un logiciel spécialisé appelé SGBD (Système de Gestion de Bases de Données). Il y a parfois confusion, par abus de langage, entre base de données et SGBD. On appelle aussi « système d’information » l’ensemble composé par les bases de données, le SGBD utilisé et les programmes associés. Plus formellement, on appelle Base de Données (BD) un ensemble de fichiers – informatiques ou non – structurés et organisés afin de stocker et de gérer de l’information.
UTILISATION D’UNE BASE DE DONNÉES
La création d’une base de données recèle un but précis : elle doit permettre de retrouver de l’information par son contenu en se fondant sur des critères de recherche. On désire, par exemple, retrouver toutes les recettes qui nécessitent des œufs ou tous les CD qui contiennent un morceau donné. La grande différence avec un programme écrit dans un langage de programmation est qu’une base de données doit pouvoir répondre à des questions pour lesquelles elle n’a pas forcément été prévue à la conception. Une autre différence est que les données sont susceptibles d’être utilisées par des applications différentes. Dans un programme classique, la structuration des données est décrite directement dans le code, ce qui rend leur utilisation difficile par d’autres programmes, en particulier lorsque l’on modifie cette structure. Ce que l’on recherche en utilisant une base de données est d’assurer l’indépendance entre le traitement et les données. C’est pourquoi, il est nécessaire que l’application obtienne des informations sur la structure des données (nom, type, taille, etc.). Pour ce faire, on associe à la base de données une description que l’on appelle « métadonnée » ou « catalogue ». Cette dernière décrit la structure interne de la base de données qui est spécifique au SGBD employé (voir figure 1.1). En plus de la structure et du type des données, on stocke également à cet endroit les informations concernant les règles de cohérence des données abordées à la section suivante. Figure 1.1 Base de données de CD et métadonnée. L’idée générale est que l’utilisateur ou l’application utilisatrice des données ne doit pas être dépendante de leur représentation interne, ce qui constitue une abstraction des données. C’est la raison pour laquelle on utilise une description des données sous la forme d’un modèle pour permettre la restitution la plus efficace possible de l’information.
QUALITÉ D’UNE BASE DE DONNÉES
Comme on l’a évoqué précédemment, l’un des objectifs de création d’une base de données est de pouvoir retrouver les données par leur contenu. Dans cette optique, il faut s’assurer que les données contenues dans la base sont de « bonne qualité ». Comment définir la qualité des données ? De nombreux critères peuvent être pris en compte ; on peut citer parmi les principaux : • la cohérence des données contenues dans la base ; • l’absence de redondance. La cohérence des données est fondamentale ; elle nécessite une réflexion préalable sur la normalisation du contenu des champs. On suppose qu’un champ contient la qualité d’une personne (par exemple, Monsieur, Madame, Mademoiselle). Si l’on trouve dans ce champ ‘Mr’ à la place de ‘Monsieur’, il est clair que les recherches sur ce champ par le contenu ‘Monsieur’ risquent d’être erronées. Dans ce cas, les informations seraient moins nombreuses que celles obtenues avec le contenu correct. On qualifie cet état de fait de « silence », qui signifie que certains résultats pertinents sont ignorés lors d’une interrogation. Dans un autre cas, si l’on saisit ‘Mme’ pour ‘Madame’ et ‘Melle’ pour ‘Mademoiselle’, et qu’il y ait eu par erreur plusieurs saisies de ‘Mme’ alors qu’il s’agissait d’une demoiselle, la recherche par le contenu ‘Mme’ donne cette fois plus de résultats qu’il n’y a réellement de dames. On qualifie cet état de fait de « bruit », qui signifie que certains résultats non pertinents sont retournés lors d’une interrogation. La redondance est parfois plus délicate à identifier. Si l’on considère le cas très simple d’un carnet d’adresses qui contiendrait en même temps le code postal et le nom de la ville, elle est ici évidente. On remarque que l’on stocke plusieurs fois la même association d’information (par exemple, Nancy et 54000), ce qui consomme de la place inutilement et peut devenir significatif lorsque la base atteint quelques millions d’enregistrements. De plus il existe des incohérences dans la saisie du nom de la ville ‘Bordeaux’. La recherche par le nom ‘Bordeaux’ ne donnera pas le même résultat que la recherche par le code ‘33000’. On verra plus loin que l’approche relationnelle procure des outils capables de détecter et d’améliorer considérablement ce genre de problèmes de qualité des bases de données.
Évolution des bases de données et de leur utilisation
Le développement des bases de données s’étend sur une période d’une quarantaine d’années. Cette section présente tout d’abord le contexte dans lequel elles se sont développées. On aborde ensuite les modèles utilisés successivement pour les représenter. Enfin, la dernière partie présente une vue prospective des changements dans l’utilisation des bases de données.
CONTEXTE
À partir des années 1960, les ordinateurs évoluent rapidement. Ils sont de plus en plus performants mais aussi de plus en plus répandus du fait de leur coût plus raisonnable. Leur utilisation change également ; on passe de la notion de calculateurs purs à des machines capables aussi de traiter de l’information. On parvient à un niveau d’abstraction supplémentaire par rapport aux machines et on obtient en conséquence une indépendance par rapport à l’architecture et surtout par rapport aux constructeurs. La décennie des années 1970 est une période « faste » pour la recherche et l’innovation en informatique dont les résultats sont encore utilisés aujourd’hui. On peut utiliser des langages de programmation de haut niveau, afin de guider, voire de façonner, la démarche du programmeur (Pascal), et l’on envisage des systèmes d’exploitation indépendants de la machine employée (Unix). C’est également à cette époque que l’on pose les fondements des techniques qui sont utilisées dans les réseaux (TCP/IP), en particulier pour Internet. C’est dans ce contexte favorable que E. F. Codd définit et développe l’approche relationnelle en base de données. L’objectif principal est d’éloigner l’utilisateur des détails d’implémentation et de faciliter ainsi l’usage de l’informatique. Un autre but est de rendre « génériques » et réutilisables les développements informatiques, parfois devenus caducs en raison d’un changement de machine. Dans le domaine des bases de données, le développement de l’architecture à trois niveaux constitue une première étape importante. Les fonctionnalités des systèmes de bases de données sont séparées en trois niveaux : niveau physique, niveau logique et niveau externe.