La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

M. BENJELLOUN 2006-07 Bases de données relationnelles - 1 Les Bases de données relationnelles Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique.

Présentations similaires


Présentation au sujet: "M. BENJELLOUN 2006-07 Bases de données relationnelles - 1 Les Bases de données relationnelles Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique."— Transcription de la présentation:

1 M. BENJELLOUN Bases de données relationnelles - 1 Les Bases de données relationnelles Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons de la théorie à la pratique

2 M. BENJELLOUN Bases de données relationnelles - 2 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 dune 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

3 M. BENJELLOUN Bases de données relationnelles - 3 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

4 M. BENJELLOUN Bases de données relationnelles - 4 Un modèle de base de données est un ensemble déléments qui décrit les données et permet dexprimer 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 dune description des données et de leurs relations ainsi que dun 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 lutilisation dun langage déterminé.

5 M. BENJELLOUN Bases de données relationnelles - 5 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. Définitions

6 M. BENJELLOUN Bases de données relationnelles - 6 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 lutilisateur. Ces données doivent avoir une relation entre elles. sans redondance plusieurs applications indépendantes des programmes approche commune et contrôlée 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 quelles 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 dapplication de certaines entreprises … Définitions

7 M. BENJELLOUN Bases de données relationnelles - 7 Exemples: FPMs BD sur tous les étudiants. Une banque BD sur tous les clients. Une société d'assurances BD contrats d'assurances et sinistres. Une base de données correctement construite permet de partager les données entre plusieurs utilisateurs, de restreindre laccès ou la modification des données, dassurer lintégrité des données et déquilibrer les conflits des besoins tout en réduisant les redondances et en évitant les incohérences Définitions

8 M. BENJELLOUN Bases de données relationnelles une base de données ? 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 Lorsquon a besoin dorganiser les données en un ensemble structuré et : Qu'attendre Pourqoui

9 M. BENJELLOUN Bases de données relationnelles - 9 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. SGBDBD 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. Système de gestion de bases de données :

10 M. BENJELLOUN Bases de données relationnelles - 10 Un SGBD assure - la description des données, - leur recherche et mise à jour, - la sûreté : vérifier les droits daccè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 - lintégrité : définir des règles qui maintiennent lintégrité de la base de données (contraintes dintégrité) - la concurrence daccès : détecter et traiter les cas où il y a conflit daccès entre plusieurs utilisateurs et les traiter correctement un SGBD? Qu'attendre Pourqoui

11 M. BENJELLOUN Bases de données relationnelles - 11 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) b) c) d) fort souple, aisé à développer +ieurs MODELES de BASES de DONNEES

12 M. BENJELLOUN Bases de données relationnelles - 12 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

13 M. BENJELLOUN Bases de données relationnelles - 13 Historique

14 M. BENJELLOUN Bases de données relationnelles - 14 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é : Les systèmes de gestion de bases de données relationnels dominent le marché.

15 M. BENJELLOUN Bases de données relationnelles - 15 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 Algèbre Relationnelle Les données sont perçues par lutilisateur comme des tables JOIN: relie 2 tables grâce aux valeurs communes de 2 colonnes communes

16 M. BENJELLOUN Bases de données relationnelles - 16 Opérations relationnelles Sélection : –Projection –Restriction –Jointure –Division –Agrégation Opération suppl. Mise à jour Création d une vue

17 M. BENJELLOUN Bases de données relationnelles - 17 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

18 M. BENJELLOUN Bases de données relationnelles - 18 Mise en oeuvre dun SGBD On distingue trois niveaux dappré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 lutilisateur voit les données) Description pour chaque utilisateur de sa perception des données. ES CS IS

19 M. BENJELLOUN Bases de données relationnelles - 19 ES CS IS 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.

20 M. BENJELLOUN Bases de données relationnelles - 20 Schémas Externes (ESs) Définit une vue de la BD Vues SQL, Vbasic, orientés Web notamment (HTML, XML…) … ES CS IS Une BD est en général munie de plusieurs différentes ESs Mais tous ont le CS comme racine commune

21 M. BENJELLOUN Bases de données relationnelles - 21 Schéma Interne (IS) Comment transformer les objets? Comment ils seront stockés? Comment y accèdes? CS Schéma Conceptuel Merise Merise est une des méthodes de conception et de développement de projets informatiques. Cette méthode date de , et fait suite à une consultation nationale lancée en 1977 par le ministère de lIndustrie 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 dinformation. 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 dinformation.

22 M. BENJELLOUN Bases de données relationnelles - 22 Terme relationnel formelEquivalent informel relation relation perçue entre entités (!!table) n-upletligne ou enregistrement cardinaliténombre de lignes attributcolonne ou champ degrénombre de colonnes clé primaireidentificateur unique clé étrangèreréférence = attribut principal ailleurs domaine Ensemble de valeurs légales (ensemble des valeurs dun attribut) Objets relationnels: domaines et relations

23 M. BENJELLOUN Bases de données relationnelles - 23 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° MatNOMSALAIRECode post. 159Donald Obélix Picsou …..…. Valeurs de lattributUn champ de données (Attribut) Enregistrement, N_Uplet Table : Employés_D isney

24 M. BENJELLOUN Bases de données relationnelles - 24 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.Select 2. Requêtes d'insertion.Insert 3. Requêtes de modification.Update 4. Requêtes de suppression.Delete Pour chaque requête nous retrouvons le cycle suivant: Formuler la requête Analyser et Exécuter la requête Résultat de la requête

25 M. BENJELLOUN Bases de données relationnelles 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.

