BD et SGBD

Sommaire

Introduction

Les bases de données sont actuellement au cœur du système d'information des entreprises. Les systèmes de gestion de bases de données, initialement disponibles uniquement sur des "mainframes", peuvent maintenant être installés sur tous les types d'ordinateurs y compris les ordinateurs personnels. Mais attention, souvent on désigne, par abus de langage, sous le nom "bases de données" des ensembles de données qui n'en sont pas.

Qu'est-ce donc qu'une base de données?

Que peut-on attendre d'un système de gestion de bases de données?

C'est à ces questions, entre autres, que cet ouvrage essaie d'apporter des réponses. Dans un premier temps, et de façon informelle, on peut considérer une Base de Données (BD) comme une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables par un groupe d'utilisateurs travaillant en parallèle. Quant au Système de Gestion de Bases de Données (SGBD), il peut être vu comme le logiciel qui prend en charge la structuration, le stockage, la mise à jour et la maintenance des données ; c'est, en fait, l'interface entre la base de données et les utilisateurs ou leurs programmes


Concepts de base

Pour assurer ces objectifs (surtout les deux premiers), trois niveaux de description des données ont été définis par la norme ANSI/SPARC.

Niveau interne

Description du stockage des données au niveau des unités de stockage, des fichiers, On appelle cette description le schéma interne.

Niveau conceptuel

Description de la structure de toutes les données qui existent dans la base, description de leurs propriétés (relations qui existent entre elles) c'est-à-dire de leur sémantique inhérente, sans soucis d'implémentation physique ni de la façon dont chaque groupe de travail voudra s'en servir. On appelle cette description le schéma conceptuel.

Niveau externe

Description pour chaque utilisateur de sa perception des données. On appelle cette description le schéma externe ou vue. Le résultat de la conception d'une base de données sera une description des données. Par description on entend définir les propriétés d'ensembles d'objets modélisés dans la base de données et non pas d'objets particuliers. Les objets particuliers sont définis par les programmes d'applications lors des insertions et des mises à jour des données. Ils doivent alors vérifier les propriétés des ensembles auxquels ils appartiennent. Cette description des données sera effectuée en utilisant un modèle de données. Ce dernier est un outil intellectuel utilisé pour comprendre l'organisation logique des données. C'est un ensemble de concepts et de règles pour les utiliser, permettant de construire avec des types de données une représentation de la réalité. Un système de gestion de bases de données est caractérisé par le modèle de description des données qu'il supporte. Les données sont décrites sous la forme de ce modèle, grâce à un langage de description des données. Cette description est appelée schéma. Les modèles utilisés sont : réseau, relationnel, objet, Une fois la base de données spécifiée, on peut y insérer des données, les récupérer, les modifier et les détruire. C'est ce qu'on appelle manipuler les données. Les données peuvent être manipulées non seulement par un langage spécifique de manipulation des données mais aussi par des langages de programmation "classiques".

Composants des systèmes de gestion de bases de données

Un système de gestion de bases de données va donc posséder un certain nombre de composants logiciels et ce, quel que soit le modèle de données qu'il supporte. On trouve donc des composants chargés de :

La description des données

Cette partie sera constituée des outils (en gros des langages) permettant de décrire la vision des données de chaque utilisateur et l'intégration dans une vision globale. On y trouve aussi les outils permettant de décrire le stockage physique des données.

La récupération des données

Cette partie prend en charge l'interrogation et la modification des données et ce, de façon optimisée. Elle est composée de langages de manipulation de données spécifiques et d'extensions de langages "classiques". Elle gère aussi les problèmes de sécurité.

La sauvegarde et la récupération après pannes

Cette partie comporte des outils permettant de sauvegarder et de restaurer de façon explicite une base de données. Elle comporte aussi des mécanismes permettant, tant qu'une modification n'est pas finie, de pouvoir revenir à l'état de la base avant le début de cette modification.

Les accès concurrents aux données

C'est la partie chargée du contrôle de la concurrence des accès aux données. Elle doit être telle que chaque utilisateur attende le moins possible ses données tout en étant certain d'obtenir des données cohérentes en cas de mises à jour simultanées de la base. Chacun de ces composants est décrit de façon plus détaillée par la suite.

Un peu d'histoire

1960

Uniquement des systèmes de gestion de fichiers plus ou moins sophistiqués.

1970

Début des systèmes de gestion de bases de données réseaux et hiérarchiques proches des systèmes de gestion de fichiers. Ces systèmes de gestion de bases de données avaient rempli certains des objectifs précédents mais on ne pouvait pas interroger une base sans savoir où était l'information recherchée (on "naviguait") et sans écrire de programmes. Sortie du papier de CODD sur la théorie des relations, fondement de la théorie des bases de données relationnelles.

1980

Les systèmes de gestion de bases de données relationnels apparaissent sur le marché. 1990 Les systèmes de gestion de bases de données relationnels dominent le marché. Début des systèmes de gestion de bases de données orientés objet.

