Architecture générale d'un SGBD Relationnel I- I Quelques définitions 5 Rappels des objectifs d'un SGBDR 6 Architecture d'un SGBDR 7 Fonctions d'un SGBDR 8 Catalogues 12 Rappel de la terminologie du modèle relationnel 13 Exemple : Base de données approvisionnement 14 La plupart des recherches de ces 30 dernières années se sont basées sur l'approche relationnelle. Elle représente aujourd'hui la tendance principale du marché. La raison est que le modèle relationnel est fondé sur des bases mathématiques. Un système relationnel est un système dans lequel : 1. l'utilisateur perçoit les données comme des tables, 2. les opérateurs génèrent de nouvelles tables résultats à partir des tables existantes. A. Quelques définitions Définition Un SGBD (Système de Gestion de Base de données) est un logiciel qui permet la création et la manipulation d'une base de données. Définition Un SGBDR (SGBD Relationnel) est un SGBD dont la base de données est organisée sous forme de tables relationnelles. Exemple SYSTEM-R de IBM (1er SGBDR (1975) prouvant la faisabilité du modèle relationnel) Nadia Abdat & Nazih Selmoune 5 Architecture générale d'un SGBD Relationnel INGRES de Univ Calif BERKELEY (1976) ORACLE d'oracle corp. (V1 prototype en assembleur années 70, V2 réécriture en C en 1980, V5 (1985), V6 (1990), V7 (1994) ...Aujourd'hui oracle 11g. Définition Une base de données (B.D.) est une collection de données persistantes (non volatiles) et pertinentes (nécessaires) utilisées par des systèmes d'application de certaines organisations. Remarque Une organisation peut être un simple individu avec une base de données privée (un médecin, un notaire, ...) ou une société avec une base de données partagée importante (une banque, une université, un hôpital,...). B. Rappels des objectifs d'un SGBDR Indépendance physique Le niveau physique peut être modifié indépendamment du niveau conceptuel. Cela signifie que tous les aspects matériels de la base de données n'apparaissent pas pour l'utilisateur, il s'agit simplement d'une structure transparente de représentation des informations. Indépendance logique Le niveau conceptuel doit pouvoir être modifié sans remettre en cause le niveau physique, c'est-à-dire que l'administrateur de la base de données doit pouvoir la faire évoluer sans que cela gêne les utilisateurs. Évolution de la BD Le système doit permettre l'ajout, la suppression et la modification des tuples, la modification des valeurs des attributs Ainsi que le changement du schéma de la BD (ajout suppression de tables, ajout :suppression d'attributs d'une table). Cohérence des données Les données doivent être cohérentes entre elles, de plus lorsque des éléments font référence à d'autres, ces derniers doivent être présents. Ceci est possible grâce à la définition de contraintes d'intégrité. Limitation de la redondance Le SGBD doit pouvoir éviter dans la mesure du possible des informations redondantes, afin d'éviter d'une part un gaspillage d'espace mémoire mais aussi des erreurs. Efficacité des accès aux données Le système doit pouvoir fournir les réponses aux requêtes le plus rapidement possible, cela implique des algorithmes de recherche rapides. Partageabilité Le SGBD doit permettre l'accès simultané à la base de données par plusieurs 6 Nadia Abdat & Nazih Selmoune Architecture générale d'un SGBD Relationnel utilisateurs. Confidentialité Le SGBD doit présenter des mécanismes permettant de gérer les droits d'accès aux données selon les utilisateurs. Sécurité La BD doit être sécurisée contre les pannes. C. Architecture d'un SGBDR Architecture fonctionnelle d'un SGBDR Le moteur d'évaluation de requête Une requête est généralement analysée selon les étapes suivantes : Analyse (évaluateur de requête): La requête est vérifiée syntaxiquement et sémantiquement puis elle est transformée en arbre algébrique où les opérateurs sont les nœuds et les opérandes les feuilles Optimisation (optimiseur): Une séquence SQL peut donner lieu à plusieurs Nadia Abdat & Nazih Selmoune 7 Architecture générale d'un SGBD Relationnel interprétations pouvant conduire à différents temps d'exécution. D'où la nécessité de trouver des techniques qui permettent de trouver le meilleur ordre d'application des opérateurs, les meilleurs chemins d'accès aux relations. Ces techniques qui améliorent les performances des systèmes se retrouvent au niveau de l'optimiseur. Génération d'un plan d'exécution (exécuteur de plan): L'exécuteur de plan fournit le résultat de la requête en exécutant les opérateurs contenus dans l'arborescence à l'aide de procédure associée à ces opérateurs. Le gestionnaire des accès concurrents et le gestionnaire de panne Ils concernent un thème plus général, à savoir la gestion de transactions. Ils offrent des mécanismes assurant la sécurité de la base de données utilisée par plusieurs utilisateurs en parallèle. Le gestionnaire d'espace physique Il permet une organisation efficace des données et un accès rapide grâce à l'implémentation de méthodes d'accès appropriées. Le Catalogue système ou Méta-base Appelé également dictionnaire de données, contient la description des données de la base (relations, index, vues...), ainsi que des relations systèmes. 1. Modes d'interrogation d'une base de données Mode Interactif (à travers une interface SQL) L'utilisateur interroge directement la base de données par des requêtes en langage SQL, directement interprétables. Un plan d'exécution de la requête est généré en passant d'abord par les phases d'analyse syntaxique et d'optimisation Mode programmé Les ordres SQL sont incorporés à un programme d'application écrit en langage de programmation PL/1, C, ... appelés langages hôtes. Dans ce cas la démarche nécessite une approche de précompilation. Le précompilateur est un processeur qui regroupe les instructions SQL du programme d'application dans un module de requêtes de la BD, et les remplace dans le programme initial par des appels (CALLs) du langage hôte à un superviseur d'exécution qui surveille les programmes SQL. D. Fonctions d'un SGBDR Parmi les fonctionnalités d'un SGBDR nous citons : 1. Création / modification Nous nus intéressons à la création de tables, la modification de la structure d'une table, et la mise à jour des données. a) Création d'une table La structure de données primaire dans les systèmes relationnels est la relation de 8 Nadia Abdat & Nazih Selmoune Architecture générale d'un SGBD Relationnel base. La forme générale de la requête permettant la création d'une relation ou table dans SQL est la suivante Syntaxe CREATE TABLE <nom de table> (définition d'attribut [, définition d'attribut]...) ; //Où définition d'attribut est : <nom-attribut (type-donnée [, NOT NULL])> Remarque Les principaux types de données prédéfinis (dans Oracle) sont : CHAR (n) chaîne de longueur fixe de n car (par défaut 1 car. Au maximum 255 car) VARCHAR2 (n) chaîne de longueur variable (par défaut 1car. Au maximum 2000 car) DATE format par défaut jj/mm/aa Number(x[,y]) x nombre total de chiffres et y nombre de chiffres après la virgule Exemple écrira : Pour créer la base de données approvisionnement, on CREATE TABLE FOURNISSEUR (NF CHAR(5), NOM CHAR(20), CODE NUMBER(5), VILLE CHAR (15)) ; CREATE TABLE PIECE (NP CHAR(5), NOM CHAR(20), MATERIAU CHAR(6), POIDS NUMBER(3), VILLE CHAR (15)) ; CREATE TABLE FOURNITURE (NF CHAR (5), NP CHAR(5), QTE NUMBER(5)) ; Remarque Les ordres CREATE TABLE peuvent être émis à tout moment dans la vie de la base et non pas comme les systèmes classiques seulement à la phase de création du module ou du schéma de la base. Remarque Pour les clés primaires, il est recommandé de les définir en ajoutant PRIMARY KEY dès la création de table car les données sont stockées selon l'ordre de cette clé. Exemple CREATE TABLE FOURNISSEUR( NF CHAR(5) PRIMARY KEY, NOM CHAR(20), CODE NUMBER(5), VILLE CHAR (15)) ; b) Modification de schéma Une autre possibilité des SGBD relationnels est de modifier à tout moment le schéma des relations existantes. Syntaxe : Supprimer une relation par la commande : DROP TABLE <nom table> ; Nadia Abdat & Nazih Selmoune 9 Architecture générale d'un SGBD Relationnel Syntaxe : • ajouter un nouvel attribut afin de prendre en compte une information qui n'avait pas été prévue au départ ALTER TABLE <nom table> ADD FIELD (< nom attribut> type de donnée) ; Exemple : Ajouter une colonne DATEF à la relation FOURNITURE ALTER TABLE FOURNITURE ADD FIELD (DATEF Date); Syntaxe : Modifier une colonne existante ALTER TABLE <nom table> MODIFY FIELD (< nom attribut> type de donnée) ; Exemple : Modifier la taille du nom dans la relation fournisseur ALTER TABLE Fournisseur MODIFY FIELD NOM (CHAR (40)) ; c) Mise à jour des données Syntaxe : Après la création des tables, l'utilisateur peut maintenant procéder au chargement des données en utilisant l'instruction INSERT de SQL. Pour insérer une pièce (par exemple, la pièce P7 qui est un clou) dans la relation PIECE INSERT INTO PIECE (NP, NOM, MATERIAU, POIDS, VILLE) values (‘P7', ‘clou',?,?,?); Remarque Les trois derniers champs de la pièce insérée sont indéfinis. On peut également copier plusieurs lignes à partir d'une autre relation. Exemple INSERT INTO FOURNISSEUR-TUNIS (NF, NOM) SELECT NF, NOM FROM FOURNISSEUR WHERE VILLE = ‘Tunis' ; Remarque Le nombre de colonnes et le type des colonnes dans le INSERT doivent correspondre à ceux du résultat du SELECT Syntaxe : Modification de valeurs UPDATE <nom de table> SET <nom attribut1> = nouvelle valeur, [nom attribut2 = nouvelle valeur, ...] WHERE <prédicat> ; Exemple Alger : Pour ajouter 20 aux codes des fournisseurs localisés à UPDATE FOURNISSEUR SET CODE = CODE + 20 WHERE VILLE = ‘ALGER' ; 10 Nadia Abdat & Nazih Selmoune Architecture générale d'un SGBD Relationnel Syntaxe : Pour effacer des n-uplets d'une relation nous utilisons la commande : DELETE FROM <nom table> [WHERE <prédicat>] ; Remarque L'instruction efface les tuples qui satisfont le prédicat. Exemple : Pour exprimer que les fournisseurs d'Alger ne fournissent plus de pièces DELETE FROM FOURNITURE WHERE NF IN (SELECT NF FROM FOURNISSEUR WHERE VILLE = ‘ALGER'); 2. Chemins d'accès ou INDEX Reprenons l'exemple de la base de données approvisionnement. Son schéma relationnel, tel qu'il apparaît dans l'exemple est le seul que doivent connaître les usagers ‘normaux' de la base de données gérée par le SGBD. Il correspond à l'ensemble de tables de valeurs, sans description du stockage physique des n-uplets ni des chemins d'accès qu'il faut utiliser pour retrouver les n-uplets d'une relation dans un ordre donné ou pour aller d'une relation à une autre. Une requête relationnelle ne précise pas les chemins d'accès aux informations ni l'ordre dans lequel les opérateurs de produit s'appliquent. C'est à l'administrateur de demander au système la création des chemins d'accès sur les relations stockées et au système de choisir, grâce à l'optimiseur, parmi les chemins disponibles celui qui est le plus adéquat (indépendance physique). Remarque Un chemin d'accès défini sur une relation est appelé INDEX Définition Un index est un arrangement des tuples d'une relation en fonction des valeurs d'un attribut ou d'un groupe d'attributs. a) On distingue deux types d'index : index primaire et index secondaire L'index primaire est défini sur la clé de la relation : à une valeur de la clé, la fonction index ramènera un tuple. L'index primaire fournit un accès direct aux tuples d'une relation, c'est-à-dire que l'ordre des tuples sur la clé coïncide avec l'ordre physique. L'index secondaire peut être défini sur des attributs non clé : à une valeur de l'attribut de l'index, celui-ci ramènera un ou plusieurs tuples. L'index secondaire est un réarrangement logique des tuples d'une relation en fonction des valeurs d'un attribut ou groupe d'attributs. b) La commande de création d'un index est de la forme Syntaxe CREATE [UNIQUE] INDEX <nomIndex> ON < nomRelation> (attribut [ordre][, Nadia Abdat & Nazih Selmoune 11 Architecture générale d'un SGBD Relationnel attribut [ordre]..] ); Où ordre est soit ASC ou DESC et s'il n'est pas spécifié, l'ordre ASC est pris par défaut. L'option UNIQUE permet d'une part de définir qu'un attribut (ou un groupe d'attributs) est clé discriminante de la relation et d'autre part de fournir un chemin d'accès direct aux n-uplets ayant une valeur de clé donnée. Exemple données : Pour définir les index primaire de notre base de CREATE UNIQUE INDEX XF ON FOURNISSEUR (NF) ; CREATE UNIQUE INDEX XP ON PIECE (NP) ; CREATE UNIQUE INDEX XFP ON FOURNITURE (NF, NP) ; Exemple : La création d'un index secondaire selon la ville des fournisseurs serait : CREATE INDEX XV ON FOURNISSEUR (VILLE) ; Syntaxe : L'instruction de suppression d'un index d'une relation est DROP INDEX <nom index> ; Remarque En permettant l'exécution à tout moment des instructions CREATE INDEX et DROP INDEX le SGBD assure l'indépendance des programmes vis à vis des chemins d'accès (indépendance physique). E. Catalogues Du point de vue d'un SGBD relationnel, une base de données comporte des relations de la base et des vues. De plus pour chaque relation stockée, il peut exister un ou plusieurs chemins d'accès (index). La manière la plus naturelle pour un SGBD relationnel de conserver toutes ces informations est de les stocker dans des catalogues qui sont eux mêmes des relations stockées dans la base ; le SGBD permet aux usagers de consulter, grâce au langage d'interrogation, les informations relatives à la description de la base. Relation Ce catalogue contient un n-uplet pour chaque relation de la base de données y compris lui même et les autres catalogues. On y trouve des informations sur le nom de la relation, son créateur, son degré, certaines statistiques sur son contenu etc.... Attribut pour chaque relation de la base décrite dans le catalogue Relation, le catalogue Attribut comporte autant de lignes qu'il y a d'attributs dans la relation. Chaque nuplets décrit un attribut : son nom, son type, sa longueur, etc.... Index On y trouve la description des chemins d'accès définis sur les relations de la base. Pour chaque index, par exemple, on y trouve la relation et les constituants 12 Nadia Abdat & Nazih Selmoune Architecture générale d'un SGBD Relationnel concernés et s'il s'agit d'un index primaire ou secondaire etc.... Remarque D'autres catalogues contraintes..) existent relatifs à d'autres aspects (vue, autorisation, Exemple Chaque tuple est un descripteur de relation qui peut être de 3 types : Base, Système, ou Vue. Image 2 Catalogue Attribut Image 1 Catalogue Relation Chaque tuple décrit un attribut d'une relation système, de base ou d'une vue Chaque tuple décrit un index créé sur une relations de base ou système Image 3 Catalogue Index Remarque Parmi les catalogues dans Oracle 11: USER_ALL_TABLES, USER_CONSTRAINTS etc. Complément : D'autres fonctions du SGBDR existent telles que • Assurer la cohérence des informations stockées par rapport à leur signification : contrainte d'intégrité ou intégrité interne, • Assurer l'accès concurrent tout en gardant la cohérence de la base : synchronisation des accès concurrents, • Assurer la sûreté de fonctionnement en cas de panne : mécanisme de reprise, • Assurer la sûreté d'utilisation : droit d'accès.... Ces dernières seront étudiées dans les chapitres suivants F. Rappel de la terminologie du modèle relationnel Définition : Scalaire C'est la plus petite unité sémantique de données (valeur atomique) telle que la valeur du numéro d'un fournisseur, du poids d'une pièce... Définition : Domaine Ensemble donné de valeurs scalaires, toutes de même type. Par exemple, le domaine des numéros des fournisseurs, le domaine des villes ... Définition : Attribut Champ définissant une propriété. Il doit être défini sur exactement un seul domaine : les valeurs des attributs doivent être prises dans ce domaine. Par exemple, Nadia Abdat & Nazih Selmoune 13 Architecture générale d'un SGBD Relationnel l'attribut NF dans la relation Fournisseur et l'attribut NF dans la relation Fourniture, sont tous deux définis sur le domaine des numéros de fournisseur. Remarque Dans les langages de programmation, on défini un domaine par un type de données. Définition : Relation Une relation R, sur un ensemble de domaines D1,D2,..., Dn (non nécessairement distincts) est constituée de deux parties, un en-tête (schéma de la relation) et un corps (ensemble de lignes). L'en-tête est un ensemble fixé d'attributs {A1, A2,..., An }, tel que chaque attribut Ai est défini sur un domaine Dj ( j = 1,2, ..., n ). Les noms des attributs A1 , A2 , ..., An sont tous distincts. Le corps consiste en un sous-ensemble de tuples ou n-uplets. Définition : Tuple Appelé aussi uplet ou enregistrement, correspond à une ligne d'une relation. Définition : Cardinalité C'est le nombre de tuples d'une relation. Définition : Degré C'est le nombre d'attributs d'une relation G. Exemple : Base de données approvisionnement Une illustration de base de données sous forme de tables est donnée dans cet exemple. Image 4 Schéma relationnel de la BD approvisionnement NF : numéro et nom du fournisseur NOM : nom du fournisseur CODE le code du fournisseur VILLE la ville où il se situe . NP : numéro de la pièce NOMP : nom de la pièce MATERIAU : le matériau constituant la pièce POIDS : le poids de la pièce VILLEP : la ville où est stockée la pièce QTE : la quantité d'un produit fourni par un fournisseur Remarque L'attribut (ou les attributs) souligné(s) dans une relation correspond(ent) à la clé de cette dernière.. 14 Nadia Abdat & Nazih Selmoune Architecture générale d'un SGBD Relationnel Chaque relation possède une interprétation ou une signification voulue. Par exemple, un tuple (f, n, c, v) de la relation fournisseur signifie : le fournisseur ayant un numéro de fournisseur f possède un nom n, un code c, et se trouve dans une ville v. De plus, deux fournisseurs n'ont jamais le même numéro. De même un tuple (p, n', m, x, v') de la relation Pièce : la pièce ayant un numéro de pièce p possède un nom n', un matériau m, un poids x et se trouve dans une ville v'. De plus, deux pièces n'ont jamais le même numéro. Un tuple (f, p, q) de la relation Fourniture signifie que le fournisseur n° f fournit la pièce n°p en une quantité égale à q. Une extension de la base de donnée approvisionnement Nadia Abdat & Nazih Selmoune 15
© Copyright 2024 ExpyDoc