26 M. BENJELLOUN Bases de données relationnelles - 26 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 dabstraction. Le niveau conceptuel identifie et décrit formellement lensemble des informations du domaine géré par le futur système dinformation. 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 quil dépend fortement de lenvironnement dintégration du système dinformation. Le niveau logique fournit une description des données prenant en compte les moyens informatiques de mémorisation et limplémentation du système par un SGBD. Cest également ici que lon retrouvera lalgè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é. Niveaux dabstraction

27 M. BENJELLOUN Bases de données relationnelles - 27 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: NiveauStatique (données)Dynamique (traitements) Conceptuel MCD MCT Organisationnel ou logique MLDMOT (QUI ? QUAND ?) Opérationnel ou physique MPD MOPT

28 M. BENJELLOUN Bases de données relationnelles - 28 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 Analyse MCD MLD MPD Réel Perçu Schéma Conceptuel Schéma Logique Niveaux dabstractions Niveau Conceptuel Niveau Logique Niveau Physique Elaboration du Modèle E-R Passage au Modèle Relationnel Implémentation Sur SGBD-R Univers de lapplication

29 M. BENJELLOUN Bases de données relationnelles - 29 Application? Choix de lapplication / groupe Niveau Conceptuel Niveau Logique Niveau Physique Elaboration du Modèle E-R Passage au Modèle Relationnel Implémentation Sur SGBD-R Schéma Conceptuel Schéma Logique Schéma Physique Implémentation Sur SGBD-R Rapport Def. Dom. C.Chg Univers de lapplicatio n

30 M. BENJELLOUN Bases de données relationnelles er rapport : mars 2006 Cahier de charges. 2 ème rapport : ….. Cahier de charges et MCD. 3 ème rapport : ….. Rapport final Votre rapport doit respecter scrupuleusement la table des matières suivante : 1. Cahier de charges de lapplication 2. MCD 3. MLD 4. MPD (qlq tables et relations) 5. Implémentation 6. Conclusion 7. 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 daffaire des clients (moyenne pour les étudiants) … Lors de la conclusion : Les besoins futurs ! Noubliez 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. Quelles seront les évolutions possibles de votre base de données ?

31 M. BENJELLOUN Bases de données relationnelles Le niveau conceptuel, se base directement sur l'analyse, cest 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: Permet de définir les informations pertinentes pour lapplication et denvisager 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,.. Modèle conceptuel des données MCD Analyse Niveau Conceptuel Elaboration du Modèle E-R Schéma Conceptuel

32 M. BENJELLOUN Bases de données relationnelles - 32 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 dune 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.

33 M. BENJELLOUN Bases de données relationnelles - 33 Il semble que la bonne approche de construction dun modèle conceptuel des données soit un compromis entre la méthode directe, qui laisse une large part à lintuition 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 lapplication. 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...

34 M. BENJELLOUN Bases de données relationnelles 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: 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 Modèle physique des données : MPD Niveau Logique Passage au Modèle Relationnel Schéma Logique Niveau Physique Implémentation Sur SGBD-R Schéma Physique

35 M. BENJELLOUN Bases de données relationnelles - 35 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. Le schéma conceptuel Traduire lanalyse 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 dobjets de même nature. Les relations sont des liens sémantiques qui peuvent exister entre plusieurs entités. Les cardinalités représentent le nombre possible dinteractions entre les entités et les attributs. Passer 1, N1,1 CLIENT Numéro Nom … Commande Numéro Date Quantité

36 M. BENJELLOUN Bases de données relationnelles - 36 Le Modèle Conceptuel des Données (MCD) Analyse (MCD) : "Schéma Entité-Relation" ou "Schéma Entité-Association". COMMANDE No Cde Date Cde PRODUIT No Prod Désignation Prix Unitaire CONCERNER Quantité Cdée Relation ou Association Propriété de la Relation Nom de la RelationNom dentité ENTITE Propriété dentité

37 M. BENJELLOUN Bases de données relationnelles - 37 Dans l'exemple, l'entité Produit produits S.I.. et l'entité Commande commandes S.I. Un identifiant est une colonne dont les valeurs permettent de repérer une seule ligne NOM Identifiant Attributs Nom de lentité Propriété 1 Propriété 2 Propriété 3 Propriété 4 PRODUIT No Prod Désignation Prix Unitaire Le choix d'un identifiant correcte est très important pour la modélisation: Choix ? ENTITE 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.

38 M. BENJELLOUN Bases de données relationnelles - 38 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

39 M. BENJELLOUN Bases de données relationnelles - 39 Attributs caractéristiques des entités obligatoires ou facultatives avec un domaine (type) de valeurs CLIENTVEHICULE No Nom Adresse No_Matric. Marque Modèle Année Cylindrée ID_Personne Nom Prénom Sexe Adresse Personnes Qu'est ce qu'un bon schéma Entité-Relation (« formes normales ») ? ni perte d'information ni redondance contraintes (dintégrité) entre les valeurs des attributs le but: indépendance / applications (vues particulières)

40 M. BENJELLOUN Bases de données relationnelles - 40 Associations ou Relations CLIENT No Nom Adresse CONTRAT No Type Date VEHICULE No Marque Modèle Année Cylindrée APPARTIENT SIGNE PersonnesDiplômes Obtenir ID_Personne Nom Prénom Sexe Adresse Téléphone Code_diplôme Titre_diplôme Abréviation Année_d_obtention

41 M. BENJELLOUN Bases de données relationnelles - 41 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. Passer CLIENT Numéro Nom Prénom Adresse Code_postal Localité Commande Numéro Date Quantité MCD Relation binaire Déverser LAC RIVIERE Décharge EMPLOYE N° Matricule CONJOINT Relation ternaire Relation réflexive (relation récursive)

42 M. BENJELLOUN Bases de données relationnelles - 42 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é Les cardinalités précisent la participation de l'entité concernée à la relation. cardinalité minimale cardinalité maximale Passer 1, N1,1 CLIENT Numéro Nom Prénom Adresse Code_postal Localité Commande Numéro Date Quantité * 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.

