République Algérienne Démocratique et Populaire Ministère de L’enseignement Supérieur et de la Recherche Scientifique Université des Frères Mentouri, Constantine1 Faculté des Sciences Exactes Département de Mathématiques Document destiné aux étudiants de Master 2 LMD Option : Mathématiques Appliquées à l’économie et à la finance Cours Base de données et Modélisation Enseignante : Aya Madouri 2024-2025 1 Plan de cours CHAPITRE 1 : INTRODUCTION AUX BASES DE DONNEES --------------- 3 I- NOTIONS INTUITIVES ----------------------------------------------------------- 3 II- OBJECTIFS ET AVANTAGES DES SGBD ---------------------------------------- 5 III- TYPES D'UTILISATIONS DE BD : --------------------------------------------- 6 IV- LES TYPES DE BASE DE DONNEES : ------------------------------------------- 8 CHAPITRE 2: MODELISATION DE BASES DE DONNEES------------------ 11 I- L’ARCHITECTURE ANSI/SPARC : -------------------------------------------- 11 II- LE MODELE ENTITE-ASSOCIATION : ------------------------------------------ 13 CHAPITRE 3 : CONCEPTION LOGIQUE --------------------------------------- 21 I- TRADUCTION DU MODELE CONCEPTUEL : ------------------------------------ 21 II- NORMALISATION DE BASES DE DONNEES: ----------------------------------- 22 III- TYPES DE DONNEES : -------------------------------------------------------- 24 IV- OPTIMISATION DES REQUETES : -------------------------------------------- 24 V- NORMALISATION DE LA CONCEPTION : -------------------------------------- 25 CHAPITRE 4 : LE MODELE RELATIONNEL ----------------------------------- 27 I- INTRODUCTION : -------------------------------------------------------------- 27 II- CONCEPTS DE BASE : ---------------------------------------------------------- 28 III- LES DÉPENDANCES FONCTIONNELLES : ---------------------------- 32 IV- LES REGLES D'INTEGRITE : -------------------------------------------------- 33 I- LES FORMES NORMALES : ---------------------------------------------------- 35 2 Chapitre 1 : Introduction aux Bases de Données I- Notions intuitives a- Base de données : Ensemble structuré de données apparentées qui modélisent un univers réel. Une BD est faite pour enregistrer des faits, des opérations au sein d'un organisme (administration, banque, université, hôpital, ...). Les BD ont une place essentielle dans l'informatique . b- Tables : Les tables sont des structures qui organisent les données en lignes et colonnes. Chaque ligne représente un enregistrement individuel, tandis que chaque colonne représente un attribut ou un champ spécifique lié aux enregistrements. Par exemple, dans une base de données de gestion d'employés, vous pourriez avoir une table avec des colonnes pour le nom, le prénom, l'âge, le numéro d'employé, le poste, etc. c- Schéma : Le schéma d'une base de données définit la structure des tables, y compris les types de données autorisés pour chaque colonne, les clés primaires et étrangères, les contraintes d'intégrité, etc. d- Langage de requête : Pour interagir avec la base de données, vous utilisez généralement un langage de requête, tel que SQL (Structured Query Language). SQL permet de créer, lire, mettre à jour et supprimer des données dans la base de données. 3 e- Système de Gestion de Base de Données (SGBD) DATA BASE MANAGEMENT SYSTEM (DBMS) : Système qui permet de gérer une BD partagée par plusieurs utilisateurs simultanément La multiplication des fichiers entraînait la redondance des données, ce qui rendait difficile les mises à jour. D'où l'idée d'intégration et de partage des données . 4 II- Objectifs et avantages des SGBD • Que doit permettre un SGBD ? a- Décrire les données : indépendamment des applications (de manière intrinsèque) ⇒ langage de définition des données DATA DEFINITION LANGUAGE (DDL) b- Manipuler les données : Interroger et mettre à jour les données sans préciser d'algorithme d'accès dire QUOI sans dire COMMENT langage de requêtes déclaratif ex.: quels sont les noms des produits de prix < 100 Euro ? ⇒ langage de manipulation des données DATA MANIPULATION LANGUAGE (DML) c- Contrôler les données : Intégrité: vérification de contraintes d'intégrité ex.: le salaire doit être compris entre 400 Euro et 20000 Euro? Confidentialité: contrôle des droits d'accès, autorisation ⇒ langage de contrôle des données DATA CONTROL LANGUAGE (DCL) d- Partage : une BD est partagée entre plusieurs utilisateurs en même temps ⇒ contrôle des accès concurrents notion de transaction L'exécution d'une transaction doit préserver la cohérence de la BD. e- Sécurité : reprise après panne, journalisation f- Performances d'accès : index (hashage, arbres balancés ...) g- Indépendance physique : Pouvoir modifier les structures de stockage ou les index sans que cela ait de répercussion au niveau des applications Les disques, les méthodes d’accès, les modes de placement, le codage des données ne sont pas apparents . 5 h- Indépendance logique : Permettre aux différentes applications d’avoir des vues différentes des mêmes données Permettre au DBA de modifier le schéma logique sans que cela ait de répercussion au niveau des applications III- Types d'utilisations de BD : a- Gestion de l'entreprise : - Gestion des ressources humaines : Suivi des informations sur les employés, les salaires, les avantages, etc. - Gestion des clients : Stockage des informations sur les clients, les commandes, les historiques d'achat, etc. - Gestion de l'inventaire : Suivi des stocks, des fournisseurs et des niveaux de stock. - Comptabilité : Stockage des transactions financières, des comptes, des rapports financiers, etc. b- Sites Web et applications : - Sites de commerce électronique : Stockage des informations sur les produits, les commandes, les commentaires des clients, etc. - Réseaux sociaux : Gestion des profils d'utilisateurs, des messages, des relations entre utilisateurs, etc. - Blogs et systèmes de gestion de contenu (CMS) : Stockage des articles, des médias,des commentaires, etc. - Applications mobiles : Stockage de données utilisateur, de paramètres, de journaux d'activité, etc. c- Science des données et analyse : - Stockage de données brutes : Conservation de données massives pour des analyses ultérieures. - Data warehousing : Agrégation et stockage de données provenant de multiples sources pour l'analyse. 6 - Business intelligence : Création de rapports, de tableaux de bord et d'analyses pour aider à la prise de décision. d- Secteur de la santé : - Dossiers médicaux électroniques (DME) : Stockage des informations sur les patients,les diagnostics, les ordonnances, etc. - Systèmes d'information hospitalière (SIH) : Gestion des opérations hospitalières et des rendez-vous. - Recherche médicale : Stockage de données de recherche, de résultats d'essais cliniques, etc. e- Secteur de l'éducation : - Gestion des étudiants : Stockage des informations sur les élèves, les cours, les notes,etc. - Bibliothèques numériques : Stockage de livres, de revues et de ressources éducatives en ligne. - Analyse des performances : Suivi des performances des élèves et des enseignants. f- Logistique et transport : - Gestion de la chaîne d'approvisionnement : Suivi des flux de produits, des commandes et de l'inventaire. - Gestion de flottes : Suivi des véhicules, de la maintenance, des itinéraires... - Planification des transports : Optimisation des itinéraires et des horaires de livraison. g- Secteur gouvernemental : - Gestion des registres publics : Stockage de données civiles, criminelles, foncières, etc. - Administration fiscale : Suivi des impôts, des paiements, des déductions... h- Sécurité et application de la loi : - Gestion des preuves : Stockage de preuves numériques dans les enquêtes criminelles. 7 - Contrôle des frontières : Gestion des données des voyageurs et des passeports. IV- Les types de base de données : Il existe plusieurs types de bases de données, chacun conçu pour répondre à des besoins spécifiques en matière de stockage et de récupération de données. Les types de bases de données les plus courants comprennent : a- Bases de données relationnelles (SGBDR - Système de Gestion de Base de Données Relationnelle) : - Les bases de données relationnelles utilisent des tables pour stocker des données, où chaque table est constituée de lignes (enregistrements) et de colonnes (attributs). - Elles sont basées sur le modèle relationnel, et SQL (Structured Query Language) est souvent utilisé pour les interroger. - Exemples de SGBDR courants : MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server. b- Bases de données NoSQL (Not Only SQL) : - Les bases de données NoSQL sont conçues pour gérer des données non structurées ou semi-structurées et offrir une grande évolutivité. - Elles sont adaptées aux applications web, à l'Internet des objets (IoT), à la gestion de données JSON, XML, etc. - Types de bases de données NoSQL : Document stores (ex. MongoDB), Key-Value stores (ex. Redis), Column-family stores (ex. Apache Cassandra),Graph databases (ex. Neo4j). c- Bases de données en mémoire (In-Memory Databases) : - Ces bases de données stockent toutes les données en mémoire vive (RAM) plutôt que sur des disques, ce qui les rend très rapides pour les opérations de lecture/écriture. 8 - Elles sont utilisées pour des applications nécessitant une latence minimale, comme les applications financières et les systèmes de gestion de caches. - Exemples : Redis, Memcached. d- Bases de données de graphes : - Ces bases de données sont optimisées pour stocker et interroger des données sous forme de graphes, ce qui les rend adaptées à la gestion de relations complexes entre les entités. - Elles sont utilisées pour des applications telles que les réseaux sociaux, la recommandation de contenu et la détection de fraudes. - Exemples : Neo4j, Amazon Neptune. e- Bases de données en temps réel (Real-time Databases) : - Ces bases de données sont conçues pour gérer en temps réel des données qui changent fréquemment. - Elles sont utilisées dans les applications nécessitant des mises à jour en temps réel, telles que les systèmes de suivi des stocks, de suivi de flottes, etc. - Exemples : Firebase Realtime Database, Apache Kafka. f- Bases de données spatiales (Spatial Databases) : - Ces bases de données sont conçues pour stocker des données géospatiales, telles que des cartes, des informations de localisation et des données de géolocalisation. - Elles sont utilisées dans la cartographie, la navigation, la planification urbaine, etc. - Exemples : PostGIS, Esri ArcGIS. g- Bases de données distribuées : - Les bases de données distribuées répartissent les données sur plusieurs 9 serveurs ou nœuds pour une grande évolutivité et une meilleure tolérance aux pannes. - Elles sont utilisées pour des applications nécessitant des volumes de données massifs et une haute disponibilité. - Exemples : Apache Cassandra, Amazon DynamoDB. Chaque type de base de données a ses propres avantages et inconvénients, et le choix dépend des besoins spécifiques de l'application. Il est important de sélectionner le type de base de données le plus adapté en fonction de la nature des données à stocker et de l'utilisation prévue. 10 Chapitre 2: Modélisation de Bases de Données I- L’architecture ANSI/SPARC : a- Le niveau externe : Le concept de vue permet d'obtenir l'indépendance logique La modification du schéma logique n’entraîne pas la modification des applications (une modification des vues est cependant nécessaire) Chaque vue correspond à la perception d’une partie des données, mais aussi des données qui peuvent être synthétisées à partir des informations représentées dans la BD (par ex. statistiques). b- Le niveau interne : il correspond aux structures de stockage et aux moyens d’accés (index) . c- Le niveau conceptuel : il contient la description des données et des contraintes d’intégrité (Dictionnaire de Données) le schéma logique découle d’une activité de Modélisation. 11 Conception Conceptuelle : La phase initiale du processus de modélisation de données est la conception conceptuelle, où l'objectif principal est de définir les concepts, les entités, les relations et les attributs pertinents pour le système ou le domaine en question. Cette étape se concentre sur la création d'un modèle abstrait, généralement présenté sous forme de diagrammes, de schémas ou de notations spécifiques, tels que le modèle entité-association, afin de représenter de manière conceptuelle les éléments fondamentaux du système ou de la base de données. La conception conceptuelle permet de saisir les besoins, les exigences et la structure globale du système, en mettant de côté les aspects techniques de la mise en œuvre. Elle fournit une vue d'ensemble qui servira de fondement pour la création du modèle logique, lequel, à son tour, conduira à la mise en œuvre pratique de la base de données ou du système d'information. En résumé, la conception conceptuelle est une étape cruciale de la modélisation de bases de données, visant à créer un modèle conceptuel, également connu sous le nom de modèle entité-association (modèle E-R), qui capture la structure globale de la base de données sans se préoccuper des détails de mise en œuvre. Cette étape permet de définir les entités, les relations et les attributs essentiels nécessaires pour représenter de manière adéquate les données du domaine spécifique que la base de données gérera. Voici quelques éléments importants de la conception conceptuelle : 12 II- Le modèle Entité-Association : EA en français, ER en anglais (pour Entity Relationship): a- Le concept d’entité : En matière de modélisation de données et de conception de bases de données, une entité représente un objet, une chose ou un concept du monde réel qui peut être identifié et distingué. Les entités sont des éléments fondamentaux dans la conception conceptuelle et la modélisation de bases de données, et elles jouent un rôle essentiel pour organiser et stocker des informations sur ces objets du monde réel. Les entités sont des abstractions qui permettent de représenter des objets ou des concepts réels, tels que des personnes, des produits, des factures, des commandes, etc. Elles sont généralement représentées par des noms descriptifs, comme "Client," "Produit," ou "Employé." • Les entités peuvent être regroupées en types d’entités Un type d’entités définit un ensemble particulier d’entités. • Chaque entité appartient à un type d’entités 13 • Les entités forment des occurrences de leurs types Par exemple, on peut considérer que tous les projets particuliers sont des instances du type d’entité générique PROJET. b- Les propriétés: Données élémentaires relatives à une entité Par exemple, un numéro d’employé, une date de début de projet • On ne considère que les propriétés qui intéressent un contexte particulier (pertinentes); • Les propriétés d’une entité sont également appelées Des attributs, ou des caractéristiques de cette entité . c- Attributs : Les attributs, dans le contexte de la modélisation de base de données, sont des caractéristiques ou des propriétés spécifiques qui décrivent une entité. Ils représentent les informations ou les données que l'on souhaite stocker au sujet de chaque instance de cette entité. Les attributs sont fondamentaux pour définir les détails et les caractéristiques des entités et des relations dans une base de données. Voici quelques points importants à retenir sur les attributs : Types d'attributs : Les attributs peuvent avoir différents types de données, tels que des nombres, des chaînes de caractères, des dates, des booléens, etc. Le choix du type de données dépend de la nature de l'information que l'attribut représente. Exemples d'attributs : Dans le contexte d'une base de données pour une entreprise, des exemples d'attributs pour l'entité "Employé" pourraient inclure le nom, le prénom, le numéro d'employé, la date d'embauche, le salaire, le département, etc. Attributs composites : Parfois, un attribut peut être composé de plusieurs sous-attributs. Par exemple, l'adresse d'un client peut être divisée en attributs tels que "rue,""ville," "code postal," etc. Attributs dérivés : Certains attributs peuvent être calculés à partir d'autres attributs de la base de données. Par exemple, l'âge d'une personne peut être dérivé à partir de sa date de naissance. Attributs clés : Dans le contexte des clés primaires, un attribut clé est un attribut qui est utilisé pour identifier de manière unique chaque 14 enregistrement d'une entité. Par exemple, dans une table "Clients," l'attribut "ID client" peut être la clé primaire. Attributs optionnels ou obligatoires : Certains attributs peuvent être obligatoires (non nuls), ce qui signifie qu'ils doivent avoir une valeur pour chaque enregistrement, tandis que d'autres peuvent être optionnels (nuls), ce qui signifie qu'ils peuvent être laissés vides. Attributs multi-valués : Certains attributs peuvent avoir plusieurs valeurs pour une même entité. Par exemple, un client peut avoir plusieurs numéros de téléphone. Les attributs jouent un rôle essentiel dans la définition de la structure des entités et dans la capture des données pertinentes pour une base de données. Une conception soignée des attributs est cruciale pour garantir que la base de données est capable de stocker, récupérer et gérer les informations de manière efficace et précise. d- Clés primaires : Une clé primaire (PK - Primary Key en anglais) est un attribut ou un ensemble d'attributs dans une base de données qui permet d'identifier de manière unique chaque enregistrement (ligne) dans une table. Les clés primaires sont essentielles pour garantir l'intégrité des données et permettre des opérations telles que la recherche et la mise à jour d'enregistrements spécifiques. La définition et la gestion appropriée des clés primaires sont essentielles pour la conception d'une base de données bien structurée, car elles garantissent l'intégrité des données et facilitent les opérations de recherche et de gestion des données. EMLOYE Numéro Nom Prénom … Zone– Base de données Voici quelques points clés sur les clés primaires : 15 - Unicité : Chaque valeur de la clé primaire doit être unique au sein de la table. Cela signifie qu'aucun enregistrement dans la table ne peut avoir la même valeur pour la clé primaire. - Non-nullité : Les valeurs de la clé primaire ne peuvent pas être nulles (c'est-à-dire, elles doivent contenir une valeur). - Stabilité : Les valeurs de la clé primaire ne doivent pas changer fréquemment. Elles servent à identifier de manière permanente chaque enregistrement. - Usage fréquent : Les clés primaires sont souvent utilisées pour établir des relations entre les tables (clés étrangères) et pour rechercher rapidement des enregistrements. Par exemple, le numéro d’employé sera clé primaire de l’entité EMPLOYE. e- L’association : Les relations dans le contexte de la conception conceptuelle d'une base de données sont des associations ou des liens entre les entités. Elles décrivent comment les différentes entités interagissent les unes avec les autres. Les relations sont un aspect essentiel de la modélisation des données et peuvent varier en termes de cardinalité (le nombre d'entités associées) et de degré (le nombre d'entités impliquées). Par exemple, la date d’emprunt d’un livre. Voici quelques types courants de relations que l'on peut rencontrer dans la conception conceptuelle : Relation Un-à-Un (1:1) : - Dans cette relation, une entité est associée à une et une seule autre entité, et vice versa. Par exemple, un "client" est associé à un "compte". 16 Relation Un-à-Plusieurs (1:N) : - Dans cette relation, une entité est associée à plusieurs instances d'une autre entité, mais l'inverse n'est pas vrai. Par exemple, un "département" peut avoir plusieurs "employés", mais un "employé" ne peut appartenir qu'à un seul "département". Relation Plusieurs-à-Un (N:1) : - C'est l'inverse de la relation 1:N. Plusieurs instances d'une entité sont associées à une seule instance d'une autre entité Par exemple. Relation Plusieurs-à-Plusieurs (N:M) : - Dans cette relation, plusieurs instances d'une entité sont associées à plusieurs instances d'une autre entité Par exemple . 17 Relation Réflexive : - Une relation réflexive se produit lorsqu'une entité est associée à elle-même. Par exemple, dans un organigramme, un "employé" peut être le "supérieur" d'un autre "employé". Relation Attribute : - Parfois, les relations peuvent être représentées sous forme d'attributs d'une entité plutôt que comme des entités distinctes. Par exemple, une entité "Personne" peut avoir un attribut "Conjoint" qui est lié à une autre instance de "Personne". Lors de la conception conceptuelle, il est important de bien définir les relations, de spécifier leur cardinalité (1:1, 1:N, N:1, N:N) et de comprendre comment elles affectent la structure de la base de données. Une conception conceptuelle solide garantit que les relations sont correctement modélisées avant de passer à la création du modèle logique et de la base de données réelle. Diagramme Entité Association 18 Exercice : Consultation médical On vous donne le MCD représentant des visites dans un centre médical. 1- Un patient peut-il effectuer plusieurs consultations ? 2- Un médecin peut-il recevoir plusieurs patients dans la même consultation? 3- Peut-on prescrire plusieurs médicaments dans une même consultation? 4- Deux médecins différents peuvent-ils prescrire le même médicament ? solution : 1- Un patient peut-il effectuer plusieurs consultations ? En effet, la cardinalité 1,n indique qu'il peut en prendre plusieurs. 2- Un médecin peut-il recevoir plusieurs patients dans la même consultation ? Non, les cardinalités 1,1 de part et d'autre de l'entité consultation indique qu'une consultation ne peut avoir qu'un seul et unique patient avec un seul et unique médecin. 3- Peut-on prescrire plusieurs médicaments dans une même consultation ? Oui, les cardinalité 0,n entre la consultation et le médicament précisent qu'à une consultation donnée, on peut prescrire aucun, un ou plusieurs médicaments. 19 4- Deux médecins différents peuvent-ils prescrire le même médicament ? Bien sur, un patient peut prendre plusieurs consultations (cardinalités 0,n) avec des médecins différents (pas de contrainte entre le patient et le médecin qui traduirait un médecin référent !) 20 Chapitre 3 : Conception Logique Une fois que la conception conceptuelle est achevée, la conception logique intervient. Elle consiste à traduire le modèle conceptuel en un modèle de données plus détaillé, en utilisant un modèle de données spécifique (comme le modèle relationnel pour les bases de données relationnelles). À cette étape, les tables, les attributs, les clés primaires, les clés étrangères et d'autres contraintes de données sont définis de manière plus précise. Les décisions prises lors de la conception logique visent à garantir l'intégrité et la performance des données. La conception logique d'une base de données est une étape cruciale dans le développement de bases de données relationnelles. Elle se situe entre la conception conceptuelle et la conception physique. Voici les étapes clés de la conception logique d'une base de données : I- Traduction du modèle conceptuel : À partir du modèle conceptuel de données,qui comprend des entités, des attributs et des relations, vous traduisez ces concepts en un modèle logique plus détaillé. Les entités deviennent des tables, les attributs deviennent des colonnes, et les relations se traduisent en contraintes d'intégrité référentielle. Voici comment cela fonctionne en général : a- Entités deviennent des tables : Les entités du modèle conceptuel sont généralement traduites en tables dans le modèle logique. Chaque table représente une entité et contient des enregistrements qui correspondent à des instances de cette entité. Par exemple, si vous avez une entité "Client" dans le modèle conceptuel, elle deviendra une table "Clients" dans le modèle logique. b- Attributs deviennent des colonnes : Les attributs de chaque entité deviennent des colonnes dans la table correspondante. Chaque colonne représente une caractéristique ou un attribut de l'entité. Par exemple, si l'entité "Client" a des attributs tels que "Nom", "Prénom" et "Adresse",ces attributs deviendront des colonnes dans la table "Clients". 21 c- Relations deviennent des contraintes de clé étrangère : Les relations entre les entités sont traduites en contraintes de clé étrangère (foreign keys) dans le modèle logique. Une clé étrangère est une colonne qui établit un lien entre les enregistrements de deux tables. Par exemple, si l'entité "Commande" est liée à l'entité "Client" dans le modèle conceptuel, cette relation sera traduite en une clé étrangère dans la table "Commandes" qui fait référence à la table "Clients". d- Cardinalités : Les cardinalités (1:1, 1:N, N:M) entre les entités dans le modèle conceptuel sont également prises en compte lors de la traduction. Elles indiquent combien d'enregistrements d'une entité sont associés à combien d'enregistrements de l'autre entité, et cela influence la création des contraintes de clé étrangère. II- Normalisation de bases de données: La normalisation est un processus essentiel dans la conception logique d'une base de données relationnelle. Elle vise à structurer la base de données de manière à réduire les anomalies, à améliorer l'intégrité des données et à optimiser l'efficacité du stockage et des opérations de requête. La normalisation consiste généralement à organiser les données en plusieurs tables interconnectées tout en respectant certaines règles, appelées formes normales. Les formes normales les plus couramment utilisées sont la première forme normale (1NF), la deuxième forme normale (2NF) et la troisième forme normale (3NF). a- Définition des contraintes : Vous définissez les contraintes d'intégrité qui garantissent la cohérence et la qualité des données. Cela inclut les clés primaires, les clés étrangères, les contraintes de vérification, les contraintes de domaine, etc. b- Indexation : C’est un concept clé dans la conception logique d'une base de données. Elle fait référence à la création et à l'utilisation d'index pour améliorer la performance des opérations de recherche, de tri et de récupération de données dans une base de données. Les index sont des structures de données auxiliaires qui fournissent un moyen efficace d'accéder rapidement à des informations 22 spécifiques dans une table, en évitant de parcourir l'intégralité de la table à chaque recherche. Voici comment fonctionne l'indexation dans une base de données : 1. Création d'index : Lors de la conception logique, vous identifiez les colonnes qui seront fréquemment utilisées dans des opérations de recherche, de tri ou de filtrage. Vous créez ensuite des index sur ces colonnes. 2. Structure d'index : Un index contient une liste ordonnée des valeurs de la colonne indexée, associées à des pointeurs vers les lignes correspondantes dans la table. Cette structure permet d'accélérer la recherche en réduisant le nombre de lignes à parcourir. 3. Utilisation des index : Lorsque vous exécutez une requête SQL qui implique une colonne indexée, le système de gestion de base de données (SGBD) utilise l'index pour identifier rapidement les lignes qui correspondent aux critères de recherche. Cela permet d'accélérer considérablement les opérations de recherche. 4. Types d'index : Il existe différents types d'index, notamment les index uniques (qui garantissent que les valeurs de la colonne indexée sont uniques), les index non uniques (qui permettent des doublons), les index composés (qui couvrent plusieurs colonnes) et d'autres types d'index spécifiques à certains SGBD. 5. Maintenance des index : Les index doivent être mis à jour à chaque insertion, mise à jour ou suppression de données dans la table associée. Cette maintenance peut avoir un impact sur les performances, en particulier lorsqu'il y a un grand nombre d'index. L'indexation est un aspect crucial de la conception logique d'une base de données, car elle peut avoir un impact significatif sur les performances et l'efficacité des opérations de requête dans la base de données. Elle doit être soigneusement planifiée et ajustée en fonction des besoins spécifiques de 23 l'application. III- Types de données : Vous choisissez les types de données appropriés pour chaque colonne en fonction des besoins, en prenant en compte la taille des données et les contraintes de précision. Le choix des types de données dépend des besoins de l'application, de la nature des données à stocker, de la taille de la base de données, des performances attendues et d'autres considérations. Il est important de choisir judicieusement les types de données pour minimiser l'utilisation de la mémoire et garantir l'intégrité et la précision des données stockées dans la base de données. Schéma de données : Le schéma de données est un élément clé de la conception logique d'une base de données. Il représente la structure de la base de données sous forme de diagrammes, de modèles ou de descriptions textuelles. Le schéma de données décrit comment les tables, les colonnes, les clés primaires, les clés étrangères, les contraintes et les index sont organisés dans la base de données. Vous concevez le schéma de la base de données, en indiquant comment les tables seront organisées, les relations entre les tables, les contraintes et les index. IV- Optimisation des requêtes : Vous prenez en compte les types de requêtes qui seront exécutées sur la base de données et assurez-vous que la conception logique prend en charge une exécution rapide et efficace de ces requêtes. Voici quelques stratégies et bonnes pratiques pour optimiser les requêtes dans une base de données : Conception appropriée de la base de données Indexation judicieuse Écriture de requêtes optimisées Optimisation des jointures 24 Limitation des colonnes récupérées Optimisation des sous-requêtes Surveillance des performances Mise en cache des résultats Test et ajustement V- Normalisation de la conception : Vous pouvez réexaminer la normalisation de la conception pour vous assurer qu'elle est à la fois efficiente et flexible pour répondre aux besoins de l'application. a- Documentation : La documentation de la conception logique est importante pour que les développeurs, les administrateurs de bases de données et d'autres parties prenantes comprennent comment la base de données est structurée et comment elle fonctionne. Elle permet de capturer, de communiquer et de gérer les informations importantes sur la structure de la base de données, les règles de gestion, les contraintes, les procédures et d'autres éléments clés. Voici comment la documentation est importante dans ce contexte : **Compréhension et Communication** : La documentation permet aux membres de l'équipe de développement, aux administrateurs de bases de données, aux analystes et aux autres parties prenantes de comprendre comment la base de données est conçue, quelles sont les entités, les relations, les contraintes, les index, etc. Elle sert de point de référence pour une communication claire et précise. **Maintenance et Évolution** : La documentation facilite la maintenance et l'évolution de la base de données au fil du temps. Lorsque des changements sont nécessaires, la documentation existante aide à identifier l'impact de ces changements sur la base de données et à planifier les modifications nécessaires. **Formation** : La documentation peut servir de ressource précieuse pour la formation des nouveaux membres de l'équipe qui travaillent sur la base de données. Elle peut 25 également aider à former les utilisateurs finaux sur la structure de la base de données et sur la manière d'interagir avec elle. **Conformité et Gouvernance** : La documentation joue un rôle important dans le respect des réglementations et des normes de gouvernance des données. Elle permet de démontrer que la base de données est conçue et gérée de manière conforme. **Gestion des Contraintes** : La documentation capture les contraintes et les règles de gestion de la base de données, ce qui est essentiel pour garantir l'intégrité des données et la cohérence des opérations. Elle permet de s'assurer que les contraintes sont correctement appliquées. **Références Rapides** : Les documents de conception facilitent la recherche rapide d'informations sur la base de données. Les descriptions textuelles, les diagrammes de modèles de données, les diagrammes entité-association et d'autres formes de documentation sont des aides visuelles et textuelles pour comprendre la structure et le fonctionnement de la base de données. **Planification de la Maintenance** : La documentation aide à planifier la maintenance préventive de la base de données, à suivre les tâches de sauvegarde, de récupération, de gestion de la capacité, etc. La forme de la documentation peut varier en fonction des besoins et des préférences de l'organisation. Elle peut inclure des documents texte, des diagrammes, des schémas, des descriptions de colonnes, des descriptions de contraintes, des manuels d'utilisation, etc. Il est important de tenir la documentation à jour au fur et à mesure que la base de données évolue et que de nouvelles informations deviennent disponibles. Une documentation précise et complète est un atout précieux pour la gestion efficace de la base de données. Une fois la conception logique achevée, elle sert de base pour la conception physique de la base de données, où vous définirez les détails techniques de mise en œuvre, tels que le choix du SGBD (Système de Gestion de Base de Données), la configuration matérielle, et le stockage physique des données. 26 Chapitre 4 : Le Modèle Relationnel I- Introduction : Le modèle relationnel a été défini par E.F Codd dans les années 70. Ainsi, de nombreux chercheurs ont contribué à son développement. 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). Le modèle relationnel présente également de nombreux avantages dus au fait qu’il soit basé sur la théorie des ensembles : Langage de manipulation des 27 données ensemblistes grâce à l’algèbre relationnelle et grâce à des langages assertionnels qui permettent de spécifier ce que l’on souhaite obtenir sans dire comment l’obtenir. Le SGBD est responsable de la politique d’exécution des requêtes. II- Concepts de base : a- Le Domaine : Ensemble de valeurs atomiques d'un certain type sémantique Ex. : NOM_VILLE = { Constantine, Annaba, Alger } Des domaines sont les ensembles de valeurs possibles dans lesquels sont puisées les données Deux ensembles peuvent avoir les mêmes valeurs bien que sémantiquement distincts Ex. : NUM_ELV = { 1, 2, … , 2000 } NUM_ANNEE = { 1, 2, … , 2000 } b- Relation : Sous ensemble du produit cartésien de plusieurs domaines 𝑅 ⊂ 𝐷1 × 𝐷2 × … × 𝐷𝑛 𝐷1,𝐷2 , … ,𝐷𝑛 sont les domaines de 𝑅 n est le degré de 𝑅 Exemples: -Les domaines : NOM_ELV = {Anas, Ali} PREN_ELV = {Mohamed, Aziz } DATE_NAISS = {Date entre 1/1/1990 et 31/12/2020} NOM_SPORT = {judo, tennis, foot } - La relation ELEVE 28 ELEVE ⊂ NOM_ELV ×PREN_ELV ×DATE_NAISS NOM_ELV ×PREN_ELV ×DATE_NAISS = { (Anas, Mohamed, 1/1/1990), (Anas, Mohamed, 2/1/1999),…} Exemples2: - La relation ELEVE ELEVE ⊂ NOM_ELV ×PREN_ELV ×DATE_NAISS ELEVE = {(Anas, Salim, 1/1/1992), (Jamal, Imane, 2/2/1994) } -La relation INSCRIPT INSCRIPT ⊂ NOM_ELV ×NOM_SPORT INSCRIPT = { (Anas, judo), (Anas, foot), (Ali, judo) } c- LES N-UPLETS : un élément d'une relation est un n-uplet de valeurs (tuple en anglais) • Un nuplet représente un fait Exemple: « Jamal est un élève né le 1 janvier 1992 » « Jamal est inscrit au judo » DEFINITION PRÉDICATIVE D’UNE RELATION d- Attribut : Chaque composante d'une relation est un attribut • Le nom donné à un attribut est porteur de sens • Il est en général différent du nom de domaine • Plusieurs attributs peuvent avoir le même domaine Exemple : La relation TRAJET : TRAJET ⊂ NOM_VILLE × NOM_VILLE Dans laquelle la première composante représente la ville de départ VD, la deuxième composante la ville d’arrivée VA d’un trajet. e- LE SCHÉMA D’UNE RELATION : Le schéma d'une relation est défini par : - le nom de la relation - la liste de ses attributs on note : R (A1:D1, A2:D2, ... , An:Dn) 29 Exemple: ELEVE (NOM, PRENOM, NAISS) INSCRIPT (NOM_ELV, SPORT) TRAJET (VD, VA) f- LE SCHÉMA D’UNE BDR : Le schéma d'une base de données est défini par : - l'ensemble des schémas des relations qui la composent Notez la différence entre : • le schéma de la BDR qui dit comment les données sont organisées dans la base • l'ensemble des n-uplets de chaque relation, qui représentent les données stockées dans la base • Conception de Schéma Relationnel - Problème : Comment choisir un schéma approprié ? LA REPRÉSENTATION 1 RELATION = 1 TABLE 1 ÉLÉMENT ou n-uplet = 1LIGNE 30 31 III- LES DÉPENDANCES FONCTIONNELLES : a- Dépendance fonctionnelle : Soit R(A1, A2, ...., An) un schéma de relation Soit X et Y des sous ensembles de {A1,A2,...An} On dit que Y dépend fonctionnellement de X (XY) si à chaque valeur de X correspond une valeur unique de Y on écrit : X → Y et on dit que : X détermine Y Ex.: PRODUIT (no_prod, nom, prixUHT) no_prod → (nom, prixUHT) NOTE (no_contrôle, no_élève, note) (no_contrôle, no_élève) → note une dépendance fonctionnelle est une propriété sémantique, elle correspond à une contrainte supposée toujours vrai du monde réel. • D.F. élémentaire D.F. X A mais A est un attribut unique non inclus dans X et il n’existe pas de X’ inclus dans X tel que X’ A 32 b- La clé d’une relation : attribut (ou groupe minimum d'attributs) qui détermine tous les autres Ex.: PRODUIT (no_prod, nom, prixUHT) no_prod → (nom, prixUHT) no_prod est une clé • Une clé détermine un n-uplet de façon unique • Pour trouver la clé d'une relation, il faut examiner attentivement les hypothèses sur le monde réel • Une relation peut posséder plusieurs clés, on les appelle clés candidates Ex.: dans la relation PRODUIT, nom est une clé candidate (à condition qu'il n'y ait jamais 2 produits de même nom) c- Clé primaire : choix d'une clé parmi les clés candidates . Clé étrangère ou clé secondaire attribut (ou groupe d'attributs) qui fait référence à la clé primaire d'une autre relation Ex.: CATEG (no_cat, design, tva) PRODUIT(no_prod, nom, marque, #no_cat, prixUHT) no_cat dans PRODUIT est une clé étrangère CLÉ ÉTRANGÈRE = CLÉ PRIMAIRE dans une autre relation IV- Les règles d'intégrité : Les règles d'intégrité sont les assertions qui doivent être vérifiées par les données contenues dans une base Le modèle relationnel impose les contraintes structurelles suivantes : -INTÉGRITÉ DE DOMAINE 33 -INTÉGRITÉ DE CLÉ -INTÉGRITÉ RÉFÉRENCIELLE La gestion automatique des contraintes d’intégrité est l’un des outils les plus importants d’une base de données. Elle justifie à elle seule l’usage d’un SGBD. a- INTÉGRITÉ DE DOMAINE : Les valeurs d'une colonne de relation doivent appartenir au domaine correspondant • contrôle des valeurs des attributs • contrôle entre valeurs des attributs b- INTÉGRITÉ DE CLÉ : Les valeurs de clés primaires doivent être : - uniques - non NULL • Unicité de clé • Unicité des n-uplets • Valeur NULL valeur conventionnelle pour représenter une information inconnue • dans toute extension possible d'une relation, il ne peut exister 2 n-uplets ayant même valeur pour les attributs clés sinon 2 clés identiques détermineraient 2 lignes identiques (d'après la définition d’une clé), ce qui est absurde. c- INTÉGRITÉ RÉFÉRENTIELLE : Les valeurs de clés étrangères sont 'NULL' ou sont des valeurs de la clé primaire auxquelles elles font référence • Relations dépendantes • LES DÉPENDANCES : 34 Liaisons de un à plusieurs exprimées par des attributs particuliers: clés étrangères ou clés secondaires. I- Les Formes Normales : a- La théorie de la normalisation : • elle met en évidence les relations «indésirables » • elle définit les critères des relations "désirables" appelées formes normales • Propriétés indésirables des relations : - Redondances - Valeurs NULL • elle définit le processus de normalisation permettant de décomposer une relation non normalisée en un ensemble équivalent de relations normalisées . b- La décomposition : Objectif: - décomposer les relations du schéma relationnel sans perte d’informations - obtenir des relations canoniques ou de base du monde réel - aboutir au schéma relationnel normalisé • Le schéma de départ est le schéma universel de la base • Par raffinement successifs ont obtient des sous relations sans perte d’informations et qui ne seront pas affectées lors des mises à jour (non redondance) c- Les formes normales : 3 FN, les critères sont de plus en plus restrictifs FNj ⇒ FNi ( j > i ) • Notion intuitive de FN une « bonne relation » peut être considérée comme une fonction de la clé primaire vers les attributs restants 35 1ère Forme Normale 1FN Une relation est en 1FN si tout attribut est atomique (non décomposable) Contre-exemple ELEVE (no_elv, nom, prenom, liste_notes) Un attribut ne peut pas être un ensemble de valeurs Décomposition ELEVE (no_elv, nom, prenom) NOTE (no_elv, no_matiere, note) 2ème Forme Normale 2FN Une relation est en 2FN si - elle est en 1FN - si tout attribut n’appartenant pas à la clé ne dépend pas d’une partie de la clé • C’est la phase d’identification des clés • Cette étape évite certaines redondances • Tout attribut doit dépendre fonctionnellement de la totalité de la clé Contre-exemple une relation en 1FN qui n'est pas en 2FN COMMANDE (date, no_cli, no_pro, qte, prixUHT) elle n'est pas en 2FN car la clé = (date, no_cli, no_pro) et le prixUHT ne dépend que de no_pro Décomposition COMMANDE (date, no_cli, no_pro, qte) PRODUIT (no_pro, prixUHT) 3ème Forme Normale 3FN Une relation est en 3FN si 36 - elle est en 2FN - si tout attribut n’appartenant pas à la clé ne dépend pas d’un attribut non clé Ceci correspond à la non transitivité des D.F. ce qui évite les redondances. En 3FN une relation préserve les D.F. et est sans perte. Contre-exemple une relation en 2FN qui n'est pas en 3FN VOITURE (matricule, marque, modèle, puissance) - on vérifie qu'elle est en 2FN ; - elle n'est pas en 3FN car la clé = matricule, et la puissance dépend de (marque, modèle) Décomposition VOITURE (matricule, marque, modèle) MODELE (marque, modèle, puissance) 37