Le modèle relationnel

Le modèle relationnel a été formalisé par CODD en 1970. Quelques exemples de réalisation en sont : DB2(IBM), INFORMIX, INGRES, ORACLE. Dans ce modèle, les données sont stockées dans des tables, sans préjuger de la façon dont les informations sont stockées dans la machine. Un ensemble de données sera donc modélisé par un ensemble de tables. Le succès du modèle relationnel auprès des chercheurs, concepteurs et utilisateurs est dû à la puissance et à la simplicité de ses concepts. En outre, contrairement à certains autres modèles, il repose sur des bases théoriques solides, notamment la théorie des ensembles et la logique mathématique( théorie des prédicats d'ordre 1). Les objectifs du modèle relationnel :

Définitions

Définition (Domaine) : Ensemble de valeurs.

Définition (Relation) : Sous-ensemble du produit cartésien d'une liste de domaines caractérisé par un nom. En d'autres termes, une relation n'est ni plus ni moins qu'une table dans laquelle chaque colonne correspond à un domaine et porte un nom ce qui rend leur ordre sans aucune importance.

Définition (Attribut) : Colonne d'une relation caractérisée par un nom.

Définition (Schéma de relation) : Nom de la relation, suivi de la liste des attributs avec leurs domaines. Définition (Base de données relationnelles) : Base de données dont le schéma est un ensemble de schémas de relations et dont les occurrences sont les tuples de ces relations.

Définition (Système de gestion de bases de données relationnel) : C'est un logiciel supportant le modèle relationnel, et qui peut manipuler les données avec des opérateurs relationnels.


Opérateurs relationnels

Définition (Projection) : Opération qui consiste à supprimer des attributs d'une relation et à éliminer les tuples en double apparaissant dans la nouvelle relation. Cette opération est notée Π.

Définition (Restriction) : Opération qui consiste à supprimer les tuples d'une relation ne satisfaisant pas la condition précisée.

Définition (Jointure) : Opération qui consiste à faire le produit cartésien de deux relations, puis à supprimer les tuples ne satisfaisant pas une condition portant sur un attribut de la première relation et sur un attribut de la seconde.

Définition (Union) : Opération portant sur deux relations ayant le même schéma et construisant une troisième relation constituée des tuples appartenant à chaque relation. Les tuples en double sont éliminés. Définition (Différence relationnelle) : Opération portant sur deux relations ayant le même schéma et construisant une troisième relation dont les tuples sont constitués de ceux ne se trouvant que dans une seule relation.

Définition (Intersection) : Opération portant sur deux relations ayant le même schéma et construisant une troisième relation dont les tuples sont constitués de ceux appartenant aux deux relations.


Langages de manipulation de données relationnelles

Ces langages, dits assertionnels, sont basés sur la logique des prédicats d'ordre 1 et permettent de spécifier les données que l'on souhaite obtenir, sans dire comment y accéder. On doit y trouver des opérations permettant de :

[la modification] la recherche retrouver des tuples vérifiant certains critères, l'insertion ajouter des tuples, la suppression enlever des tuples vérifiant certains critères, la modification modifier des tuples vérifiant certains critères.

Un langage de manipulation de données n'est pas utilisable à lui seul, il doit aussi pouvoir être incorporable dans un langage de programmation classique. On peut distinguer trois grandes classes de langages :

Interrogation

Cohérence d'une interrogation

Un utilisateur qui interroge une table (même très grande) est garanti de voir toutes les données telles qu'elles étaient au moment du début de l'interrogation, même si d'autres utilisateurs modifient la table et valident leurs modifications pendant ce temps.

Les sgbd dont oracle utilisent alors le fichier image avant pour assurer cette cohérence. Le COMMIT des utilisateurs modifiant la table n'est pas différé à la fin de l'interrogation.

Remarque : Dès que l'on interroge une table, un verrou est placé sur la définition de la table, c'est à dire qu'un autre utilisateur ne peut pas détruire la table, l'indexer, la mettre en cluster ou modifier sa définition, jusqu'à ce que l'interrogation soit terminée.

Cohérence de plusieurs interrogations successives

Si l'utilisateur désire que l'on ne modifie pas une table pendant une session de travail, celui-ci peut verrouiller la table en mode partagé au moyen de l'ordre sql suivant :

LOCK TABLE nom_table IN SHARE MODE NOWAIT;

où l'option NOWAIT, qui peut s'adjoindre à toutes les commandes de verrouillage, spécifie que le process qui demande le verrou n'est pas mis en attente si celui-ci n'est pas disponible. La table n'est alors accessible aux autres utilisateurs qu'en lecture jusqu'à la fin de la transaction de celui qui l'a verrouillée (les autres utilisateurs peuvent aussi verrouiller la table en share mode). Les modifications des autres utilisateurs seront suspendues.