43 M. BENJELLOUN Bases de données relationnelles - 43 Autres exemples Utiliser 0,N1,N Employé Numéro Nom Prénom Adresse Code_postal Service Ordinateur 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 Entre l'entité Ordinateur et la relation Utiliser, nous avons: Cardinalité minimale = 1 Cardinalité maximale =N COMMANDE No Cde Date Cde PRODUIT No Prod Désignation Prix Unitaire CONCERNER Quantité Cdée 1,N 0,N 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.

44 M. BENJELLOUN Bases de données relationnelles ,1 : Un COUREUR Provient au min d1 PAYS et au max d1 PAYS. Un COUREUR Provient dun et dun seul PAYS. 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 un

45 M. BENJELLOUN Bases de données relationnelles - 45 CONFIGURATIONS POSSIBLES : 0,1 Une occurrence participe au moins 0 fois et au plus 1 fois à lassociation 1,1 Une occurrence participe exactement 1 fois à lassociation 0,N Une occurrence peut ne pas participer ou participer plusieurs fois 1,N 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. !

46 M. BENJELLOUN Bases de données relationnelles - 46 Les cardinalités, du point de vue de l'association, dans une interprétation ensembliste Notation E-A ExplicationRelation ensembliste 1,1 TOUTE occurrence de A a un homologue UNIQUE parmi les occurrences de B et réciproquement ???? 1,N TOUTE occurrence de A a AU MOINS un homologue parmi les occurrences de B et réciproquement RELATIONS OBLIGATOIRES Notation E-A ExplicationRelation ensembliste 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. RELATIONS Optionnelles

47 M. BENJELLOUN Bases de données relationnelles - 47 CLIENT No Nom Adresse CONTRAT No Type Date ACCIDENT No Date (Montant) VEHICULE No Marque Modèle Année Cylindrée APPARTIENT SIGNE CONCERNE Exercice 0: Cardinalités? 0-N N N

48 M. BENJELLOUN Bases de données relationnelles - 48 Passer 1,N1,1 CLIENT Numéro Nom Prénom Adresse Code_postal Localité Commande Numéro Date Quantité Exercice 1: Laquelle des deux modélisations est correcte ? Passer 0,N1,1 CLIENT Numéro Nom Prénom Adresse Code_postal Localité 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.

49 M. BENJELLOUN Bases de données relationnelles - 49 Disposer 0,N1,1 CLIENT Numéro Nom Prénom Adresse Code_postal Localité Carte_Membre No_Carte Type_Abonnement Date_création Exemple 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. ! 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. !

50 M. BENJELLOUN Bases de données relationnelles - 50 La modélisation suivante par exemple n'est pas correcte !!! Disposer 1,11,1 1,1 CLIENT Numéro Nom Prénom Adresse Code_postal Localité Carte_Membre 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. !

51 M. BENJELLOUN Bases de données relationnelles - 51 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.

52 M. BENJELLOUN Bases de données relationnelles ,11,1 0,N0,N Medecin Marticul Nom Patient No_SS Nom Mutuelle Medicament Code Libelle Prescrit Nb Prises DonnerAssister 0,N0,N 1,N1,N Consultation No_Cons Date 1,11,1 0,N0,N Visites dans un centre médical 1.Un patient peut-il effectuer plusieurs visites? 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 peuvents-ils prescrire le même médicament. Oui Non Oui Non Oui

53 M. BENJELLOUN Bases de données relationnelles - 53 Exercice 3 " LabDB " La société "LabDB" désire informatiser son système de facturation. Les factures devraient se présenter de la façon suivante: 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. LabDB SPRL Facture No , avenue SGBD 7000 FPMs Mons, le Client Nom : Nom_Client Prénom : Pre_Client Adresse : Serv. Info, 15 Code_postal: 7000 Localité : Mons Montant de la facture : 3400 PARTIE 1 Obtenir 1,N1,1 CLIENT No_Client Nom Prénom Adresse Code_postal Localité Facture No_Facture Date Montant

54 M. BENJELLOUN Bases de données relationnelles - 54 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: LabDB SPRL Facture No , avenue SGBD 7000 FPMs Mons, le Client Nom : Nom_Client Prénom : Pre_Client Adresse : Serv. Info, 15 Code_postal: 7000 Localité : Mons No. Article LibelléPrix unitaire QuantitéPrix 233Analyse MCD MLD Montant total de la facture : 3400 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.

55 M. BENJELLOUN Bases de données relationnelles - 55 Solution de lexercice " LabDB " PARTIE 1 Obtenir 1,N1,1 CLIENT No_Client Nom Prénom Adresse Code_postal Localité Facture No_Facture Date Montant Remarque: No_Client en + propriété artificielle définit comme identifiant. Sinon il faut définir un identifiant composé de +ieur propriétés. PARTIE 2 Obtenir 1,N1,1 CLIENT No_Client Nom Prénom Adresse Code_postal Localité Facture No_Facture Date Porter 1,N 0,N0,N Article No_Article Libellé Prix_Unitaire Quantité 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. !

