Dépendances entre les chapitres 1 Introduction aux systèmes de gestion de bases de données 3.1 et 3.2 Concepts de base et contraintes d'intégrité du modèle relationnel 3.4 Algèbre relationelle 2 Analyse et modélisation conceptuelle 7 Gestion des données en mémoire secondaire 3.3 Conception logique 8 Organisations unidimensionnelles : indexage et hachage 4 Le langage SQL 5 Interface entre SQL et un programme 11 Théorie de la normalisation 6 Contraintes d'intégrité en SQL 12 Cas d'utilisation détaillés et processus d'élaboration du modèle conceptuel de données 14 L'intégrité et la gestion des transactions 15 Développement d'applications de bases de données en Java 21/04/2017 10 Evaluation des requêtes relationnelles 16 Bases de données objet 20 Données semistructurées et XML 9 Méthodes multidimensionnelles et représentation d'associations 22 Logique et bases de données 13 Conception dans un contexte relationnel 17 Relationel-objet 21 Repérage de l’information 18 Bases de données parallèles et réparties © Robert Godin. Tous droits réservés. 19 Les entrepôts de données et l’analyse de données 1 1 Introduction aux systèmes de gestion de bases de données BD : composante essentielle des systèmes informatiques modernes – – – – – 21/04/2017 systèmes d ’information de gestion ingénierie contrôle de processus bibliothèques électroniques ... Données persistantes © Robert Godin. Tous droits réservés. 2 1.1 Donnée et de type de donnée Donnée (data) – Une donnée au sens informatique est une représentation d'un fait à l'aide d'un code binaire stocké dans la mémoire de l'ordinateur Type de données (data type) – 21/04/2017 Le type de données détermine la nature du codage utilisé pour représenter la donnée et les opérations applicables à la donnée. © Robert Godin. Tous droits réservés. 3 1.2 Donnée et information Information : donnée interprétée – – – théorie de l'information Shannon et Weaver (1959 ) mesure de la quantité d'information – – message d'une source à un destinataire diminution de l'incertitude au niveau du destinataire information : relatif au destinataire du message Changement d'état du destinataire Souvent synonymes 21/04/2017 © Robert Godin. Tous droits réservés. 4 1.3 Donnée simple et complexe Donnée simple Donnée de type complexe, ou donnée complexe – composée de données simples Donnée multimédia (multimedia data) – 21/04/2017 texte, image, son, vidéo © Robert Godin. Tous droits réservés. 5 1.4 Différentes facettes du terme base de données Base de données (BD) – Au sens large, collection de données Différentes interprétations 21/04/2017 fichier de texte ensemble de fichiers de textes un seul fichier d'enregistrements ensemble de fichiers d’enregistrements plusieurs sous bases de données indépendantes les unes des autres Toile : base de données de nature hétérogène et répartie BD logique = une collection de BD physiques © Robert Godin. Tous droits réservés. 6 1.5 Système de gestion de base de données (SGBD) Base de données (database) – Sens plus strict, ensemble de données : 1. fortement structurées 2. persistantes 3. structure définie dans un schéma 4. gérées par système de gestion de bases de données Système de gestion de base de données (SGBD, database management system - DBMS) – 21/04/2017 Logiciel spécialisé pour la gestion de base de données © Robert Godin. Tous droits réservés. 7 Mémoire centrale/secondaire Mémoire centrale, principale, vive, primaire, volatile (main memory, primary storage) – directement accessible par le processeur central – contient les instructions et les données d'un programme en exécution – rapidité – non persistance Mémoire secondaire (secondary storage), permamente, externe, stable, non volatile ou persistante 21/04/2017 – indirectement via des opérations d'entrée/sortie – lenteur – persistance © Robert Godin. Tous droits réservés. 8 Langage de définition des données et schéma Langage de définition des données (LDD, data definition language - DDL ) – permet la définition des types des données de la BD Schéma de la base de données (database schema) – 21/04/2017 structure des données définie à l'aide du LDD © Robert Godin. Tous droits réservés. 9 Environnement SGBD Programme source avec LMD enchâssé Programmeur Programme source incorporant des appels à une librairie spécialisée pour le SGBD pré-compilateur Utilisateur expert Utilisateur Administrateur de base de données (ABD) Compilateur Utilitaire d'édition et d'interprétation de commandes du LMD Utilitaire d'édition du schéma Interprète du LDD Programme d'application Utilitaire convivial de manipulation de données Evaluateur de requête (LMD) Système de gestion de base de données (SGBD) Dictionnaire de données (contient le schéma ou méta-données) 21/04/2017 Base de données (contient les données) secondaire permanente © Robert Godin. TousMémoire droits réservés. 10 Langage de manipulation de données/ de requête Manipulation des données (data manipulation) – lire (sélectionner) – ajouter – supprimer – modifier Langage de manipulation des données (LMD, data manipulation language - DML) 21/04/2017 – langage de requête (query language ) – ex: SQL, OQL © Robert Godin. Tous droits réservés. 11 Contexte d ’utilisation du LMD Langage de manipulation des données enchâssé (embedded data manipulation language), langage hôte (host language) – LMD enchâssé un langage de programmation hôte – syntaxe spéciale non reconnue par compilateur (e.g. C, C++, ADA, JAVA,…) étape de pré-compilation Interface programmatique (API) – e.g. ODBC, JDBC – LMD passé en paramètre Utilitaire GUI convivial 21/04/2017 © Robert Godin. Tous droits réservés. 12 Exécution des requêtes Évaluateur de requête (query processor) – composante du SGBD responsable de l'exécution des requêtes – processus complexe Requête (query) – 21/04/2017 opération de manipulation de données © Robert Godin. Tous droits réservés. 13 Définition des données Administrateur de la base de données (ABD, database administrator - DBA) – – – Méta-données (metadata) – responsable de la gestion d'une base de données maintien du schéma de la base de données utilitaire d ’édition du schéma le schéma sous forme de données Dictionnaire de données (métabase, data dictionary) – 21/04/2017 BD, gérée par le SGBD, qui contient les méta-données © Robert Godin. Tous droits réservés. 14 1.6 Principales architectures des BD Architecture centralisée – programme d'application et SGBD sur même machine (même site) – premiers systèmes Architecture du type client-serveur (client-server architecture) – programme d'application = client 21/04/2017 interface (« GUI ») + traitement du domaine d ’application – SGBD = serveur (de données « data server ») – machines (sites) différentes – deux couches, niveaux, strates (“two tier ”) © Robert Godin. Tous droits réservés. 15 Architecture client-serveur BD Réseau Programme d'application Logiciel intermédiaire Pilote de télécommunication Client 21/04/2017 SGBD Logiciel intermédiaire Pilote de télécommunication Serveur © Robert Godin. Tous droits réservés. 16 Architecture à trois niveaux (three tier) BD Réseau Réseau Interface Application SGBD Logiciel intermédiaire Pilote de télécommunication Logiciel intermédiaire Pilote de télécommunication Logiciel intermédiaire Pilote de télécommunication Client mince Serveur d'application Serveur de données 21/04/2017 © Robert Godin. Tous droits réservés. 17 Base de données répartie, distribuée (distributed database) SGBD réparti (distributed DBMS) – répartition des données de manière transparente BD locale Réseau Programme d'application Logiciel intermédiaire Pilote de télécommunication Client 21/04/2017 BD locale Réseau SGBD réparti SGBD réparti Logiciel intermédiaire Pilote de télécommunication Logiciel intermédiaire Pilote de télécommunication Serveur de données Serveur de données © Robert Godin. Tous droits réservés. 18 Base de données parallèle (parallel database) Parallélisme à l'intérieur d'un site Unité de traitement Disque 21/04/2017 Unité de traitement Disque Disque Unité de traitement Disque © Robert Godin. Tous droits réservés. Mémoire vive Disque 19 Entrepôt de données BD opérationnelle (OLTP) BD opérationnelle (OLTP) Extraction : filtrage, synthèse, transformation, fusion Entrepôt de données (« data wharehouse ») Analyse (OLAP), prospection Autre source de données 21/04/2017 © Robert Godin. Tous droits réservés. 20 Entrepôt de données Base de données opérationnelle – traitement des données quotidiennes et récentes – OLTP (“ On Line Transaction Processing ”). Entrepôt de données (data wharehouse) – grand volume de données historiques extraites de bases opérationnelles pour le support à la prise de décision – OLAP (“ On Line Analytical Processing ”) Prospection de données , ou forage, fouille, exploration de données, ou découverte de connaissances dans les BD (data mining, analysis, dredging, archeology, knowledge discovery in databases - KDD) 21/04/2017 – extraction non triviale d'informations implicites, inconnues et utiles – apprentissage machine , statistiques © Robert Godin. Tous droits réservés. 21 1.7 Des systèmes de gestion de fichiers aux SGBD Système de gestion de fichier (SGF, file system) 21/04/2017 – gestionnaire de fichiers (file manager) – composante du système d’exploitation – abstraction des mémoires secondaires sous forme d'un ensemble de fichiers © Robert Godin. Tous droits réservés. 22 Utilisation d'un système de gestion de fichier Application de gestion des comptes Fichier des comptes 21/04/2017 Fichier des transactions Application de gestion des prêts Fichier des prêts Fichier des transactions Mise à jour en lot des comptes Mise à jour en lot des prêts Fichier des comptes mis à jour Fichier des prêts mis à jour © Robert Godin. Tous droits réservés. 23 Exemple de contenu des fichiers de comptes et de prêts (fichiers séquentiels triés) noCompte 100 200 300 400 600 nomClient Hugh Paycheck Dollard Cash Hugh Paycheck Ye San Le Su Ye San Le Su noPrêt nomClient 1000 Hugh Paycheck Ye San Le Montréal Su Hugh Ottawa Paycheck 2000 3000 21/04/2017 adresse Client Ottawa adresseClient Ottawa Montréal Ottawa Montréal Montréal noTéléphone noTéléphone (999)999-9999 (888)888-8888 (999)999-9999 (777)777-7777 (777)777-7777 dateOuverture 5/05/1999 10/10/1999 10/10/1999 20/7/2000 15/10/2000 solde 1000.00 2000.00 1000.00 5.00 10.00 (999)999-9999 montant Prêt 10000.00 dateDébut taux fréquence Intérêt Paiement 10/6/2000 10 12 (777)777-7777 20000.00 20/7/2000 12 52 (999)999-9999 5000.00 15/8/2000 12 12 © Robert Godin. Tous droits réservés. 24 1.7.1 Redondance et incohérence des données Modifications anarchiques noCompte 100 200 300 400 600 nomClient Hugh Paycheck Dollard Cash Hugh Paycheck Ye San Le Su Ye San Le Su noPrêt nomClient 1000 Hugh Paycheck Ye San Le Montréal Su Hugh Ottawa Paycheck 2000 3000 21/04/2017 adresse Client Alma adresseClient Ottawa Montréal Québec Montréal Montréal noTéléphone (999)999-9999 (888)888-8888 (555)555-5555 (777)777-7777 (777)777-7777 noTéléphone (444)444-4444 montant Prêt 10000.00 dateDébut taux fréquence Intérêt Paiement 10/6/2000 10 12 (777)777-7777 20000.00 20/7/2000 12 52 (999)999-9999 5000.00 15/8/2000 12 12 © Robert Godin. Tous droits réservés. dateOuverture 5/05/1999 10/10/1999 10/10/1999 20/7/2000 15/10/2000 solde 1000.00 2000.00 1000.00 5.00 10.00 25 1.7.2 Mécanismes d'organisation de données limités des SGF SGBD supporte – – – – 21/04/2017 Indexage Hachage Organisation par grappe Liens entre fichiers © Robert Godin. Tous droits réservés. 26 1.7.3 Intégrité sémantique Contrainte d'intégrité sémantique (semantic integrity constraint) – ou simplement contrainte d'intégrité – une règle qui doit toujours être respectée par les données de la BD – ex: “ le solde d'un compte ne peut être négatif ” Supporté par SGBD (pas SGF) 21/04/2017 © Robert Godin. Tous droits réservés. 27 1.7.4 Contrôle de concurrence Empêcher interférences indésirables Temps t1 Processus #1 Lire(SoldeCompte, s) {s = 8} t2 État du fichier SoldeCompte = 8 Lire(SoldeCompte, s) {s = 8} t3 t4 t5 t6 t7 Processus #2 s=s+5 Écrire(s, SoldeCompte) SoldeCompte = 13 s=s+2 Écrire(s, SoldeCompte) SoldeCompte = 10 Saperlipopette! SGBD : mécanismes raffinés 21/04/2017 © Robert Godin. Tous droits réservés. 28 1.7.5 Fiabilité Exemple de panne SGBD : mécanismes de récupération Revenir à un état cohérent suite à une panne – – 21/04/2017 journal des transactions duplication des composantes et des données © Robert Godin. Tous droits réservés. 29 1.7.6 Sécurité SGF : – lecture, écriture au niveau fichier SGBD : contrôle plus fin – – – – – 21/04/2017 types de données enregistrements champs type d ’opération cryptage © Robert Godin. Tous droits réservés. 30 1.7.7 Gestion des transactions Transaction 21/04/2017 – séquence d'opérations de manipulation données exécutées par un programme – délimitées par une opération de début et une opération de fin de transaction – propriétés d'Atomicité, de Consistance, d'Isolation et de Durabilité (ACID). © Robert Godin. Tous droits réservés. de 31 1.7.8 Indépendance des données Indépendance – formulation d'une requête (QUOI) – 21/04/2017 entre : langage non procédural façon d'effectuer la requête par le SGBD (COMMENT) © Robert Godin. Tous droits réservés. 32 1.8 Perspective historique Modèle de définition de données (“ data definition model ”) – 1ère génération (années 70): réseau, hiérarchique (CODASYL, IMS,...) – – objet (Object Store, Versant,…) relationnel objet (Oracle8, DB2 UDS, Informix US) 4ième génération ? – LMD non procédural 3ième génération (années 90) – LMD navigationnel 2ième génération (années 80) :relationnel (Oracle, Ingres, DB2, SQL server,…) – nature des types de données supportés par le SGBD. déductif (« Datalog »), entrepôt de données, data mining, support du WEB (XML, XMLQL) Modèles pour conception – 21/04/2017 E/R, UML © Robert Godin. Tous droits réservés. 33 1.9 Exemple introductif : Banque SansIntérêts Table Client noClient nomClient adresseClient 10 Hugh Paycheck Ottawa 20 Dollard Cash Montréal 30 Ye San Le Su Montréal noCompte 100 200 300 400 600 21/04/2017 Table Compte solde dateOuverture 1000.00 5/05/1999 2000.00 10/10/1999 1000.00 10/10/1999 5.00 20/7/2000 10.00 15/10/2000 noPrêt montantPrêt 1000 2000 3000 10000.00 20000.00 5000.00 noTéléphone (999)999-9999 (888)888-8888 (777)777-7777 noClient 10 20 10 30 30 Table Prêt dateDébut tauxIntérêt fréquence Paiement 10/6/2000 10 12 20/7/2000 12 52 15/8/2000 12 12 © Robert Godin. Tous droits réservés. noClient 10 30 10 34 Code du schéma avec le LDD SQL (script Oracle) 21/04/2017 CREATE TABLE Client (noClient nomClient adresseClient noTéléphone INTEGER PRIMARY KEY, VARCHAR(15), VARCHAR(20), VARCHAR(15)) CREATE TABLE Compte (noCompte solde dateOuverture noClient INTEGER PRIMARY KEY, DECIMAL(10,2) CHECK (solde >= 0), DATE, INTEGER REFERENCES Client) CREATE TABLE Prêt (noPrêt montantPrêt dateDébut tauxIntérêt fréquencePaiement noClient INTEGER PRIMARY KEY, DECIMAL(10,2), DATE, DECIMAL(8,2), INTEGER, INTEGER REFERENCES Client) © Robert Godin. Tous droits réservés. 35 Création du schéma avec l'outil SQL*plus d'Oracle 21/04/2017 © Robert Godin. Tous droits réservés. 36 Création du schéma SQL> CREATE TABLE Client 2 (noClient INTEGER PRIMARY KEY, 3 nomClient VARCHAR(18), 4 adresseClient VARCHAR(20), 5 noTéléphone VARCHAR(15)) 6 / Table created. SQL> CREATE TABLE Compte 2 (noCompte INTEGER PRIMARY KEY, 3 solde DECIMAL(10,2) CHECK (solde >= 0), 4 dateOuverture DATE, 5 noClient INTEGER REFERENCES Client) 6 / Table created. SQL> CREATE TABLE Prêt 2 (noPrêt INTEGER PRIMARY KEY, 3 montantPrêt DECIMAL(10,2), 4 dateDébut DATE, 5 tauxIntérêt DECIMAL(8,2), 6 fréquencePaiement INTEGER, 7 noClient INTEGER REFERENCES Client) 8 / Table created. 21/04/2017 © Robert Godin. Tous droits réservés. 37 Manipulation de données SQL> INSERT INTO Client 2 VALUES(10,'Luc Sansom','Ottawa','(999)999-9999') 3 / 1 row created. SQL> SELECT * 2 FROM Client 3 / NOCLIENT NOMCLIENT ADRESSECLIENT NOTÉLÉPHONE ---------- ------------------ -------------------- --------------10 Luc Sansom Ottawa (999)999-9999 21/04/2017 © Robert Godin. Tous droits réservés. 38 Transaction (COMMIT) -- Session parallèle avec Oracle (multiversion) : SQL> SELECT * 2 FROM Client 3 / no rows selected SQL> COMMIT 2 / Commit complete. Session parallèle : SQL> SELECT * 2 FROM Client 3 / NOCLIENT NOMCLIENT ADRESSECLIENT NOTÉLÉPHONE ---------- ------------------ -------------------- --------------10 Luc Sansom Ottawa (999)999-9999 21/04/2017 © Robert Godin. Tous droits réservés. 39 Insertion d ’un lot en une transaction SQL> INSERT INTO Client 2 VALUES(20,'Dollard Tremblay','Montréal','(888)888-8888') 3 / 1 row created. SQL> INSERT INTO Client 2 VALUES(30,'Lin Bô','Montréal','(777)777-7777') 3 / 1 row created. SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY' 2 / Session altered. SQL> INSERT INTO Compte 2 VALUES(100,1000.0,'5/5/1999',10) 3 / 1 row created. … SQL> INSERT INTO Prêt 2 VALUES(3000,5000,'15/8/2000',12,12,10) 3 / 1 row created. SQL> COMMIT 2 / Commit complete. 21/04/2017 © Robert Godin. Tous droits réservés. 40 Respect des contraintes d’intégrité SQL> INSERT INTO Client 2 VALUES(10,'Jean Leconte','Montréal','(666)666-6666') 3 / INSERT INTO Client * ERROR at line 1: ORA-00001: unique constraint (IDUTIL1.SYS_C001737) violated 21/04/2017 © Robert Godin. Tous droits réservés. 41 SELECT SQL SQL> 2 3 4 SELECT noCompte, solde FROM Compte WHERE noClient = 10 / NOCOMPTE SOLDE ---------- ---------100 1000 300 1000 noCompte 100 200 300 400 600 SELECT FROM WHERE solde 1000.00 2000.00 1000.00 5.00 10.00 dateOuverture 5/05/1999 10/10/1999 10/10/1999 20/7/2000 15/10/2000 noCompte, solde Compte noClient = 10 noCompte 100 300 21/04/2017 noClient 10 20 10 30 30 solde 1000.00 1000.00 © Robert Godin. Tous droits réservés. 42 Exécution d'un SELECT dans une application client-serveur Java // Exemple de programme JAVA qui utilise le pilote JDBC thin d'Oracle // pour effectuer un SELECT et itérer sur les lignes du résultat // Il faut importer le paquetage java.sql pour utiliser JDBC package ExemplesJDBC; import java.sql.*; import java.math.BigDecimal; class ExempleSelectCompte { public static void main (String args []) throws SQLException, ClassNotFoundException, java.io.IOException { // Charger le pilote JDBC d'Oracle Class.forName ("oracle.jdbc.driver.OracleDriver"); // Connection à une BD avec un pilote thin Connection uneConnection = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ora817i", "idutil1", "oracle"); // Création d'un énoncé associé à la Connection Statement unEnoncéSQL = uneConnection.createStatement (); // Exécution d'un SELECT // Le code du SELECT est passé en paramètre sous forme d'un String ResultSet résultatSelect = unEnoncéSQL.executeQuery ("SELECT noCompte, solde FROM Compte WHERE noClient = 10"); // Itérer sur les lignes du résultat du SELECT et extraire les valeurs // des colonnes dans des variables JAVA while (résultatSelect.next ()){ int noCompte = résultatSelect.getInt ("noCompte"); BigDecimal solde = résultatSelect.getBigDecimal ("solde"); System.out.println ("Numéro du compte:" + noCompte); System.out.println ("Solde:" + solde); } // Fermeture de l'énoncé et de la connexion unEnoncéSQL.close(); uneConnection.close(); } } 21/04/2017 © Robert Godin. Tous droits réservés. 43 Pilote JDBC BD Réseau Programme d'application (Java) SGBD (Oracle) Logiciel intermédiaire (Pilote JDBC) Pilote de Client télécommunication (TCP/IP) Logiciel intermédiaire (NET8) Pilote de Client télécommunication (TCP/IP) Client 21/04/2017 Serveur © Robert Godin. Tous droits réservés. 44 SELECT sur plusieurs tables SQL> 2 3 4 5 SELECT nomClient, noCompte, solde FROM Client, Compte WHERE Client.noClient = Compte.noClient AND dateOuverture = '10/10/1999' / NOMCLIENT NOCOMPTE SOLDE ------------------ ---------- ---------Dollard Tremblay 200 2000 Luc Sansom 300 1000 21/04/2017 © Robert Godin. Tous droits réservés. 45 suite Requête complexe noClient 10 20 30 nomClient Hugh Paycheck Dollard Cash Ye San Le Su SELECT FROM WHERE adresseClient Ottawa Montréal Montréal noTéléphone (999)999-9999 (888)888-8888 (777)777-7777 solde 1000.00 2000.00 1000.00 5.00 10.00 dateOuverture 5/05/1999 10/10/1999 10/10/1999 20/7/2000 15/10/2000 noClient 10 20 10 30 30 nomClient, noCompte, solde Client, Compte Client.noClient = Compte.noClient AND dateOuverture = '10/10/1999' nomClient Dollard Cash Hugh Paycheck 21/04/2017 noCompte 100 200 300 400 600 noCompte 200 300 solde 2000.00 1000.00 © Robert Godin. Tous droits réservés. 46 UPDATE SQL SQL> 2 3 4 UPDATE Compte SET solde = solde - 100 WHERE noCompte = 100 / 1 row updated. SQL> 2 3 4 UPDATE Compte SET solde = solde + 100 WHERE noCompte = 300 / 1 row updated. SQL> COMMIT 2 / Commit complete. SQL> 2 3 4 SELECT noCompte, solde FROM Compte WHERE noClient = 10 / NOCOMPTE SOLDE ---------- ---------100 900 300 1100 21/04/2017 © Robert Godin. Tous droits réservés. 47 DELETE SQL SQL> DELETE FROM Compte WHERE noCompte = 100 2 / 1 row deleted. SQL> COMMIT 2 / Commit complete. SQL> SELECT * FROM Compte 2 / NOCOMPTE SOLDE DATEOUVERT NOCLIENT ---------- ---------- ---------- ---------200 2200 10/10/1999 20 300 1000 10/10/1999 10 400 5 20/07/2000 30 600 10 15/10/2000 30 21/04/2017 © Robert Godin. Tous droits réservés. 48 Organisation physique des données SQL> CREATE INDEX indexNoClientCompte ON Compte(noClient) 2 / Index created. 21/04/2017 © Robert Godin. Tous droits réservés. 49 Dictionnaire de données SQL> SELECT TABLE_NAME 2 FROM USER_TABLES 3 / TABLE_NAME -----------------------------CLIENT COMPTE PRÊT SQL> 2 3 4 SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'CLIENT' / COLUMN_NAME -----------------------------NOCLIENT NOMCLIENT ADRESSECLIENT NOTÉLÉPHONE 21/04/2017 © Robert Godin. Tous droits réservés. 50 Allocation d ’espace SQL> 2 3 4 SELECT TABLESPACE_NAME, EXTENTS, BLOCKS FROM USER_SEGMENTS WHERE SEGMENT_NAME = 'CLIENT' / TABLESPACE_NAME EXTENTS BLOCKS ------------------------------ ---------- ---------USERS 1 16 21/04/2017 © Robert Godin. Tous droits réservés. 51 1.10 Conception du schéma d'une base de données <<entity>> Client noClient nomClient adresseClient noTéléphone Modèle conceptuel 1 <<entity>> Compte noCompte solde dateOuverture 0..* 1 0..* <<entity>> Prêt noPrêt montantPrêt dateDébut tauxIntérêt fréquencePaiement <<Table>> Client {Clé primaire : noClient} noClient nomClient adresseClient noTéléphone <<Table>> Compte {Clé primaire : noCompte} noCompte solde dateOuverture noClient 21/04/2017 © Robert Godin. Tous droits réservés. Schéma relationnel <<Table>> Prêt {CléPrimaire : noPrêt} noPrêt montantPrêt dateDébut tauxIntérêt fréquencePaiement noClient 52 1.11 Architecture à trois niveaux des schémas (ANSI/SPARC) Schéma externe Schéma externe ... Schéma externe Schéma conceptuel Schéma interne 21/04/2017 © Robert Godin. Tous droits réservés. 53