Les Bases de données relationnelles de la théorie à la pratique Mohammed BENJELLOUN Service d’Informatique Faculté Polytechnique de Mons [email protected] 2006-2007 M. BENJELLOUN 2006-07 Bases de données relationnelles - 1 Objectifs - Comprendre les concepts et techniques sur lesquels reposent les fonctions principales d'un système de gestion de bases de données. - Pouvoir représenter dans une base de données le contenu d'information d'un domaine d'application. - Pouvoir utiliser ces fonctions pour mettre en oeuvre une application simple reposant sur une base de données (Analyse, conception, structuration des données, mise en oeuvre d’une base de donnée relationnelles avec intéraction... ). Contenu L'approche base de données Conception d'une base de données Bases de données relationnelles Pratique d'un SGBD M. BENJELLOUN 2006-07 Bases de données relationnelles - 2 Etapes et Démarche de modélisation 1. Analyse de la situation existante et des besoins 2. Création d'une série de modèles qui permettent de représenter tous les aspects importants 3. A partir des modèles, implémentation d'une base de données M. BENJELLOUN 2006-07 Bases de données relationnelles - 3 Un modèle de base de données est un ensemble d’éléments qui décrit les données et permet d’exprimer les propriétés et les liens entre ces données. Le modèle est souvent représenté de manière graphique. Il se compose d’une description des données et de leurs relations ainsi que d’un ensemble de contraintes concernant la valeur que peuvent prendre les données ou concernant les liens qui les relient. Un schéma de base de données est une description de la structure des données à gérer via l’utilisation d’un langage déterminé. M. BENJELLOUN 2006-07 Bases de données relationnelles - 4 Définitions Information : Une information est un élément qui permet de compléter notre connaissance sur un objet, un événement, une personne ... . Exemple: Le nom d'une personne est une information concernant cette personne. Système d'information : Un système d'information est constitué par l'ensemble des informations relatives à un domaine bien défini. Exemple: Librairie : stock, commandes, ventes … Un S. I. existe indépendamment des techniques informatiques. Il contient les données et les traitements nécessaires pour assimiler et stocker les informations entrantes et produire les informations sortantes. M. BENJELLOUN 2006-07 Bases de données relationnelles - 5 Définitions Base de données : Une base de données (BD) est un ensemble bien structuré de données relatives à un sujet global. Ces données peuvent être de nature et d'origine différentes. Les données sont des faits, connus et qui ont un sens pour l’utilisateur. Ces données doivent avoir une relation entre elles. “collection de données enregistrées ensemble, sans redondance pénible ou inutile, pour servir plusieurs applications, on y enregistre les données de façon à ce qu’elles soient indépendantes des programmes qui les utilisent, on utilise une approche commune et contrôlée pour ajouter, modifier, retrouver des données”. James Martin Collection de données persistantes utilisées par des systèmes d’application de certaines entreprises … M. BENJELLOUN 2006-07 Bases de données relationnelles - 6 Définitions Une base de données correctement construite permet de partager les données entre plusieurs utilisateurs, de restreindre l’accès ou la modification des données, d’assurer l’intégrité des données et d’équilibrer les conflits des besoins tout en réduisant les redondances et en évitant les incohérences Exemples: M. BENJELLOUN 2006-07 FPMs ⇨ BD ⇨ sur tous les étudiants. Une banque ⇨ BD ⇨ sur tous les clients. Une société d'assurances ⇨ BD ⇨ contrats d'assurances et sinistres. Bases de données relationnelles - 7 Qu'attendre Pourqoui ---- une base de données ? Lorsqu’on a besoin d’organiser les données en un ensemble structuré et : • • • • • • • • • Contrôle centralisé des données Redondance réduite Incohérence évitée Données partagées Normes imposées Restrictions de sécurité possibles Intégrité assurée (36/15/2005 est impensable) Conflits des besoins équilibrés Et stocker, consulter, modifier des informations M. BENJELLOUN 2006-07 Bases de données relationnelles - 8 Système de gestion de bases de données : Un système de gestion de bases de données (SGBD) est un programme qui permet la représentation informatique des données, qui nous permet de créer, de modifier et d'exploiter des bases de données. Ce système constitue donc notre interface pour accéder aux données. SGBD BD logiciel gérant une BD. Il permet à un utilisateur de communiquer (requêtes) avec une base de données pour : - décrire et organiser les données sur les mémoires, - rechercher, sélectionner et modifier les données. M. BENJELLOUN 2006-07 Bases de données relationnelles - 9 Qu'attendre ---- un SGBD? Pourqoui Un SGBD assure - la description des données, - leur recherche et mise à jour, - la sûreté : vérifier les droits d’accès des utilisateurs ; limiter les accès non autorisés ; crypter les informations sensibles - la sécurité : sauvegarde et restauration des données ; limiter les erreurs de saisie, de manipulation - l’intégrité : définir des règles qui maintiennent l’intégrité de la base de données (contraintes d’intégrité) - la concurrence d’accès : détecter et traiter les cas où il y a conflit d’accès entre plusieurs utilisateurs et les traiter correctement. M. BENJELLOUN 2006-07 Bases de données relationnelles - 10 +ieurs MODELES de BASES de DONNEES •a) le modèle hiérarchique: les données sont classées hiérarchiquement, selon une arborescence descendante. Ce modèle utilise des pointeurs entre les différents enregistrements. Le plus ancien, peu souple. •b) le modèle réseau: Comme le modèle hiérarchique ce modèle utilise des pointeurs vers des enregistrements. Moyennement souple, complexe pour le développement, performance moyenne. •c) le modèle relationnel (SGBDR, Système de gestion de bases de données relationnelles): les données sont enregistrées dans des tables. La manipulation de ces données se fait selon la théorie mathématique des relations , théorie ensembliste. (du mathématicien CODD). Fort souple, aisé à développer. •d) le modèle objet (SGBDO, Système de gestion de bases de données objet): les données sont stockées sous forme de classes. •a) M. BENJELLOUN 2006-07 •b) fort souple, aisé à développer •c) Bases de données relationnelles - 11 •d) Les caractéristiques L'architecture à trois niveaux définie par le standard ANSI/SPARC permet d'avoir une indépendance entre les données et les traitements. D'une manière générale un SGBD doit avoir les caractéristiques suivantes: • 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 • Manipulabilité: des personnes ne connaissant pas la base de données doivent être capables de décrire leur requêtes sans faire référence à des éléments techniques de la base de données • Rapidité des accès: le système doit pouvoir fournir les réponses aux requêtes le plus rapidement possible, cela implique des algorithmes de recherche rapides • Administration centralisée: le SGBD doit permettre à l'administrateur de pouvoir manipuler les données, insérer des éléments, vérifier son intègrité de façon centralisée • 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 • Vérification de l'intégrité: les données doivent être cohérentes entre elles, de plus lorsque des éléments font références à d'autres, ces derniers doivent être présents • Partageabilité des données: le SGBD doit permettre l'accès simultané à la base de données par plusieurs utilisateurs • Sécurité des données: Le SGBD doit présenter des mécanismes permettant de gérer les droits d'accès aux données selon les utilisateurs M. BENJELLOUN 2006-07 Bases de données relationnelles - 12 Historique M. BENJELLOUN 2006-07 Bases de données relationnelles - 13 Modèle relationnel Les concepts mis en oeuvre dans le modèle relationnel sont fondés sur une théorie mathématique directement issue de l'algèbre relationnelle, de la théorie des ensembles et de la logique formelle. Cette technologie a vu le jour dans les années 70 avec les travaux de Codd * Objets simples : table, ligne, colonne * Basé sur des objets mathématiques bien connus : - Relation, n-tuple, ensemble, etc. * Opérations d'interrogation - Sélection, projection, jointure Actuellement le modèle le plus répandu (de loin) 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é. M. BENJELLOUN 2006-07 Bases de données relationnelles - 14 Les objectifs du modèle relationnel : · proposer des schémas de données faciles à utiliser, · fournir une approche méthodologique dans la construction des schémas. · améliorer l'indépendance logique et physique, · mettre à la disposition des utilisateurs des langages de haut niveau pouvant éventuellement être utilisés par des non informaticiens, · optimiser les accès à la base de données, · améliorer l'intégrité et la confidentialité, •Manipulations relationnelles, en général exprimées en SQL, transforment des tables en une table Les données sont perçues par l’utilisateur comme des tables M. BENJELLOUN 2006-07 Algèbre Relationnelle JOIN: relie 2 tables grâce aux valeurs communes de 2 colonnes communes Bases de données relationnelles - 15 Opérations relationnelles • Sélection : – Projection – Restriction – Jointure – Division – Agrégation • Opération suppl. • Mise à jour • Création d ’une vue M. BENJELLOUN 2006-07 Bases de données relationnelles - 16 Liste non exhaustive de SGBD relationnels : Adabas de Software AG Access de Microsoft DB2 : IBM Informix : Unix Ingres : Vax, IBM, Sun, HP, Dos MS-sql MySQL (logiciel libre) Oracle : Oracle (multi plateforme) Progress : Unix, Dos, VMS, OS/2 PostgreSQL (logiciel libre) SqlServer de Microsoft Sybase de Sybase M. BENJELLOUN 2006-07 Bases de données relationnelles - 17 Mise en oeuvre d’un SGBD On distingue trois niveaux d’appréhension définis par la norme ANSI/SPARC (architecture de référence d'un SGBD). A chaque niveau correspond un schéma de représentation : - le niveau interne avec le schéma physique Description du stockage des données au niveau des unités de stockage - le niveau conceptuel avec le schéma conceptuel Description de la structure des données de la base, description de leurs propriétés (relations qui existent entre elles), sans soucis d'implémentation physique ni de la façon de s'en servir. le niveau externe avec les vues (comment l’utilisateur voit les données) Description pour chaque utilisateur de sa perception des données. ES ES ES CS IS M. BENJELLOUN 2006-07 Bases de données relationnelles - 18 ES ES CS IS M. BENJELLOUN 2006-07 ES ESs : Schémas Externes CS : Schéma Conceptuel IS : Schéma Interne L'administrateur aura pour rôle : • la conception du modèle à partir du monde réel à représenter, • le réglage du schéma physique pour certaines optimisations de performances, • le maintien de la base de données physique, • la description des schémas externes à l'usage des utilisateurs finaux. Bases de données relationnelles - 19 Schémas Externes (ESs) Définit une vue de la BD Vues SQL, Vbasic, orientés Web notamment (HTML, XML…) … ES ES ES CS IS • Une BD est en général munie de plusieurs différentes ESs • Mais tous ont le CS comme racine commune M. BENJELLOUN 2006-07 Bases de données relationnelles - 20 Schéma Interne (IS) CS Comment transformer les objets? Comment ils seront stockés? Comment y accèdes? Schéma Conceptuel Merise Merise est une des méthodes de conception et de développement de projets informatiques. Cette méthode date de 1978-1979, et fait suite à une consultation nationale lancée en 1977 par le ministère de l’Industrie français dans le but de choisir des sociétés de conseil en informatique dont la mission était de définir une méthode de conception de systèmes d’information. Une des techniques permettant de concevoir une base de données relationnelle est basée sur cette méthode. En effet, une des caractéristiques principales de la méthode Merise est la séparation des données et des traitements du futur système d’information. M. BENJELLOUN 2006-07 Bases de données relationnelles - 21 Objets relationnels: domaines et relations Terme relationnel formel Equivalent informel • • • • • • • • relation n-uplet cardinalité attribut degré clé primaire clé étrangère domaine relation perçue entre entités (!!table) ligne ou enregistrement nombre de lignes colonne ou champ nombre de colonnes identificateur unique référence = attribut principal ailleurs Ensemble de valeurs légales (ensemble des valeurs d’un attribut) M. BENJELLOUN 2006-07 Bases de données relationnelles - 22 Les composants d'une base de données relationnelle Quatre types d'objets. Tables, Requêtes, Formulaires, Rapports. 1. Les Tables Une table est une collection de données relatives à un domaine bien défini. N° Mat Table : Employés_D isney NOM SALAIRE Code post. 159 Donald 1500 € 7000 132 Obélix 1900 € 5060 1187 Picsou 1134 € 1000 354 ….. …. …. Valeurs de l’attribut M. BENJELLOUN 2006-07 Enregistrement, N_Uplet Un champ de données (Attribut) Bases de données relationnelles - 23 Clé primaire Pour identifier de manière unique chaque enregistrement de la table. La clé primaire, constituée d'un ou de plusieurs champs, nous permet d'identifier de manière unique chaque enregistrement d'une table. Pour définir des liens entre plusieurs tables la clé primaire est indispensable. 2. Les requêtes (angl. Queries) Les requêtes ≡ "questions" qu'on pose au SGBD. Le résultat est toujours un sous-ensemble d'une ou de plusieurs tables. Il existe 4 types de requêtes: 1. Requêtes de sélection. 2. Requêtes d'insertion. 3. Requêtes de modification. 4. Requêtes de suppression. Formuler la requête Select Insert Update Delete Analyser et Exécuter la requête Pour chaque requête nous retrouvons le cycle suivant: Résultat de la requête M. BENJELLOUN 2006-07 Bases de données relationnelles - 24 3. Les formulaires (angl. Forms) Les formulaires pour ajouter, modifier ou supprimer des données dans les tables. Les formulaires offrent certains avantages: facilité d'utilisation, sécurité des donnée 4. Les rapports (angl. Reports) Pas de dialogue interactif avec l'utilisateur. Un rapport se base généralement sur une ou plusieurs tables ou le résultat d'une requête. M. BENJELLOUN 2006-07 Bases de données relationnelles - 25 Niveaux d’abstraction Cahier des charges en accord avec le client (activité et besoins) créer une représentation virtuelle de la réalité. produire quatre modèles de données relatifs à quatre niveaux d’abstraction. Le niveau conceptuel identifie et décrit formellement l’ensemble des informations du domaine géré par le futur système d’information. Ce niveau amène donc le concepteur à construire une représentation formelle de la signification des données. Le niveau organisationnel exprime la répartition organisationnelle des données informatisées, la sécurité des données par rapport aux acteurs des unités organisationnelles et précise quelles sont, parmi les données définies au niveau conceptuel, celles qui seront prises en compte par le futur système informatisé. On ne développera pas cet aspect vu qu’il dépend fortement de l’environnement d’intégration du système d’information. Le niveau logique fournit une description des données prenant en compte les moyens informatiques de mémorisation et l’implémentation du système par un SGBD. C’est également ici que l’on retrouvera l’algèbre relationnelle. Le niveau physique exprime les choix techniques et décrit les données de la base de données dans la syntaxe du système de gestion adopté. M. BENJELLOUN 2006-07 Bases de données relationnelles - 26 Cycle d'abstraction de conception des S.I. La conception du système d'information se fait par étapes, afin d'aboutir à un système d'information fonctionnel reflétant une réalité physique. Il s'agit donc de valider une à une chacune des étapes en prenant en compte les résultats de la phase précédente. D'autre part, les données étant séparées des traitements, il faut vérifier la concordance entre données et traitement afin de vérifier que toutes les données nécessaires aux traitements sont présentes et qu'il n'y a pas de données superflues. Cette succession d'étapes est appelée cycle d'abstraction pour la conception des systèmes d'information: Niveau M. BENJELLOUN 2006-07 Statique (données) Conceptuel MCD Organisationnel ou logique MLD Opérationnel ou physique MPD Dynamique (traitements) MCT MOT (QUI ? QUAND ?) Bases de données relationnelles - 27 MOPT Donc la démarche classique d'un projet en BD comprend les étapes suivantes: 1. Analyse de la situation existante et des besoins 2. Création d'une série de modèles qui permettent de représenter tous les aspects importants 3. A partir des modèles, implémentation d'une base de données Méthodologie pour traduire un système d'information naturel en une base de données Univers de l’application Niveaux d’abstractions Elaboration du Modèle E-R Passage au Modèle Relationnel Implémentation Sur SGBD-R M. BENJELLOUN 2006-07 Niveau Conceptuel Analyse Réel Perçu MCD Schéma Conceptuel Niveau Logique Niveau Physique Bases de données relationnelles - 28 MLD MPD Schéma Logique Application? Choix de l’application / groupe Rapport Univers de l’applicatio n Elaboration du Modèle E-R Def. Dom. C.Chg Niveau Conceptuel Schéma Conceptuel Passage au Modèle Relationnel Niveau Logique Implémentation Sur SGBD-R Niveau Physique Schéma Logique Implémentation Sur SGBD-R M. BENJELLOUN 2006-07 Bases de données relationnelles - 29 Schéma Physique 1er rapport : mars 2006 ème 2 rapport : ….. 3ème rapport : ….. Cahier de charges. Cahier de charges et MCD. Rapport final Votre rapport doit respecter scrupuleusement la table des matières suivante : 1. 2. 3. 4. 5. 6. 7. Cahier de charges de l’application MCD MLD MPD (qlq tables et relations) Implémentation Conclusion Explications du fonctionnement de votre base de données Utilisez : Formulaires, index, requêtes, rapport. Pouvoir faire : Trier, exécuter des requêtes en SQL, utiliser des macros en SQL. Genre de documents à éditer : Liste alphabétique des clients,( étudiants, … ) par ville (secteur …) .. Liste par chiffre d’affaire des clients (moyenne pour les étudiants) … Lors de la conclusion : Les besoins futurs ! Quelles seront les évolutions possibles de votre base de données ? N’oubliez pas de joindre une disquette ou un CD de votre base de données. Indiquez aussi les noms des étudiants qui composent le groupe sur le support informatique et le rapport. M. BENJELLOUN 2006-07 Bases de données relationnelles - 30 Analyse Elaboration du Modèle E-R Niveau Conceptuel Schéma Conceptuel 1. Le niveau conceptuel, se base directement sur l'analyse, c’est une représentation du monde réel par un seul modèle. Il décrit, de façon formelle, l'ensemble des données du système d'information, sans tenir compte de l'implémentation informatique de ces données. Ce niveau représente donc la signification des données, se traduit par un formalisme que nous appelons: Modèle conceptuel des données MCD Permet de définir les informations pertinentes pour l’application et d’envisager leur structure. Doit refléter le plus fidèlement possible la réalité à modéliser dans la BD, à tout niveau : données, relation, contraintes de cohérence de données, .. M. BENJELLOUN 2006-07 Bases de données relationnelles - 31 La construction du schéma conceptuel comporte normalement les étapes suivantes : • Définir les objectifs • Analyser la réalité • Tracer le schéma conceptuel Pour la construction du modèle conceptuel, beaucoup de méthodes ont été mises en place mais aucune ne donne réellement satisfaction. On peut cependant les répartir en deux catégories : modélisation directe : Elle consiste à identifier, à partir d’une description exprimée en langage naturel, les entités et les associations en appliquant les règles suivantes : les noms deviennent des entités les verbes deviennent des associations La partie analytique consiste essentiellement à transformer des phrases décrivant certains aspects de la réalité en entités, relations et cardinalités. M. BENJELLOUN 2006-07 Bases de données relationnelles - 32 modélisation par analyse des dép. fonctlles Identifier toutes les propriétés du S.I. à analyser. Cette étape aboutit au dictionnaire des données épuré qui devra comporter ni synonyme, ni donnée calculée ... Il semble que la bonne approche de construction d’un modèle conceptuel des données soit un compromis entre la méthode directe, qui laisse une large part à l’intuition et la méthode basée sur l’étude des dépendances fonctionnelles. Quelle que soit la technique utilisée, le modèle doit être vérifié, normalisé et enrichi de concepts étendus pour représenter le plus fidèlement possible l’application. M. BENJELLOUN 2006-07 Bases de données relationnelles - 33 Passage au Modèle Relationnel Niveau Logique Schéma Logique 2. Le niveau logique se base sur le modèle conceptuel des données. Ce niveau introduit la notion des tables logiques, et constitue donc le premier pas vers les tables des SGBD. Ce niveau est représenté par le: Modèle logique des données : MLD Implémentation Sur SGBD-R Niveau Physique Schéma Physique 3. Le niveau physique, qui se base sur le modèle logique des données, contient finalement toutes les définitions et détails relatifs à l'utilisation d'un SGBD spécifique (p.ex. Access, dBASE, Oracle, Caché ...). A partir de ce niveau, on peut directement créer la base de données. Ce niveau est représenté par le: Modèle physique des données : MPD M. BENJELLOUN 2006-07 Bases de données relationnelles - 34 Le schéma conceptuel Un des modèles possibles pour le schéma conceptuel est le modèle “entité-association”. Proposé par Peter Chen en 1976, il est notamment utilisé dans la méthodologie Merise. Traduire l’analyse du système réel établie préalablement en entité, en relations, en propriétés et en cardinalités. Une entité permet de modéliser un ensemble d’objets de même nature. Les relations sont des liens sémantiques qui peuvent exister entre plusieurs entités. CLIENT Numéro Nom … Les “cardinalités” représentent le nombre possible d’interactions entre les entités et les “attributs” . M. BENJELLOUN 2006-07 Bases de données relationnelles - 35 1, N Passer 1,1 Commande Numéro Date Quantité Le Modèle Conceptuel des Données (MCD) Analyse ⇨ (MCD) : "Schéma Entité-Relation" ou "Schéma Entité-Association". ENTITE Nom d’entité COMMANDE Relation ou Association Nom de la Relation CONCERNER PRODUIT No Cde Date Cde Quantité Cdée No Prod Désignation Prix Unitaire Propriété d’entité Propriété de la Relation M. BENJELLOUN 2006-07 Bases de données relationnelles - 36 ENTITE Dans l'exemple, l'entité Produit ∑ produits S.I.. et l'entité Commande ∑ commandes S.I. PRODUIT Nom de l’entité Propriété 1 Propriété 2 Propriété 3 Propriété 4 No Prod Désignation Prix Unitaire NOM Identifiant Attributs L'identifiant est une propriété (une ou plusieurs) particulière d'un objet telle qu'il n'existe pas deux occurrences de cet objet pour lesquelles cette propriété pourrait prendre une même valeur. Un identifiant est une colonne dont les valeurs permettent de repérer une seule ligne Le choix d'un identifiant correcte est très important pour la modélisation: Choix ? M. BENJELLOUN 2006-07 Bases de données relationnelles - 37 Choix ? Comme choix pour l'identifiant d'une entité nous distinguons généralement 3 possibilités: 1. Une propriété naturelle Exemple: Le nom d'un pays pour une entité Pays 2. Une propriété artificielle qui est inventée par le créateur du MCD Exemple: Le numéro d'un client pour une entité Client, Produit, Commande, … 3. Une propriété composée d'autres propriétés naturelles Exemple: Le nom et la localité pour une entité Entreprise Le modèle conceptuel des données propose de souligner les identifiants M. BENJELLOUN 2006-07 Bases de données relationnelles - 38 Attributs caractéristiques des entités obligatoires ou facultatives avec un domaine (type) de valeurs CLIENT No Nom Adresse VEHICULE Personnes No_Matric. Marque Modèle Année Cylindrée ID_Personne Nom Prénom Sexe Email Adresse Qu'est ce qu'un bon schéma Entité-Relation (« formes normales ») ? ni perte d'information ni redondance contraintes (d’intégrité) entre les valeurs des attributs le but: indépendance / applications (vues particulières) M. BENJELLOUN 2006-07 Bases de données relationnelles - 39 Associations ou Relations Obtenir Personnes Diplômes Année_d_obtention ID_Personne Nom Prénom Sexe Adresse Téléphone Email Code_diplôme Titre_diplôme Abréviation CLIENT VEHICULE APPARTIENT No Marque Modèle Année Cylindrée M. BENJELLOUN 2006-07 No Nom Adresse Bases de données relationnelles - 40 SIGNE CONTRAT No Type Date La notion de relation Une relation décrit un lien entre deux ou plusieurs entités. Chaque relation possède un nom, qui est généralement constitué par un verbe à l'infinitif. Chaque relation a implicitement un identifiant, qui est composé par les identifiants des entités auxquelles elle est liée. CLIENT MCD Relation binaire Passer Commande Numéro Nom Prénom Adresse Code_postal Localité LAC Numéro Date Quantité RIVIERE Déverser Relation ternaire Décharge Relation réflexive (relation récursive) M. BENJELLOUN 2006-07 EMPLOYE CONJOINT N° Matricule Bases de données relationnelles - 41 Cardinalité Les cardinalités précisent la participation de l'entité concernée à la relation. cardinalité minimale CLIENT Numéro Nom Prénom Adresse Code_postal Localité cardinalité maximale 1, N Passer 1,1 Commande Numéro Date Quantité Entre l'entité CLIENT et la relation Passer, nous avons les cardinalités suivantes: * Cardinalité minimale = 1, ce qui veut dire que chaque client passe au moins une commande. * Cardinalité maximale= N, ce qui veut dire que chaque client peut passer plusieurs (N) commandes. Entre l'entité Commande et la relation Passer, nous retrouvons les cardinalités suivantes: * Cardinalité minimale = 1, donc chaque commande est passée par au moins un client. * Cardinalité maximale =1, chaque commande est passée au maximum par un seul client. M. BENJELLOUN 2006-07 Bases de données relationnelles - 42 Autres exemples COMMANDE 1,N No Cde Date Cde CONCERNER 0,N Quantité Cdée PRODUIT No Prod Désignation Prix Unitaire Une occurrence de commande est concernée au moins 1 fois. Une occurrence de commande peut être concernée plusieurs (N) fois. Une occurrence de produit peut ne pas être concernée (0). Une occurrence de produit peut être concernée plusieurs (N) fois. Employé Utiliser 0,N Ordinateur 1,N Numéro Nom Prénom Adresse Code_postal Numéro_PC Type Configuration Entre l'entité Employé et la relation Utiliser, nous avons: Cardinalité minimale = 0 Certains employés n'utilisent pas d'ordinateur Cardinalité maximale = N Service Entre l'entité Ordinateur et la relation Utiliser, nous avons: Cardinalité minimale = 1 Cardinalité maximale =N M. BENJELLOUN 2006-07 Bases de données relationnelles - 43 1,1 : Un COUREUR Provient au min d’1 PAYS et au max d’1 PAYS. Un COUREUR Provient d’un et d’un seul PAYS. un plusieurs plusieurs 0,n : Un PAYS est représenté au min par 0 COUREUR et au max n. Un PAYS est représenté par aucun ou plusieurs COUREURS. plusieurs M. BENJELLOUN 2006-07 Bases de données relationnelles - 44 CONFIGURATIONS POSSIBLES : 0,1 1,1 0,N 1,N Une occurrence participe au moins 0 fois et au plus 1 fois à l’association Une occurrence participe exactement 1 fois à l’association Une occurrence peut ne pas participer ou participer plusieurs fois Une occurrence participe au moins 1 fois, voire plusieurs Le fait d'indiquer pour cardinalité minimale '1' implique une contrainte forte : elle signifie qu'une entité ne peut exister indépendamment d'une autre. De telles entités sont dites ''faibles'' . ! Insistons sur le point suivant : les cardinalités n'expriment pas une vérité absolue, mais des choix de conception. Ils ne peuvent être déclarés valides que relativement à un besoin. Plus ce besoin sera exprimé précisément, et plus il sera possible d'apprécier la qualité du modèle. M. BENJELLOUN 2006-07 Bases de données relationnelles - 45 Les cardinalités, du point de vue de l'association, dans une interprétation ensembliste RELATIONS OBLIGATOIRES Notation E-A 1,1 <-> 1,1 1,N <-> 1,N Explication Relation ensembliste TOUTE occurrence de A a un homologue UNIQUE parmi les occurrences de B et réciproquement ???? TOUTE occurrence de A a AU MOINS un homologue parmi les occurrences de B et réciproquement RELATIONS Optionnelles Notation E-A Explication 0,N <-> 0,1 UNE occurrence de A peut avoir 0,1,N vis-à-vis. UNE occurrence de B est limitée à 0 ou 1 homologue 1,N <-> 0,N TOUTE occurrence de A a AU MOINS un homologue. Mais UNE occurrence de B peut ne pas en avoir, en avoir 1 ou plusieurs. M. BENJELLOUN 2006-07 Relation ensembliste Bases de données relationnelles - 46 Exercice 0: Cardinalités? CLIENT APPARTIENT 0-N No Nom Adresse SIGNE 0-N 1-1 CONTRAT 1-1 No Type Date VEHICULE No Marque Modèle Année Cylindrée 1-N 0-N M. BENJELLOUN 2006-07 CONCERNE Bases de données relationnelles - 47 ACCIDENT No Date (Montant) Exercice 1: CLIENT Laquelle des deux modélisations est correcte ? Passer 1,N Numéro Nom Prénom Adresse Code_postal Localité 1,1 Commande Numéro Date Quantité CLIENT Passer 0,N Numéro Nom Prénom Adresse Code_postal Localité 1,1 Commande Numéro Date Quantité Une commande est toujours passée par au moins un client. Une commande est également passée au maximum par un client. Une commande est donc toujours passée par un et un seul client. Un client passe au moins une commande et au maximum plusieurs (N) commandes. Cette modélisation ne tient pas compte des clients qui ne passent aucune commande. Un client est uniquement considéré comme tel s'il passe au moins une commande Un client peut passer aucune commande et au maximum plusieurs (N) commandes. Cette modélisation tient compte des clients qui ne passent aucune commande. M. BENJELLOUN 2006-07 Bases de données relationnelles - 48 Exemple CLIENT Disposer 0,N Numéro Nom Prénom Adresse Code_postal Localité Carte_Membre 1,1 No_Carte Type_Abonnement Date_création On dit que CLIENT est l'entité indépendante par rapport à l'association Disposer, tandis que Carte_Membre est l'entité dépendante. Une occurrence d'un client peut très bien exister sans carte de membre, mais une carte de membre ne peut pas exister sans client. ! La cardinalité minimale indique donc quelle entité est indépendante(0) et quelle entité est dépendante(1). On dit qu'une entité est indépendante par rapport à une relation lorsque sa cardinalité minimale vaut 0. ! Une relation ne peut pas être liée uniquement à des entités dépendantes qui ont une cardinalité maximale de 1. M. BENJELLOUN 2006-07 Bases de données relationnelles - 49 La modélisation suivante par exemple n'est pas correcte !!! Carte_Membre CLIENT Numéro Nom Prénom Adresse Code_postal Localité Disposer 1,1 1,1 No_Carte Type_Abonnement Date_création ! Dans ce cas, il faut réunir les propriétés des deux entités dans une seule. M. BENJELLOUN 2006-07 Bases de données relationnelles - 50 Exercice 2 Voici le résultat simplifié d'une analyse faite auprès d'une compagnie d'assurance qui désire informatiser la gestion des contrats auto. Un client peut assurer plusieurs voitures auprès de la compagnie. Chaque voiture est assurée par un seul contrat. Un contrat assure une seule voiture. En ce qui concerne un client, la compagnie désire connaître son nom, prénom, adresse complète, numéro de téléphone ainsi qu'un numéro de compte bancaire avec indication de la banque. Chaque contrat contient un numéro de contrat unique, la prime annuelle à payer, la date de paiement annuel, la marque de la voiture, le modèle de la voiture, le numéro d'immatriculation de la voiture, la valeur de la voiture et la date d'acquisition de la voiture. M. BENJELLOUN 2006-07 Bases de données relationnelles - 51 Visites dans un centre médical Medicament Medecin Patient Marticul Nom Code Libelle No_SS Nom Mutuelle 0,N 0,N 1,N Donner Prescrit Nb Prises Assister 1,1 0,N Consultation 1,1 No_Cons Date 1. 2. 3. 4. Un patient peut-il effectuer plusieurs visites? Un médecin peut-il recevoir plusieurs patients dans la même consultation? Peut-on prescrire plusieurs médicaments dans une même consultation? Deux médecins différents peuvents-ils prescrire le même médicament. M. BENJELLOUN 2006-07 Bases de données relationnelles - 52 Oui Non Oui Oui Exercice 3 " LabDB " CLIENT Obtenir 1,N Facture 1,1 No_Client Nom PARTIE 1 Prénom LabDB SPRL Adresse La société "LabDB" Code_postal 5, avenue SGBD 7000 FPMs désire informatiser son Localité système de facturation. Les factures devraient se présenter de la façon suivante: No_Facture Date Montant Facture No. 0001 Mons, le 15.02.2003 Client Nom : Prénom : Adresse : Code_postal : Localité : Nom_Client Pre_Client Serv. Info, 15 7000 Mons Montant de la facture : 3400 € Créez un MCD, qui permet de modéliser correctement le système d'information nécessaire, sachant que: Un client peut bien sûr recevoir plusieurs factures, mais il est uniquement considéré comme tel à partir du moment ou il reçoit sa première facture. Une facture concerne un et un seul client. M. BENJELLOUN 2006-07 Bases de données relationnelles - 53 PARTIE 2 Le responsable de la facturation de la société désire rendre les factures plus informatives. Comme un client peut acheter plusieurs articles différents en même temps, la facture devrait indiquer pour chaque article le numéro , un libellé, le prix unitaire, la quantité vendue et le prix total pour ce type d'article. la facture devrait avoir: Voici l'aspect que la facture devrait avoir: Proposez un nouveau MCD qui reflète ces modifications, en respectant le fait que tous les articles disponibles sont stockés (p.ex. No=233 Libellé="Analyse" PU=1000 €). Même si un article n'est pas encore considéré par une facture, il existe dans le système d'information. LabDB SPRL 5, avenue SGBD 7000 FPMs Client Nom : Prénom : Adresse : Code_postal : Localité : No. Article 233 Libellé Facture No. 0002 Mons, le 15.02.2003 Nom_Client Pre_Client Serv. Info, 15 7000 Mons Quantité Prix Analyse Prix unitaire 1000 € 1 1000 € 025 MCD 700 € 2 1400 € 142 MLD 1000 € 1 1000 € Montant total de la facture : M. BENJELLOUN 2006-07 Bases de données relationnelles - 54 3400 € Solution de l’exercice " LabDB " Obtenir CLIENT PARTIE 1 1,N Remarque: No_Client en + ⊵ propriété artificielle définit comme identifiant. Sinon il faut définir un identifiant composé de +ieur propriétés. No_Client Nom Prénom Adresse Code_postal Localité No_Facture Date Montant Obtenir CLIENT 1,N PARTIE 2 Remarque: L'entité Facture ne contient plus la propriété Montant. Il existe une règle générale de conception qui dit: Aucune propriété qui peut être calculée à partir d'autres propriétés existantes ne devra être stockée dans le MCD. M. BENJELLOUN 2006-07 Facture 1,1 No_Client Nom Prénom Adresse Code_postal Localité Facture 1,1 No_Facture Date 1,N Porter Quantité 0,N Article ! Bases de données relationnelles - 55 No_Article Libellé Prix_Unitaire Exercice 4 : Structure administrative On considère un sous-ensemble d’une structure administrative. D’une direction (caractérisée par un nom unique et le nom de son PDG) dépendent plusieurs départements (dotés chacun d’un nom unique dans sa direction et du nom de son directeur). Un département est découpé en services, ayant un nom (unique dans son département) et un responsable. Un service a la charge d’un certain nombres de dossiers (identifiés par un numéro et dotés d’un titre, d’une date et d’une description). Dans chaque service travaillent des employés identifiés par un numéro et caractérisés par leur nom et leur adresse. M. BENJELLOUN 2006-07 Bases de données relationnelles - 56 Structure administrative DIRECTION dir-dép 0-N 1-1 DEPARTEMENT dép-serv 0-N Nom_Dep Directeur 1-1 SERVICE traite 0-N Nom_Serv Responsable 0-N travaille 1-1 1-1 DOSSIER No_Dos Titre Date Description M. BENJELLOUN 2006-07 PERSONNE No_Pers Nom Adresse Bases de données relationnelles - 57 Nom PDG Peut – il devenir comme cela ? Entité traite 0-N Nom Responsable travaille 0-N 1-1 1-1 DOSSIER No_Dos Titre Date Description M. BENJELLOUN 2006-07 PERSONNE No_Pers Nom Adresse Bases de données relationnelles - 58 Notion de dépendance fonctionnelle Une dépendance fonctionnelle (df) existe lorsqu'un ensemble d'attributs détermine parfaitement un autre ensemble d'attributs. Pour une table T(relation R), un attribut Y de T dépend fonctionnellement d ’un attribut X de T ssi chaque valeur de X est associée a une et une seule valeur de Y XY Ex: {Nom, Tel.} {Nom, Prénom} définit {ID} {Adresse,Sexe,Téléphone,Email} //Vrai s’il n’y a pas de problème d’homonymie Les formes normales 2NF, 3NF et BCNF sont basées sur des contraintes en relation avec la notion de dépendance fonctionnelle. M. BENJELLOUN 2006-07 Bases de données relationnelles - 59 Notion de dépendance fonctionnelle Considérons l’entité suivante et quelques une de ses occurrences : Cette entité est juste mais elle implique une redondance d’information relative à la catégorie. L’association entre le numéro de la catégorie et son libellé est en effet répétée dans chaque occurrence de l’entité ARTICLE. M. BENJELLOUN 2006-07 Bases de données relationnelles - 60 Normalisation Le processus de normalisation du modèle relationnel à pour objectif d’établir une meilleure représentation conceptuelle des données d’une application par des tables relationnelles. Cela consiste, essentiellement, à décomposer les tables (entités, relations) contenant trop d’informations en tables (E/R) plus petites. Un mauvais schéma relationnel pouvant entraîner des anomalies lors des manipulations. Définition: Le processus de Normalisation permet, par étapes, d'aboutir à des relations ayant les bonnes propriétés. On peut mesurer la qualité d’une relation par son degré de normalisation. Ainsi, au plus une relation appartient à une forme normale avancée, au plus sa qualité augmente. M. BENJELLOUN 2006-07 1 FN (Codd, 1971) 2 FN (Codd, 1971) 3 FN (Codd, 1971) BCFN (Boyce, Codd, 1971) 4 FN (Fagin, 1977) 5 FN (Fagin, 1979) FN=Forme Normale. Bases de données relationnelles - 61 Normalisation NORMALISATION Programmation plus facile des applications Relations plus simples à gérer Normaliser un schéma relationnel c'est le remplacer par un schéma équivalent où toutes les relations vérifient certaines propriétés. Ces propriétes sont basées sur l'analyse des dépendances fonctionnelles à l intérieur de chaque relation. La normalisation permet de: - éviter les redondances (perte de place et incohérences) - minimiser l’espace de stockage - éviter les problèmes de mises à jour. M. BENJELLOUN 2006-07 Bases de données relationnelles - 62 Normalisation 1FN Définition: Une relation est en Première Forme Normale (1FN) si et seulement si elle ne contient que des valeurs simples et élémentaires (si tout attribut est atomique= non décomposable ). Personnes Nom Adresse ID_Personne Picsou 9, rue de Houdain, 7000 Mons … Adresse Nom N° Rue CP Ville Picsou 9 Houdain 7000 Mons Non 1FN PERE ENFANT P1 Enf11 PERE ENFANT P1 Enf12 P1 { Enf11, Enf12, Enf13 } P1 Enf13 P2 { Enf21, Enf22, Enf23 } P2 Enf21 P2 Enf22 M. BENJELLOUN 2006-07 Bases de données relationnelles - 63 Non 1FN En 1FN En 1FN Normalisation Exercice: Normaliser la relation COMMANDE COMMANDE PRODUITS Cd1 { Bureau 50€, Chaise 49€ , Ecran 199€ } Cd2 { Ecran 199€, Souris 19€ } Solution: COMMANDE Cd1 PRODUIT Bureau PRIX en € 50 Cd1 Cd1 Cd2 Cd2 Chaise Ecran Ecran Souris 49 199 199 19 M. BENJELLOUN 2006-07 Bases de données relationnelles - 64 2FN et 3FN Normalisation Une relation est en 2FN si elle est en 1FN et si tout attribut n’appartenant pas à la clé dépend totalement et non-partiellement de la clé. On dit alors que chaque attribut est en dépendance irréductible avec la clé. C’est la phase d’identification des clés. Cette étape est très importante vu qu’elle évite de nombreuses redondances. ( 2FN: 1FN + si tous les attributs qui ne participent à aucune clé pour l'entité, sont des attributs d'entités et non pas d'autres entités.) (2FN: 1FN + toute colonne qui n'appartient pas à une clé dépend pleinement de la clé et ne peut se déduire d'un sous-ensemble de cette clé. ) Une relation est en 3FN si elle est en 2FN et si tous les attributs qui n’appartiennent pas à la clé primaire sont mutuellement indépendants. Ceci correspond à la non transitivité des dépendances fonctionnelles et permet d’éviter les redondances. La forme 3FN implique que chaque attribut peut être mis à jour indépendamment des autres. 3FN si: Elle est en 2FN, Il n’existe aucune DF entre deux attributs non clé primaire (tout attribut n'appartenant pas à une clé ne dépend pas d'un attribut non-clé.) M. BENJELLOUN 2006-07 Bases de données relationnelles - 65 Normalisation 2e ET 3e FORME NORMALE Exemple : Soit la relation concernant des dons de bienfaiteurs pour une association. Nom redondance Ville Rue Montant Date Picsou Picsou Picsou Disney Pas de sous Disney Pas de sous Disney Pas de sous 10 € 12 € 30 € 3/10/99 13/1/01 23/7/03 Donald Disney 500€ 15/6/05 Bcp de sous Supposer Picsou change d'adresse (VILLE = Mons, RUE = Houdain). Risque de ne pas corriger toutes les lignes concernées. D'où BD incohérente M. BENJELLOUN 2006-07 • Difficulté maintenance intégrité. Bases de données relationnelles - 66 Normalisation Problème dit «Anomalies de Mise à Jour»: Cause: Les Redondances d'informations sont sources d'Incohérences Solution: On aurait aimé la structure suivante: PERSONNE Nom Picsou Ville Disney Rue Pas de sous Donald Disney Bcp de sous • L'adresse de Picsou figure une seule fois. • On a séparé des informations distinctes (sur la personne, sur les dons). DONS Nom Montant Date Picsou 10 € 3/10/99 Picsou 12 € 13/1/01 Picsou 30 € 23/7/03 Donal d 500€ «Le Bon Attribut au Bon Endroit» M. BENJELLOUN 2006-07 Bases de données relationnelles - 67 15/6/05 Normalisation Normalisation du schéma - élimination des redondances internes 1 fait 1 donnée 2FN EMPLOYE NumEmp Nom DEPARTEMENT Localisation DEPARTEMENT IdDepart Localisation 0-N dépend Localisation ne dépend que de DEPARTEMENT 1-1 EMPLOYE NumEmp Nom M. BENJELLOUN 2006-07 Bases de données relationnelles - 68 Normalisation Autre Exemple : Soit la table décrivant des fournisseurs d'une société NOM_FOUR VILLE CD_POSTAL PIECE QTE_EXP F1 Mons 7000 Bureau 300 F1 Mons 7000 Ecran 500 F1 Mons 7000 Armoire 20 F2 Charleroi 6000 Bureau 500 F2 Charleroi 6000 Ecran 600 F3 Keumiée 5060 Ecran 500 Quelques anomalies: FOUR1 deux tables distinctes : fournisseur (info fournisseur) pièces fournies. • Redondances. • Difficulté de maintenance. • Mémoriser l’adresse fournisseur impossible si pas de pièce fournie. e.g. <F4, Mons, 7000> • Suppression de toutes les pièces fournies par F2, fait perdre aussi son adresse. M. BENJELLOUN 2006-07 Bases de données relationnelles - 69 Normalisation On décompose donc (PROJECTION) FOUR1 NOM_FOUR VILLE CD_POSTAL PIECE QTE_EXP F1 Mons 7000 Bureau 300 F1 Mons 7000 Ecran 500 F1 Mons 7000 Armoire 20 F2 Charleroi 6000 Bureau 500 F2 Charleroi 6000 Ecran 600 F3 Keumiée 5060 Ecran 500 EXPEDITION 2FN NOM_FOUR PIECE QTE_EXP F1 Bureau 300 F1 Ecran 500 NOM_FOUR VILLE CD_POSTAL F1 Armoire 20 F1 Mons 7000 F2 Bureau 500 F2 Charleroi 6000 F2 Ecran 600 F3 Keumiée 5060 F3 Ecran 500 F4 Mons 7000 M. BENJELLOUN 2006-07 FOUR2 Bases de données relationnelles - 70 Normalisation • Dans la relation FOUR1, des attributs non clé (e.g. VILLE), «dépendaient» d'une partie de la clé (NOM_FOUR). • Les anomalies précédentes ont ainsi été éliminées, renforçant l'intégrité de la base. (on a pu insérer F4... par exemple). En fait, les redondances ont juste été minimisées. Car la relation FOUR2 souffre encore de quelques anoma1ies. Exercice: Lesquelles? Considérer toujours le tuple supplémentaire <F4, ..., Mons, 7000> NOM_FOUR M. BENJELLOUN 2006-07 FOUR2 VILLE CD_POSTAL F1 Mons 7000 F2 Charleroi 6000 F3 Keumiée 5060 F4 Mons 7000 Bases de données relationnelles - 71 Normalisation • On décompose encore la relation FOUR2 FOUR3 COMMUNE 3FN NOM_FOUR VILLE VILLE CD_POSTAL F1 Mons Mons 7000 F2 Charleroi Charleroi 6000 F3 Keumiée Keumiée 5060 F4 Mons On dit qu'on est passé à la 3e Forme Normale •Dans la relation FOUR2, des attributs non clé (e.g. CD_POSTAL), «dépendaient» d'un autre attribut non clé ( ici VILLE) . • Il n'y a plus de redondances RÉSULTAT FINAL: FOUR3 NOM_FOUR VILLE M. BENJELLOUN 2006-07 COMMUNE VILLE CD_POSTAL EXPEDITION NOM_FOUR Bases de données relationnelles - 72 PIECE QTE_EXP Normalisation Exces : Deuxième forme normale (2FN)!!! Une relation est en 2FN si: Elle est en 1FN, Tout attribut, non clé primaire, est dépendant de la clé primaire. Exemple de relation en 1FN mais pas en 2FN: Projet NumProjet NumEmployé Pourquoi? Fonction NomEmployé Problèmes - on ne peut enregistrer un employé que s'il participe à un projet - si un employé participe à plusieurs projets, on doit répéter les informations sur cet employé (redondance et problèmes de m-à-j) Une solution peut être proposée qui consiste à extraire la dépendance fonctionnelle: 1. On créé une nouvelle relation contenant l'attribut déterminé par une partie de la clé primaire 2. La clé primaire de la nouvelle relation est cette partie de la clé Employé NumEmployé NomEmployé Projet NumProjet NumEmployé NumEmployé est à la fois clé primaire et clé externe dans Projet M. BENJELLOUN 2006-07 Bases de données relationnelles - 73 Fonction Normalisation On peut aussi étudier d'autres relations comme: CLIENT N°client nom prénom date de naissance rue ville Cette relation est en 2FN par contre la suivante n'est pas en 2FN. COMMANDE_PRODUIT N°produit quantité N°fournisseur ville Pourquoi? Relation en 2FN mais pas en 3FN Employé NumEmployé M. BENJELLOUN 2006-07 NomEmployé NumService Pourquoi? Un autre exemple: COMPAGNIE Pourquoi? Vol Avion Pilote Bases de données relationnelles - 74 NomService Contraintes d’intégrité Après MLD Le modèle d'une base de données relationnelle implique, par sa conception, un certain nombre de contraintes d'intégrité (C. I. ) qui traduisent les propriétés sémantiques des données : Intégrité de domaine : concerne le contrôle des valeurs des attributs, le contrôle entre valeurs des attributs ainsi que le contrôle des opérateurs entre attributs. Contraintes d’intégrité statiques : utilisant le mot réservé CHECK Le concepteur peut également définir ses propres domaines : CREATE DOMAIN Domaine_Sexe CHAR(1) CHECK (VALUE IN (‘M’, ‘F’)) ; Intégrité de clé primaire : la contrainte de clé primaire d'une relation implique la non duplication des lignes, c'est-à-dire que chaque objet du monde réel peut être enregistré sans ambiguïté par une seule ligne, un seul "tuple"; - on peut ajouter à une colonne la contrainte de non-nullité qui implique que cette colonne ne peut pas avoir de valeur nulle, c'est-à-dire ne peut pas être indéfinie ou inutilisable; BENJELLOUN 2006-07et de non-nullité Bases de données relationnelles LesM. contraintes de domaine sont gérées en langage- 75 SQL, lors de la création de la table. C. I. Intégrité de référence : L’intégrité de référence (ou intégrité référentielle) est un ensemble de contraintes contrôlant les dépendances et indépendances des relations. Elle concerne principalement l’intégrité des clés étrangères dont les valeurs sont ‘NULL’ ou des valeurs de la clé primaire. L’objectif des clés étrangères étant de repérer un enregistrement dans différents espaces, des contraintes d’intégrité référentielle doivent assurer la validité des références entre tables. L’intégrité référentielle signifie qu’il n’y a pas de valeurs de clés étrangères invalides. Pour cela, il faut donc prendre des décisions quant à la suppression ou la modification de la cible que référence la clé étrangère. FOREIGN KEY Nom_Clé REFERENCES Nom_Table [ON DELETE option] [ON UPDATE option] M. BENJELLOUN 2006-07 Bases de données relationnelles - 76 Intégrité de relationnelle : C. I. L’intégrité relationnelle contrôle la sémantique et gère les contraintes de type if…then… Voici l’exemple d’une règle d’intégrité qui assure la suppression du numéro de téléphone d’une personne décédée. CREATE INTEGRITY RULE Règle_Décès FORALL Personnes (IF Personnes.Décédé = True THEN Personnes.Téléphone = NULL) ON ATTEMPTED VIOLATION Reject ; M. BENJELLOUN 2006-07 Bases de données relationnelles - 77 Contraintes d’intégrité fonctionnelle Les contraintes d’intégrité fonctionnelles (CIF) contrôlent la détermination absolue d’une entité participant à une association du modèle conceptuel par une ou plusieurs autres participant à la même association. Ce type de contrainte permet donc d’identifier les dépendances entre entités. Les CIFs ne doivent pas être confondues avec les dépendances fonctionnelles, qui permettent de déterminer les dépendances qui existent entre deux groupes d’attributs au sein d’une même relation L’identification des CIFs permet de corriger certaines erreurs de conception de bases de données relationnelles. En effet, si la connaissance d’une ou plusieurs entités d’une association conduit à la détermination complète d’une autre entité participant à la même association, on peut considérer qu’il y a redondance d’information dans le modèle. M. BENJELLOUN 2006-07 Bases de données relationnelles - 78 CIF Personnes 0 N Obtenir Année_d_obtention 0 N ID_Personne Nom Prénom Sexe Adresse Téléphone Email Diplômes Code_diplôme Titre_diplôme Abréviation 0N CIF Universités Code_université Nom_université Abréviation Si on imagine re-normaliser les diplômes de telle manière que chaque université possède l’exclusivité du diplôme qu’elle délivre, dans ce cas, la connaissance du diplôme implique celle de l’université. Il y a donc une contrainte d’intégrité fonctionnelle entre l’entité Diplômes et l’entité Universités. Personnes 0 N Obtenir Année_d_obtention M. BENJELLOUN 2006-07 0 N Diplômes 0 1 Délivrer Bases de données relationnelles - 79 0 N Universités CIF Trouver un MCD équivalent à ce MCD : 1,1 Camion 0,N No_Camion Activité Conduire 0,N Mois Mois Cumul Nb H d’activité Chauffeur 1,N Matri_Chauf. 0,N Camion 1,1 0,N No_Camion Activité Conduire 0,N Cumul Nb H d’activité Mois Mois Chauffeur 1,N Matri_Chauf. Un camion n’ayant qu’un chauffeur, l’activité du chauffeur par camion est l’activité du camion M. BENJELLOUN 2006-07 Bases de données relationnelles - 80 CIF Principe de simplification par les contraintes d’intégrité fonctionnelles Relation binaire non porteuse de données avec 1,1 sur l’une des pattes 1,1 Entité 1 4 1 ! CIF Relation Entité 2 2 3 On supprime la patte n°3. CONTRAINTE D'INTEGRITE FONCTIONNELLE Une Contrainte d'Intégrité Fonctionnelle (en abrégé : CIF) se définit par le fait que l'une des entités participant à l'association est complètement déterminée par la connaissance d'une ou plusieurs autres entités participant dans cette même association. M. BENJELLOUN 2006-07 Bases de données relationnelles - 81 CIF 1,1 Camion 1,N 0,N Type de Client No_Camion 0,N Type Activité Cumul Nb H d’activité Chauffeur 0,N Matri_Chauf. Client 1,N 1,1 1,1 Camion 1,N 1,1 0,N Affecter 1,N N°Client 0,N Type de Client No_Camion 0,N Type Activité Cumul Nb H d’activité Chauffeur 0,N Matri_Chauf. 1,1 M. BENJELLOUN 2006-07 Client 1,N 1,N Affecter N°Client 0,N Bases de données relationnelles - 82 1,1 Les associations transitives Considérons le modèle suivant : L’association binaire qui relie l’entité « CONTRAT » et l’entité « PROPRIETAIRE» doit être ôtée du modèle car on peut retrouver le propriétaire à partir des associations « Concerner » et « Appartenir ». Il s’agit d’une association transitive. M. BENJELLOUN 2006-07 Bases de données relationnelles - 83 CIF Gestion FPMS_Etudiants La FPMs veut ré-informatiser son système d'information qui gère les étudiants, Groupes d’étudiants (classes)(1er_A,... , 3eme_IG,…) . Sachant que : Un étudiant est caractérisé par [no. matricule, nom, prénom, date de naissance, adresse, Email ]. Une classe est caractérisée par le nom de la classe (p.ex 1er) et par une indication du groupe ou spécialité (P.ex : 1er_A, 4eme_Elec) ainsi que par le nombre d’étudiants qui la fréquente. Un étudiant enregistré dans le système fréquente au moins une classe au cours des années. On désire également saisir tous les enseignants dans le système d'information. Un enseignant est caractérisé par un code interne (CodeProf) , nom, prénom, Email et la matière qu'il enseigne. Une matière (cours) peut être composée de cours, T.P. et Exercices. Chacun des modules présente un poids en pourcentage de la côte globale à l’examen. Un module peut être donné par un ou plusieurs enseignants. Une matière est représentée au moins par un code matière (p.ex. INF_B = Informatique de base, BD = Base de données, etc.) et un libellé complet qui exprime le terme général ( p.ex "Informatique" etc.). M. BENJELLOUN 2006-07 Bases de données relationnelles - 84 Modélisez le fait que chaque classe soit enseignée chaque année par un ou plusieurs enseignants. Un enseignant peut bien sûr donner des cours (cours, Labo., Exercices) à plusieurs classes, enseigner plusieurs matières différentes pendant une ou plusieurs années, mais peut également ne pas donner de cours pendant une ou plusieurs années. Exprimez aussi le fait que l’étudiant puisse suivre des cours en deux années différentes. Exprimez la contrainte suivante : connaissant le code postal de l’étudiant, nous pouvons choisir parmi les localités, celle qui correspond à l’adresse de l’étudiant, ou connaissant la localité le code postal est capté automatiquement. M. BENJELLOUN 2006-07 Bases de données relationnelles - 85 Le Modèle Logique des Données (MLD) Définition Analyse Le niveau logique, qui se base sur le modèle conceptuel des données,MCD introduit la notion des tables logiques, et constitue donc le premier pas vers les MLD tables des SGBD. Passage du MCD au MLD Réel Perçu Schéma Conceptuel Schéma Logique Le passage du schéma conceptuel à la structure relationnelle (MLD) se fait facilement et obéit à certaines règles. Le MLD est toujours basé sur MCD. Un MLD est essentiellement composé de tables logiques reliées entre elles par des flèches… M. BENJELLOUN 2006-07 Bases de données relationnelles - 86 M. BENJELLOUN 2006-07 Bases de données relationnelles - 87 modèle conceptuel modèle logique Entité Toute entité est transformée en table. Les propriétés de l'entité deviennent les attributs de la table. L'identifiant de l'entité devient la clé primaire de la table. EMPLOYE Matricule Nom Fonction M. BENJELLOUN 2006-07 Identifant Clé primaire EMPLOYE (Mat, Nom, Fonc) Propriété Attribut Bases de données relationnelles - 88 Association ou relation Notion Père_fils ou mère_fille Les relations du modèle conceptuel peuvent, sous certaines conditions, soit disparaître, soit devenir une table. M. BENJELLOUN 2006-07 Bases de données relationnelles - 89 Relation un-à-plusieurs (participation totale) (1,1) (1,N) : (1,1) (0,N) Porter dans la relation fille la clé primaire de la relation mère. L'attribut ainsi ajouté s'appelle clé étrangère. Par convention, nous la symboliserons au moyen de #. Une clé étrangère est une colonne constituée de l’identifiant d’une autre table (et joue le rôle de référence à une ligne de cette table) (contrainte référentielle) M. BENJELLOUN 2006-07 Bases de données relationnelles - 90 (1,1) - (0,N) : se fait comme une relation un-à-plusieurs normale. DEPARTEMENT Nom Adresse DEPARTEMENT Nom Adresse 0-N Occupe 1-1 EMPLOYE Matricule Nom Fonction M. BENJELLOUN 2006-07 EMPLOYE Matricule Nom Fonction Bases de données relationnelles - 91 NomDpt Relation plusieurs-à-plusieurs (1,N) - (1,N) : (0,N) - (0,N) : (0,N) - (1,N) 1,N CLIENT COMMANDER 1,N Référence Désignation Prix Unitaire Quantité Cde Client Nom Adresse CLIENT(CdCli, Nom, Adresse) PRODUIT PRODUIT(Ref, Des, Prix) COMMANDER(#CdCli, #Ref, Quant) Clé primaire M. BENJELLOUN 2006-07 Clés étrangères Bases de données relationnelles - 92 0,N : La même règle s'applique CLIENT 0,N COMMANDER 0,N Référence Désignation Prix Unitaire Quantité Cde Client Nom Adresse CLIENT CdCli Nom PRODUIT Adresse Ref COMM CdCli M. BENJELLOUN 2006-07 PRODUIT Ref Qu Bases de données relationnelles - 93 Des Prix Relation un-à-un (1,1)—(1,1) : L'une des entités devient un attribut de l'autre entité. Exemple : ! Client(No_Client, Nom, Adresse) Carte_Membre(No_Carte,Type_Abonnement) Deviennent: Client(No_Client, Nom, Adresse, #No_Carte,Type_Abonnement). M. BENJELLOUN 2006-07 Bases de données relationnelles - 94 Disposer CLIENT 0,1 Numéro Nom Prénom Adresse Code_postal Localité Carte_membre 1,1 No_Carte Type_Abonnement Date_création CLIENT Carte_membre NoClient Nom Prénom Adresse Cde_postal Localité Disposer No_Carte NoClient Type_Abonnement Date_création Relation (0,1) – (0,1) : Idem que précédemment avec choix. Si l’association contient elle même des propriétés, alors >>> ajouter avec la clé étrangère. M. BENJELLOUN 2006-07 Bases de données relationnelles - 95 DIMENSION SUPERIEURE A 2: Si la relation entre chacune des paires d'entités ne peut déterminer la troisième entité. Une table pour chacune des entités et une table pour la relation. Cette dernière possédera une clé primaire composée d'au moins trois champs. Médecin Nom-médecin Adresse 0-N Pratiquer 0-N Lieu Acte Code-acte Désignation 1-N Patient N°Sec.Soc Nom Medecin(Nom-Med, Adr) Acte(Cd-Acte, Des) Patient(NSS, Nom-Pat) Pratiquer(#Nom-Med, #Cd-Acte, #NSS, Lieu) M. BENJELLOUN 2006-07 Bases de données relationnelles - 96 Résumé : Relation binaire : A (1,1) – (1,N) et (1,1) - (0,N) : (1,1) - (0,N) A ( id_A, a1, a2, …, #id_B) B ( id_B, b1,b2,…) (1,N) - (1,N) , (0,N) - (1,N) : (0,N) - (0,N) A ( id_A, a1, a2, …,) B ( id_B, b1,b2,…) A-B (#id_A, #id_B, a-b,…) (1,1) - (1,1) : A ( id_A, a1, a2, …, id_B, b1,b2,…) (0,1)- (1,1) : A ( id_A, a1, a2, …) B ( id_B, b1,b2,…, #id_A) (0,1) – (0,1) : Idem que (0,1)- (1,1) avec choix du placement de la clé étrangère. M. BENJELLOUN 2006-07 A-B Bases de données relationnelles - 97 B Relation ternaire -N A -N A-B-C B -N C A ( id_A, a1, a2, …,) B ( id_B, b1,b2,…) C ( id_B, b1,b2,…) A-B-C (#id_A, #id_B, #id_C, a-b-c,…) M. BENJELLOUN 2006-07 Bases de données relationnelles - 98 EXCE : M. BENJELLOUN 2006-07 Bases de données relationnelles - 99 M. BENJELLOUN 2006-07 Bases de données relationnelles - 100 Exercice "LabDB" Transformez le MCD suivant, qui représente la facturation de la société "LabDB" en un MLD en respectant toutes les règles du passage MCD à MLD. Obtenir CLIENT 1,N No_Client Nom Prénom Adresse Code_postal Localité Facture CLIENT No_Facture Date No_Client Nom Prénom Adresse Code_postal Localité 1,1 1,N Porter Obtenir Facture N°_Facture N°Client Date Quantité 0,N Porter Article No_Article Libellé Prix_Unitaire N° Facture No_Article Quantité Article No_Article Libellé Prix_Unitaire M. BENJELLOUN 2006-07 Bases de données relationnelles - 101 Exercice_Obélix La société Obélix et Compagnie fournit des menhirs dans le monde entier et gère les commandes à l’aide d’un micro-ordinateur. Exemple d’une commande: Obélix et Compagnie Livreur de menhirs Village gaulois Donner : Le MCD Les cardinalités et leur signification. Le Modèle des données. M. BENJELLOUN 2006-07 Nº client Date commande: 22.02.2003 Nº commande: 012 Nom client: BISCORNUS Prénom: M. Adresse: BABAORUM Code Libellé Quantité Prix unitaire 12 MENHIR CLASSIC 2 500 21 MENHIR SE/30 1 1500 25 MENHIR II FX 1 2500 Bases de données relationnelles - 102 4711 Rep_Obélix Schéma Entité-Association 0,N CLIENT 1,1 CLI_COM COMMANDE 1,N Signification: - Une commande est passée par un (1) client. - Un client peut passer plusieurs (N) commandes. - Une commande peut concerner plusieurs (N) produits. - Un produit peut intervenir dans plusieurs (N) commandes. L’association CLI_COM est du type (1,N). L’association COM_PRO est du type (N,N). Modèle des données CLIENT(NUM_CLI, NOM_CLI, PRE_CLI, ADR_CLI) COMMANDE(NUM_COM, DAT_COM, #NUM_CLI) PRODUIT(NUM_PRO, LIB_PRO, PRI_UNI) COM_PRO(#NUM_COM, #NUM_PRO,QTE_COM) M. BENJELLOUN 2006-07 Bases de données relationnelles - 103 COM_PRO 0,N PRODUIT Modèle relationnel textuel : Client(NoClient, Nom, Prénom) Commande (NoCde, DateCde, NoClient#) Produit(RefPdt, Désignation, Prix) Ligne(NoCde#, RefPdt#, Qté) Client NoClient Nom Commande Prénom NoCde DateCde NoClient# 1 Lassus Annick 100 14/04/2001 2 2 Mundubeltz Armelle 101 14/04/2001 1 3 Chaulet Bernadette Produit RefPdt Désignation Ligne Prixen € NoCde# RefPdt# Qté VE45 Vélo 150 100 VE45 1 VE32 Kit 2 roues 30 100 VE32 1 Bases relationnelles - 104VE21 15de données 101 2 M. BENJELLOUN 2006-07 VE21 Kit éclairage CLIENT NumClient 001 002 003 Nom Albert Francois Brabo PRODUIT Ville Bruxelles Liège Anvers NumPiece 0001 0002 0003 Descr. Table Chaise Armoire Cout 500 300 1.000 COMMANDE NumClient NumPiece 001 0002 002 0002 002 0003 Quantite 3 1 5 des relations existent entre les tableaux d ’une BD, ici: Albert de Bruxelles a commandé 3 chaises à 300 EUR M. BENJELLOUN 2006-07 Bases de données relationnelles - 105 CLIENT APPARTIENT 0-N NumCli Nom Adresse SIGNE 0-N 1-1 1-1 CONTRAT VEHICULE 0-1 NumCtr Type Date 0-N ACCIDENT (1-N) NumAcc Date (Montant) NumVeh Marque Modèle Année Cylindrée 1-1 COUVERT 0-N M. BENJELLOUN 2006-07 CONCERNE Bases de données relationnelles - 106 CLIENT NumCli Nom Adresse CONTRAT VEHICULE NumVeh ... NumCli NumCtr Numcli NumCtr Type Date ACCIDENT NumAcc CONCERNE NumVeh M. BENJELLOUN 2006-07 NumAcc Bases de données relationnelles - 107 Date (Montant) Exemple - SQL create table VEHICULE ( NumVeh char (16) not null, not null, Marque char (30) not null, not null, Modele char (30) not null, not null, Annee decimal (4) not null, ) Cylindree decimal (6) not null, NumCli char (12) not null, create table CONTRAT ( Ncli char (12) not null, NumCli char (12) not null, NumCtr decimal (8) not null, NumCtr char (8) not null, primary key (NumVeh), Type decimal (4) not null, unique (Numcli, NumCtr), Date date not null Foreign key primary key (NumCtr) (Numcli) references CLIENT, Foreign key (NumCli) references CLIENT ) Foreign key (Numcli, NumCtr) references CONTRAT ) create table CLIENT ( NumCli char (12) Nom char (38) Adresse char (60) primary key (NumCli) M. BENJELLOUN 2006-07 Bases de données relationnelles - 108 create table ACCIDENT ( NumAcc char (10) Date date Montant decimal (6), primary key (NumAcc)) not null, not null, not null, create table CONCERNE ( NumVeh char (16) not null, NumAcc char (10) not null, primary key (NumVeh, NumAcc), foreign key (NumVeh) references VEHICULE, foreign key (NumAcc) references ACCIDENT) M. BENJELLOUN 2006-07 Bases de données relationnelles - 109 Access M. BENJELLOUN 2006-07 Bases de données relationnelles - 110 M. BENJELLOUN 2006-07 Bases de données relationnelles - 111 SQL S.Q.L. « Structured Query Language », "langage structuré de requête" est un langage pour interroger et gérer les bases de données relationnelles. Il permet de créer, modifier et sélectionner des données. Le SQL peut se diviser en trois parties: DDL (data definition language), sert à définir la structure: créer, modifier, effacer... DML (data manipulation language), sert à manipuler les données: choisir, ajouter, effacer des tuples. DCL (data control language), sert à contrôler l'accès à l'information. M. BENJELLOUN 2006-07 Bases de données relationnelles - 112 On retrouve dans le DDL les commandes principales suivantes: CREATE TABLE CREATE INDEX CREATE VIEW ALTER TABLE DROP TABLE Création d'une table Création d'un index Création d’une vue Modification de la structure Effacement d'une table On retrouve dans le DML les commandes principales suivantes: INSERT UPDATE DELETE SELECT M. BENJELLOUN 2006-07 Insérer un tuple Modifier un tuple Effacer un tuple Choisir un ensemble de tuples Bases de données relationnelles - 113 Il existe de plus des fonctions: De tri (ORDER BY) et de regroupement (GROUP BY) arithmétiques, mathématiques et statistiques (moyenne, maximum, minimum, etc.) logiques (UNION, INTERSECTION, etc.) etc. Les données sont définies selon des types (entier,caractères, date,etc.). Types de données SMALLINT INTEGER DECIMAL (m,n) FLOAT CHAR (n) VARCHAR DATE TIME M. BENJELLOUN 2006-07 entier (16 bits) entier (32 bits) décimaux de m chiffres (dont n après la virgule) réels flottants chaîne de n caractères chaîne variable d’au plus n caractères dates (année, mois et jour) instants (heure, minute, seconde) Bases de données relationnelles - 114 On peut aussi inclure dans la définition des attributs des mots de contrôle pour forcer la saisie. Par exemple: NOM CHAR(20) NOT NULL définit une variable "NOM" qui sera constituée d'un champs de 20 caractères auquel on devra obligatoirement attribuer une valeur si on désire ajouter un tuple contenant cet attribut. M. BENJELLOUN 2006-07 Bases de données relationnelles - 115 Exercice "LabDB" Obtenir CLIENT No_Client Nom Adresse 1,N Facture 1,1 Obtenir CLIENT 1,N No_Facture Date 1,N Porter No_Client Nom Boite_Post Rue Code_postal Localité Facture 1,1 No_Facture Date 1,N Porter Quantité 0,N M. BENJELLOUN 2006-07 Quantité 0,N Article Article No_Article Libellé Prix_Unitaire No_Article Libellé Prix_Unitaire Bases de données relationnelles - 116 Obtenir CLIENT 1,N No_Client Nom Boite_Post Rue Code_postal Localité Facture CLIENT No_Facture Date No_Client Nom Boite_Post Rue Code_postal Localité Obtenir 1,1 1,N Porter Facture N°_Facture #N°Client Date Quantité Porter 0,N N° Facture No_Article Quantité Article No_Article Libellé Prix_Unitaire Article No_Article Libellé Prix_Unitaire M. BENJELLOUN 2006-07 Bases de données relationnelles - 117 Aperçu des opérations les plus courantes Création d’une table CREATE TABLE Client ( CLIENT No_Client Nom Boite_Post Rue Code_postal Localité M. BENJELLOUN 2006-07 create table No_Client Nom Bte_Post Rue Code_P Localite ); CHAR (4), CHAR (12), INTEGER, CHAR(30), INTEGER, CHAR (20) Bases de données relationnelles - 118 Identifiant CREATE TABLE Client ( No_Client CHAR (4) NOT NULL, Nom CHAR (12), … Code_P primary key INTEGER, Localite CHAR (20), PRIMARY KEY (No_Client) ); M. BENJELLOUN 2006-07 not null Bases de données relationnelles - 119 CLIENT No_Client Nom Boite_Post Rue Code_postal Localité Facture CREATE TABLE Porter( N°_Facture #N°Client Date No_Facture CHAR (8) NOT NULL, No_Article CHAR (8) NOT NULL, Quantité INTEGER, Porter PRIMARY KEY (No_Facture, No_Article), N° Facture No_Article Quantité FOREIGN KEY (No_Facture) REFERENCES Facture, FOREIGN KEY (No_Article) REFERENCES Article Article No_Article Libellé Prix_Unitaire ); M. BENJELLOUN 2006-07 foreign key Clé étrangère Bases de données relationnelles - 120 Ajouter une colonne à une table ALTER TABLE Client ADD Prenom CHAR(25); Détruire une table DROP TABLE FOURNISSEUR; Créer un index CREATE INDEX PR-Cli1 ON Client (Localite); Détruire un index DROP INDEX PR-Cli1 M. BENJELLOUN 2006-07 Bases de données relationnelles - 121 CLIENT No_Client Nom Prenom Boite_Post Rue Code_postal Localité Consultation d’une BD SELECT Nom, Localite précise les valeurs (colonnes, valeurs calculées) qui constituent chaque ligne du résultat FROM Client indique les tables desquelles le résultat tire ses valeurs WHERE Localite = ‘Charleroi’ donne la condition de sélection que doivent satisfaire les lignes qui fournissent le résultat M. BENJELLOUN 2006-07 Bases de données relationnelles - 122 Manipulation des données : Sélection de tous les attributs: SELECT * FROM Client; Sélection de certains attributs: SELECT Nom, Prenom FROM Client; Sélection de certains attributs et tuples: SELECT Nom, Code_P FROM Client WHERE Code_P < 7000 AND …; Sélectionner le nom de tous les Clients qui vivent à Mons: SELECT Nom FROM Client WHERE VILLE= ‘MONS’; M. BENJELLOUN 2006-07 Bases de données relationnelles - 123 Extraction SELECT ID_Personnel, Nom, Code_Postal FROM Client M. BENJELLOUN 2006-07 Bases de données relationnelles - 124 Extraction SELECT * FROM Client M. BENJELLOUN 2006-07 Bases de données relationnelles - 125 Extraction SELECT ID_Personnel, Nom, Code_Postal FROM Client WHERE Nom = ‘Bros’ M. BENJELLOUN 2006-07 Bases de données relationnelles - 126 Le DISTINCT permet d'obtenir une liste qui ne contient qu'une fois chaque Localite. DISTINCT AVANT SELECT DISTINCT Localite FROM Client WHERE Categorie = ‘1’ APRES APRES SANS DISTINCT M. BENJELLOUN 2006-07 AVEC DISTINCT Bases de données relationnelles - 127 Conditions de sélection and or not () SELECT FROM WHERE AND Nom, Compte Client Localite = ‘Charleroi’ Compte >= 0 M. BENJELLOUN 2006-07 SELECT TableClient.Nom, TableClient.compte FROM TableClient Access WHERE (((TableClient.Localite)='Charleroi') AND ((TableClient.compte)>=0)); Bases de données relationnelles - 128 Trouver les N°_Com avec leur date de tous les Clients de Charleroi. EXCE : Facture N°_Facture #N°Client Date M. BENJELLOUN 2006-07 Bases de données relationnelles - 129 Facture Sous-requêtes SELECT FROM WHERE N°_Facture #N°Client Date No, Date AVANT Commande NoClient in (SELECT No FROM Client WHERE Localite = ‘Charleroi’) M. BENJELLOUN 2006-07 Bases de données relationnelles - 130 EXCE : Trouver les noms de tous les fournisseurs qui vendent la pièce numéro 2. Rep : SELECT NOM FROM FOURNISSEUR WHERE NOFOUR IN (SELECT NOFOUR FROM ASSOCIATION WHERE NOPCE=2); Le IN signifie inclus dans. Il existe une autre méthode : JOIN Pour comprendre les requêtes (ou query) imbriquées, il faut exécuter d'abord la requête entre parenthèses. M. BENJELLOUN 2006-07 Bases de données relationnelles - 131 Les clients qui habitent dans la même localité que le client n°2 SELECT FROM WHERE * Client Localite IN ( SELECT Localite FROM Client WHERE Client.No = ‘3’) M. BENJELLOUN 2006-07 Bases de données relationnelles - 132 Différents opérateurs = IN NOT IN CONTAIN DOES NOT CONTAIN COUNT(*) AVG(colonne) SUM(colonne) MIN(colonne) MAX(colonne) Différentes fonctions COUNT SUM AVG MIN MAX nombre de lignes trouvées moyenne des valeurs de la colonne somme des valeurs de la colonne minimum des valeurs de la colonne maximum des valeurs de la colonne On peut également se servir de mots de contrôle tels: BETWEEN, NULL, LIKE, EXISTS, IN, ALL, SOME, etc.. M. BENJELLOUN 2006-07 Bases de données relationnelles - 133 Données calculées et duplication de lignes distinct nombre de commandes ??? SELECT COUNT (NoClient) FROM Commande APRES 9 nombre de commandes !!! SELECT COUNT (DISTINCT NoClient) APRES 6 FROM Commande nombre de commandes !!! M. BENJELLOUN 2006-07 Bases de données relationnelles - 134 Mise à jour : UPDATE ASSOCIATION SET PRIX=23 WHERE NOPCE=5 AND NOFOUR="ZZ"; Dans la table ASSOCIATION pour tous les enregistrements dont le NOPCE=5 et NOFOUR=ZZ, la colonne PRIX sera mise à 23. Suppression : DELETE FOURNISSEUR WHERE NOFOUR="ZZ"; Dans la table FOURNISSEUR supprime l'enregistrement dont NOFOUR=ZZ. Il faut s'assurer que ce fournisseur n'est pas utilisé dans la table ASSOCIATION. M. BENJELLOUN 2006-07 Bases de données relationnelles - 135 Création : INSERT INTO ASSOCIATION (NOPCE,NOFOUR,PRIX) VALUES(1,"KK",10); Crée dans la table ASSOCIATION un enregistrement en assignant des valeurs aux colonnes. M. BENJELLOUN 2006-07 Bases de données relationnelles - 136