56 M. BENJELLOUN Bases de données relationnelles - 56 Exercice 4 : Structure administrative On considère un sous-ensemble dune structure administrative. Dune direction (caractérisée par un nom unique et le nom de son PDG) dépendent plusieurs départements (dotés chacun dun 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 dun certain nombres de dossiers (identifiés par un numéro et dotés dun titre, dune date et dune description). Dans chaque service travaillent des employés identifiés par un numéro et caractérisés par leur nom et leur adresse.

57 M. BENJELLOUN Bases de données relationnelles - 57 DIRECTION Nom PDG DEPARTEMENT Nom_Dep Directeur SERVICE Nom_Serv Responsable PERSONNE No_Pers Nom Adresse DOSSIER No_Dos Titre Date Description dir-dép dép-serv traite travaille 0-N N Structure administrative

58 M. BENJELLOUN Bases de données relationnelles - 58 Peut – il devenir comme cela ? Entité Nom Responsable PERSONNE No_Pers Nom Adresse DOSSIER No_Dos Titre Date Description traite travaille N

59 M. BENJELLOUN Bases de données relationnelles - 59 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 X Y Ex: {Nom, Tel.} définit {ID} {Nom, Prénom} {Adresse,Sexe,Téléphone, } //Vrai sil ny a pas de problème dhomonymie Les formes normales 2NF, 3NF et BCNF sont basées sur des contraintes en relation avec la notion de dépendance fonctionnelle. Notion de dépendance fonctionnelle

60 M. BENJELLOUN Bases de données relationnelles - 60 Considérons lentité suivante et quelques une de ses occurrences : Cette entité est juste mais elle implique une redondance dinformation relative à la catégorie. Lassociation entre le numéro de la catégorie et son libellé est en effet répétée dans chaque occurrence de lentité ARTICLE. Notion de dépendance fonctionnelle

61 M. BENJELLOUN Bases de données relationnelles - 61 Normalisation Le processus de normalisation du modèle relationnel à pour objectif détablir une meilleure représentation conceptuelle des données dune application par des tables relationnelles. Cela consiste, essentiellement, à décomposer les tables (entités, relations) contenant trop dinformations en tables ( E/R ) plus petites. Un mauvais schéma relationnel pouvant entraîner des anomalies lors des manipulations. On peut mesurer la qualité dune relation par son degré de normalisation. Ainsi, au plus une relation appartient à une forme normale avancée, au plus sa qualité augmente. Définition : L e processus de Normalisation p ermet, par étapes, d'aboutir à des relations ayant les bonnes propriétés. FN=Forme Normale. 1 FN (Codd, 1971) 2 FN (Codd, 1971) 3 FN (Codd, 1971) BCFN (Boyce, Codd, 1971) 4 FN (Fagin, 1977) 5 FN (Fagin, 1979)

62 M. BENJELLOUN Bases de données relationnelles - 62 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. Normalisation La normalisation permet de: - éviter les redondances (perte de place et incohérences) - minimiser lespace de stockage - éviter les problèmes de mises à jour.

63 M. BENJELLOUN Bases de données relationnelles - 63 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 ). NomAdresse Picsou9, rue de Houdain, 7000 Mons NomN°RueCPVille Picsou9Houdain7000Mons Non 1FN En 1FN 1FN ID_Personne … Adresse Personnes PEREENFANT P1{ Enf11, Enf12, Enf13 } P2{ Enf21, Enf22, Enf23 } PEREENFANT P1Enf11 P1Enf12 P1Enf13 P2Enf21 P2Enf22 Non 1FN En 1FN Normalisation

64 M. BENJELLOUN Bases de données relationnelles - 64 Exercice: Normaliser la relation COMMANDE COMMANDEPRODUITS Cd1{ Bureau 50, Chaise 49, Ecran 199 } Cd2{ Ecran 199, Souris 19 } Solution: COMMANDEPRODUITPRIX en Cd1Bureau50 Cd1Chaise49 Cd1Ecran199 Cd2Ecran199 Cd2Souris19 Normalisation

65 M. BENJELLOUN Bases de données relationnelles FN si: Elle est en 2FN, Il nexiste aucune DF entre deux attributs non clé primaire (tout attribut n'appartenant pas à une clé ne dépend pas d'un attribut non-clé.) Une relation est en 3FN si elle est en 2FN et si tous les attributs qui nappartiennent 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. Une relation est en 2FN si elle est en 1FN et si tout attribut nappartenant 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é. Cest la phase didentification des clés. Cette étape est très importante vu quelle é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é. ) 2FN et 3FN Normalisation

66 M. BENJELLOUN Bases de données relationnelles - 66 Exemple : Soit la relation concernant des dons de bienfaiteurs pour une association. NomVilleRueMontantDate PicsouDisneyPas de sous10 3/10/99 PicsouDisneyPas de sous12 13/1/01 PicsouDisneyPas de sous30 23/7/03 DonaldDisneyBcp de sous50015/6/05 redondanc e Supposer Picsou change d'adresse (VILLE = Mons, RUE = Houdain ). Risque de ne pas corriger toutes les lignes concernées. D'où BD incohérente 2e ET 3e FORME NORMALE Difficulté maintenance intégrité. Normalisation

67 M. BENJELLOUN Bases de données relationnelles - 67 Problème dit «Anomalies de Mise à Jou r»: Cause: Les Redondances d'informations sont sources d'Incohérences Solution: On aurait aimé la structure suivante: PERSONNE DONS NomVilleRue PicsouDisneyPas de sous DonaldDisneyBcp de sous NomMontantDate Picsou10 3/10/99 Picsou12 13/1/01 Picsou30 23/7/03 Donal d 50015/6/05 L'adresse de Picsou figure une seule fois. On a séparé des informations distinctes (sur la personne, sur les dons). «Le Bon Attribut au Bon Endroit» Normalisation

68 M. BENJELLOUN Bases de données relationnelles - 68 Normalisation du schéma - élimination des redondances internes 1 fait 1 donnée DEPARTEMENT IdDepart Localisation EMPLOYE NumEmp Nom dépend N Localisation ne dépend que de DEPARTEMENT EMPLOYE NumEmp Nom DEPARTEMENT Localisation Normalisation 2FN

69 M. BENJELLOUN Bases de données relationnelles - 69 Soit la table décrivant des fournisseurs d'une société Autre Exemple : NOM_FOURVILLECD_POSTALPIECEQTE_EXP F1Mons7000 Bureau 300 F1Mons7000 Ecran 500 F1Mons7000Armoire20 F2Charleroi6000 Bureau 500 F2Charleroi6000 Ecran 600 F3Keumiée5060 Ecran 500 FOUR1 Quelques anomalies: Redondances. Difficulté de maintenance. Mémoriser ladresse fournisseur impossible si pas de pièce fournie. e.g. Suppression de toutes les pièces fournies par F2, fait perdre aussi son adresse. deux tables distinctes : fournisseur (info fournisseur) pièces fournies. Normalisation

70 M. BENJELLOUN Bases de données relationnelles - 70 On décompose donc (PROJECTION) EXPEDITION NOM_FOURPIECEQTE_EXP F1Bureau300 F1Ecran500 F1Armoire20 F2Bureau500 F2Ecran600 F3Ecran500 NOM_FOURVILLECD_POSTAL F1Mons7000 F2Charleroi6000 F3Keumiée5060 F4Mons7000 FOUR2 NOM_FOURVILLECD_POSTALPIECEQTE_EXP F1Mons7000Bureau300 F1Mons7000Ecran500 F1Mons7000Armoire20 F2Charleroi6000Bureau500 F2Charleroi6000Ecran600 F3Keumiée5060Ecran500 FOUR1 Normalisation 2FN

71 M. BENJELLOUN Bases de données relationnelles - 71 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). Normalisation 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 NOM_FOURVILLECD_POSTAL F1Mons7000 F2Charleroi6000 F3Keumiée5060 F4Mons7000 FOUR2

72 M. BENJELLOUN Bases de données relationnelles - 72 On décompose encore la relation FOUR2 FOUR3 NOM_FOURVILLE F1Mons F2Charleroi F3Keumiée F4Mons COMMUNE VILLECD_POSTAL Mons7000 Charleroi6000 Keumiée5060 On dit qu'on est passé à la 3e Forme Normale Normalisation 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 COMMUNE EXPEDITION NOM_FOURVILLE CD_POSTAL NOM_FOURPIECEQTE_EXP 3FN

73 M. BENJELLOUN Bases de données relationnelles - 73 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: ProjetNumProjetNumEmployéFonctionNomEmployé Pourquoi? 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é ProjetNumProjetNumEmployéFonction NumEmployé est à la fois clé primaire et clé externe dans Projet Normalisation

74 M. BENJELLOUN Bases de données relationnelles - 74 On peut aussi étudier d'autres relations comme: CLIENTN°clientnomprénomdate de naissancerueville Cette relation est en 2FN par contre la suivante n'est pas en 2FN. COMMANDE_PRODUITN°produitquantitéN°fournisseurville Normalisation Pourquoi? Relation en 2FN mais pas en 3FN EmployéNumEmployéNomEmployéNumServiceNomService Pourquoi? Un autre exemple: COMPAGNIEVolAvionPilote Pourquoi?

75 M. BENJELLOUN Bases de données relationnelles - 75 Contraintes dintégrité 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)) ; 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 : Contraintes dintégrité statiques : 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. 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; Les contraintes de domaine et de non-nullité sont gérées en langage SQL, lors de la création de la table. Après MLD

76 M. BENJELLOUN Bases de données relationnelles - 76 Intégrité de référence : Linté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 lintégrité des clés étrangères dont les valeurs sont NULL ou des valeurs de la clé primaire. Lobjectif des clés étrangères étant de repérer un enregistrement dans différents espaces, des contraintes dintégrité référentielle doivent assurer la validité des références entre tables. Lintégrité référentielle signifie quil ny 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] C. I.

77 M. BENJELLOUN Bases de données relationnelles - 77 Lintégrité relationnelle contrôle la sémantique et gère les contraintes de type if…then… Voici lexemple dune règle dintégrité qui assure la suppression du numéro de téléphone dune 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 ; Intégrité de relationnelle : C. I.

78 M. BENJELLOUN Bases de données relationnelles - 78 Contraintes dintégrité fonctionnelle Les contraintes dintégrité fonctionnelles ( CIF ) contrôlent la détermination absolue dune entité participant à une association du modèle conceptuel par une ou plusieurs autres participant à la même association. Ce type de contrainte permet donc didentifier 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 dattributs au sein dune même relation Lidentification des CIFs permet de corriger certaines erreurs de conception de bases de données relationnelles. En effet, si la connaissance dune ou plusieurs entités dune association conduit à la détermination complète dune autre entité participant à la même association, on peut considérer quil y a redondance dinformation dans le modèle.

79 M. BENJELLOUN Bases de données relationnelles - 79 PersonnesDiplômes 0N0N 0N0N ID_Personne Nom Prénom Sexe Adresse Téléphone Code_diplôme Titre_diplôme Abréviation Obtenir Année_d_obtention Universités Code_université Nom_université Abréviation 0 N CIF Si on imagine re-normaliser les diplômes de telle manière que chaque université possède lexclusivité du diplôme quelle délivre, dans ce cas, la connaissance du diplôme implique celle de luniversité. Il y a donc une contrainte dintégrité fonctionnelle entre lentité Diplômes et lentité Universités. Personnes 0N0N 0N0N Obtenir Année_d_obtention Universités Diplômes Délivrer 0N0N 0101 CIF

80 M. BENJELLOUN Bases de données relationnelles ,11,1 1,N1,N Activité Cumul Nb H dactivité 0,N0,N 0,N0,N Chauffeur Matri_Chauf. Camion No_Camion Conduire Mois 0,N0,N Trouver un MCD équivalent à ce MCD : Activité Cumul Nb H dactivité Chauffeur Matri_Chauf. Camion No_Camion Conduire Mois 1,11,1 1,N1,N 0,N0,N 0,N0,N Un camion nayant quun chauffeur, lactivité du chauffeur par camion est lactivité du camion CIF

81 M. BENJELLOUN Bases de données relationnelles ,11,1 2 Relation 4 3 Entité 2 Entité 1 CIF 1 Principe de simplification par les contraintes dintégrité fonctionnelles Relation binaire non porteuse de données avec 1,1 sur lune des pattes 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. CIF

82 M. BENJELLOUN Bases de données relationnelles ,11,1 0,N0,N 1,N1,N 1,N1,N Chauffeur Matri_Chauf. Camion No_Camion 0,N0,N 1,N1,N 0,N0,N 1,1 Client N°Client Type de Client Type Activité Cumul Nb H dactivité Affecter 1,11,10,N0,N 1,11,1 0,N0,N 1,N1,N 1,N1,N Chauffeur Matri_Chauf. Camion No_Camion 0,N0,N 1,N1,N 0,N0,N 1,1 Client N°Client Type de Client Type Activité Cumul Nb H dactivité Affecter 1,11,10,N0,N CIF

83 M. BENJELLOUN Bases de données relationnelles - 83 Les associations transitives Considérons le modèle suivant : Lassociation binaire qui relie lentité « CONTRAT » et lentité « PROPRIETAIRE» doit être ôtée du modèle car on peut retrouver le propriétaire à partir des associations « Concerner » et « Appartenir ». Il sagit dune association transitive. CIF

84 M. BENJELLOUN Bases de données relationnelles - 84 Gestion FPMS_Etudiants La FPMs veut ré-informatiser son système d'information qui gère les étudiants, Groupes détudiants (classes)(1 er _A,..., 3 eme _IG,…). Sachant que : Un étudiant est caractérisé par [no. matricule, nom, prénom, date de naissance, adresse, ]. Une classe est caractérisée par le nom de la classe (p.ex 1 er ) et par une indication du groupe ou spécialité (P.ex : 1 er _A, 4 eme _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, 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 à lexamen. 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.).

85 M. BENJELLOUN Bases de données relationnelles - 85 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 à ladresse de létudiant, ou connaissant la localité le code postal est capté automatiquement.

86 M. BENJELLOUN Bases de données relationnelles - 86 Le Modèle Logique des Données (MLD) Définition Le niveau logique, qui se base sur le modèle conceptuel des données, introduit la notion des tables logiques, et constitue donc le premier pas vers les tables des SGBD. Passage du MCD au MLD 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… Analyse MCD MLD Réel Perçu Schéma Conceptuel Schéma Logique

87 M. BENJELLOUN Bases de données relationnelles - 87

88 M. BENJELLOUN Bases de données relationnelles - 88 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 EMPLOYE (Mat, Nom, Fonc) Identifant Clé primaire PropriétéAttribut modèle conceptuel modèle logique

89 M. BENJELLOUN Bases de données relationnelles - 89 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.

90 M. BENJELLOUN Bases de données relationnelles - 90 Une clé étrangère est une colonne constituée de lidentifiant dune autre table (et joue le rôle de référence à une ligne de cette table) 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 #. (contrainte référentielle)

91 M. BENJELLOUN Bases de données relationnelles - 91 (1,1) - (0,N) : se fait comme une relation un-à-plusieurs normale. EMPLOYE Matricule Nom Fonction DEPARTEMENT Nom Adresse Occupe N EMPLOYE MatriculeNomFonctionNomDpt DEPARTEMENT NomAdresse

92 M. BENJELLOUN Bases de données relationnelles - 92 Relation plusieurs-à-plusieurs (1,N) - (1,N) : (0,N) - (0,N) : (0,N) - (1,N) CLIENT Cde Client Nom Adresse PRODUIT Référence Désignation Prix Unitaire COMMANDER Quantité 1,N CLIENT(CdCli, Nom, Adresse) PRODUIT(Ref, Des, Prix) COMMANDER(#CdCli, #Ref, Quant) Clé primaire Clés étrangères

93 M. BENJELLOUN Bases de données relationnelles ,N : La même règle s'applique COMM CdCliRef CLIENT CdCli NomAdresse PRODUIT RefDes Prix CLIENT Cde Client Nom Adresse PRODUIT Référence Désignation Prix Unitaire COMMANDER Quantité 0,N Qu

94 M. BENJELLOUN Bases de données relationnelles - 94 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). !

95 M. BENJELLOUN Bases de données relationnelles - 95 Disposer 0,11,1 CLIENT Numéro Nom Prénom Adresse Code_postal Localité Carte_membre No_Carte Type_Abonnement Date_création CLIENT NoClient Nom Prénom Adresse Cde_postal Localité Carte_membre No_Carte NoClient Type_Abonnement Date_création Disposer Relation (0,1) – (0,1) : Idem que précédemment avec choix. Si lassociation contient elle même des propriétés, alors >>> ajouter avec la clé étrangère.

96 M. BENJELLOUN Bases de données relationnelles - 96 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. Acte Code-acte Désignation 0-N Médecin Nom-médecin Adresse Pratiquer Lieu Patient N°Sec.Soc Nom 1-N Medecin(Nom-Med, Adr) Acte(Cd-Acte, Des) Patient(NSS, Nom-Pat) Pratiquer(#Nom-Med, #Cd-Acte, #NSS, Lieu)

97 M. BENJELLOUN Bases de données relationnelles - 97 Résumé : A A-B B Relation binaire : (1,1) – (1,N) et (1,1) - (0,N) :A ( id_A, a1, a2, …, #id_B) (1,1) - (0,N) B ( id_B, b1,b2,…) (1,N) - (1,N), (0,N) - (1,N) : A ( id_A, a1, a2, …,) (0,N) - (0,N) 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.

98 M. BENJELLOUN Bases de données relationnelles - 98 Relation ternaire A-B-C A B 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,…) -N

99 M. BENJELLOUN Bases de données relationnelles - 99 EXCE :

100 M. BENJELLOUN Bases de données relationnelles - 100

101 M. BENJELLOUN Bases de données relationnelles 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 1,N1,1 CLIENT No_Client Nom Prénom Adresse Code_postal Localité Facture No_Facture Date Porter 1,N 0,N0,N Article No_Article Libellé Prix_Unitaire Quantité Obtenir CLIENT No_Client Nom Prénom Adresse Code_postal Localité Facture N°_Facture N°Client Date Article No_Article Libellé Prix_Unitaire Porter N° Facture No_Article Quantité

102 M. BENJELLOUN Bases de données relationnelles Exercice _ Obélix La société Obélix et Compagnie fournit des menhirs dans le monde entier et gère les commandes à laide dun micro-ordinateur. Exemple dune commande : Obélix et Compagnie Livreur de menhirs Village gaulois Date commande: Nº commande: 4711 Nº client012Nom client:BISCORNUS Prénom:M. Adresse:BABAORUM CodeLibelléQuantitéPrix unitaire 12MENHIR CLASSIC MENHIR SE/ MENHIR II FX12500 Donner : Le MCD Les cardinalités et leur signification. Le Modèle des données.

103 M. BENJELLOUN Bases de données relationnelles Rep_ Obélix Schéma Entité-Association COM_PRO CLIENTCOMMANDE PRODUIT CLI_COM 0,N1,1 1,N 0,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. Lassociation CLI_COM est du type (1,N). Lassociation 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)

104 M. BENJELLOUN Bases de données relationnelles Modèle relationnel textuel : Client(NoClient, Nom, Prénom) Commande (NoCde, DateCde, NoClient#) Produit(RefPdt, Désignation, Prix) Ligne(NoCde#, RefPdt#, Qté) ClientCommande NoClientNomPrénomNoCdeDateCdeNoClient# 1LassusAnnick10014/04/ MundubeltzArmelle10114/04/ ChauletBernadette ProduitLigne RefPdtDésignationPrixen NoCde#RefPdt#Qté VE45Vélo150100VE451 VE32Kit 2 roues30100VE321 VE21Kit éclairage15101VE212

105 M. BENJELLOUN Bases de données relationnelles NumClientNomVille 001AlbertBruxelles 002FrancoisLiège 003BraboAnvers NumClientNumPieceQuantite NumPieceDescr.Cout 0001Table Chaise Armoire1.000 CLIENT PRODUIT COMMANDE des relations existent entre les tableaux d une BD, ici: Albert de Bruxelles a commandé 3 chaises à 300 EUR

106 M. BENJELLOUN Bases de données relationnelles CLIENT NumCli Nom Adresse CONTRAT NumCtr Type Date ACCIDENT NumAcc Date (Montant) VEHICULE NumVeh Marque Modèle Année Cylindrée APPARTIENT SIGNE COUVERT CONCERNE 0-N N N (1-N)

107 M. BENJELLOUN Bases de données relationnelles VEHICULE NumVeh...NumCli CONTRAT NumcliNumCtrTypeDate CONCERNE NumVehNumAcc ACCIDENT NumAccDate(Montant) NumCtr CLIENT NumCliNom Adresse

108 M. BENJELLOUN Bases de données relationnelles Exemple - SQL create table CLIENT ( NumClichar (12) not null, Nomchar (38) not null, Adressechar (60)not null, primary key(NumCli) ) create table CONTRAT ( NumClichar (12)not null, NumCtrchar (8)not null, Typedecimal (4) not null, Datedate not null primary key(NumCtr) Foreign key(NumCli) references CLIENT ) create tableVEHICULE ( NumVehchar (16)not null, Marquechar (30)not null, Modelechar (30)not null, Annee decimal (4)not null, Cylindree decimal (6)not null, NumCli char (12)not null, Ncli char (12)not null, NumCtr decimal (8)not null, primary key (NumVeh), unique (Numcli, NumCtr), Foreign key (Numcli) references CLIENT, Foreign key (Numcli, NumCtr) references CONTRAT )

109 M. BENJELLOUN Bases de données relationnelles create table ACCIDENT ( NumAccchar (10)not null, Datedatenot null, Montantdecimal (6), not null, primary key(NumAcc)) create table CONCERNE ( NumVehchar (16) not null, NumAccchar (10) not null, primary key(NumVeh, NumAcc), foreign key(NumVeh) references VEHICULE, foreign key(NumAcc) references ACCIDENT)

110 M. BENJELLOUN Bases de données relationnelles Access

111 M. BENJELLOUN Bases de données relationnelles - 111

112 M. BENJELLOUN Bases de données relationnelles 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.

113 M. BENJELLOUN Bases de données relationnelles On retrouve dans le DDL les commandes principales suivantes: CREATE TABLE Création d'une table CREATE INDEXCréation d'un index CREATE VIEW Création dune vue ALTER TABLE Modification de la structure DROP TABLE Effacement d'une table On retrouve dans le DML les commandes principales suivantes: INSERT Insérer un tuple UPDATE Modifier un tuple DELETE Effacer un tuple SELECT Choisir un ensemble de tuples

114 M. BENJELLOUN Bases de données relationnelles 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 SMALLINTentier (16 bits) INTEGERentier (32 bits) DECIMAL (m,n)décimaux de m chiffres (dont n après la virgule) FLOATréels flottants CHAR (n)chaîne de n caractères VARCHARchaîne variable dau plus n caractères DATEdates (année, mois et jour) TIMEinstants (heure, minute, seconde)

115 M. BENJELLOUN Bases de données relationnelles 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.

116 M. BENJELLOUN Bases de données relationnelles Exercice "LabDB" Obtenir 1,N1,1 CLIENT No_Client Nom Adresse Facture No_Facture Date Porter 1,N 0,N0,N Article No_Article Libellé Prix_Unitaire Quantité Obtenir 1,N1,1 CLIENT No_Client Nom Boite_Post Rue Code_postal Localité Facture No_Facture Date Porter 1,N 0,N0,N Article No_Article Libellé Prix_Unitaire Quantité

117 M. BENJELLOUN Bases de données relationnelles Obtenir CLIENT No_Client Nom Boite_Post Rue Code_postal Localité Facture N°_Facture #N°Client Date Article No_Article Libellé Prix_Unitaire Porter N° Facture No_Article Quantité Obtenir 1,N1,1 CLIENT No_Client Nom Boite_Post Rue Code_postal Localité Facture No_Facture Date Porter 1,N 0,N0,N Article No_Article Libellé Prix_Unitaire Quantité

118 M. BENJELLOUN Bases de données relationnelles Création dune table CREATE TABLE Client (No_ClientCHAR (4), NomCHAR (12), Bte_Post INTEGER, RueCHAR(30), Code_PINTEGER, LocaliteCHAR (20) ); create table Aperçu des opérations les plus courantes CLIENT No_Client Nom Boite_Post Rue Code_postal Localité

119 M. BENJELLOUN Bases de données relationnelles Identifiant primary key CREATE TABLE Client ( No_ClientCHAR (4) NOT NULL, NomCHAR (12), … Code_PINTEGER, LocaliteCHAR (20), PRIMARY KEY (No_Client) ); not null CLIENT No_Client Nom Boite_Post Rue Code_postal Localité

120 M. BENJELLOUN Bases de données relationnelles Facture N°_Facture #N°Client Date Article No_Article Libellé Prix_Unitaire Porter N° Facture No_Article Quantité CREATE TABLE Porter( No_FactureCHAR (8) NOT NULL, No_ArticleCHAR (8) NOT NULL, QuantitéINTEGER, PRIMARY KEY (No_Facture, No_Article), ); FOREIGN KEY (No_Facture) REFERENCES Facture, FOREIGN KEY (No_Article) REFERENCES Article foreign key Clé étrangère

121 M. BENJELLOUN Bases de données relationnelles 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); CLIENT No_Client Nom Prenom Boite_Post Rue Code_postal Localité Détruire un index DROP INDEX PR-Cli1

122 M. BENJELLOUN Bases de données relationnelles Consultation dune BD SELECTNom, Localite précise les valeurs (colonnes, valeurs calculées) qui constituent chaque ligne du résultat FROMClient indique les tables desquelles le résultat tire ses valeurs WHERELocalite = Charleroi donne la condition de sélection que doivent satisfaire les lignes qui fournissent le résultat

123 M. BENJELLOUN Bases de données relationnelles 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; Manipulation des données :

124 M. BENJELLOUN Bases de données relationnelles SELECT ID_Personnel, Nom, Code_Postal FROM Client Extraction

125 M. BENJELLOUN Bases de données relationnelles Extraction SELECT * FROM Client

126 M. BENJELLOUN Bases de données relationnelles Extraction SELECT ID_Personnel, Nom, Code_Postal FROM Client WHERE Nom = Bros

127 M. BENJELLOUN Bases de données relationnelles AVANT DISTINCT SELECT DISTINCT Localite FROMClient WHERECategorie = 1 APRES SANS DISTINCT APRES AVEC DISTINCT Le DISTINCT permet d'obtenir une liste qui ne contient qu'une fois chaque Localite.

128 M. BENJELLOUN Bases de données relationnelles Conditions de sélection SELECTNom, Compte FROMClient WHERELocalite = Charleroi AND Compte >= 0 and or not () SELECT TableClient.Nom, TableClient.compte FROM TableClient WHERE (((TableClient.Localite)='Charleroi') AND ((TableClient.compte)>=0)); Access

129 M. BENJELLOUN Bases de données relationnelles EXCE : Trouver les N°_Com avec leur date de tous les Clients de Charleroi. Facture N°_Facture #N°Client Date

130 M. BENJELLOUN Bases de données relationnelles Sous-requêtes SELECTNo, Date FROMCommande WHERENoClient in (SELECTNo FROMClient WHERELocalite = Charleroi) AVANT Facture N°_Facture #N°Client Date

131 M. BENJELLOUN Bases de données relationnelles 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.

132 M. BENJELLOUN Bases de données relationnelles SELECT* FROMClient WHERELocalite IN ( SELECTLocalite FROMClient WHEREClient.No = 3) Les clients qui habitent dans la même localité que le client n°2

133 M. BENJELLOUN Bases de données relationnelles Différents opérateursDifférentes fonctions = IN NOT IN CONTAIN DOES NOT CONTAIN COUNT SUM AVG MIN MAX On peut également se servir de mots de contrôle tels: BETWEEN, NULL, LIKE, EXISTS, IN, ALL, SOME, etc.. COUNT(*)nombre de lignes trouvées AVG(colonne)moyenne des valeurs de la colonne SUM(colonne)somme des valeurs de la colonne MIN(colonne)minimum des valeurs de la colonne MAX(colonne)maximum des valeurs de la colonne

134 M. BENJELLOUN Bases de données relationnelles Données calculées et duplication de lignes SELECT COUNT (NoClient) FROM Commande nombre de commandes !!! distinct APRES 9 SELECT COUNT (DISTINCT NoClient) FROM Commande nombre de commandes !!! APRES 6 nombre de commandes ???

135 M. BENJELLOUN Bases de données relationnelles 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.

136 M. BENJELLOUN Bases de données relationnelles 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.


Télécharger ppt "M. BENJELLOUN 2006-07 Bases de données relationnelles - 1 Les Bases de données relationnelles Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique."

Présentations similaires


Annonces Google