Bases de données
Transcription
Bases de données
Introduction aux bases de données Polytech Marseille Département Matériaux 3ème année 2014-2015 Informations Volume horaire : 6h CM et 6h TD/TP. Présence obligatoire. Évaluation : examen écrit. http://nicolas.durand.perso.luminy.univ-amu.fr/pub/ Bureau A206 2 Objectifs du cours Introduction aux bases de données : – Généralités – Modèle relationnel – Initiation à la conception – Bases du langage SQL (création, manipulation et interrogation) – Utilisation de MySQL 3 Bibliographie Supports du cours, année 2013-2014 : http://odile.papini.perso.luminy.univ-amu.fr/ sources/BDMAT.html GARDARIN G., Bases de données, Eyrolles, 2003. DATE C., Introduction aux bases de données, 8ème édition, Vuibert, 2004. Jacques LE MAITRE, Université du Sud Toulon-Var http://lemaitre.univ-tln.fr/supports-cours.htm 4 Généralités 5 Définitions "Une base de données (BD) est un ensemble d’informations archivées dans des mémoires accessibles à des ordinateurs en vue de permettre le traitement des diverses applications prévues pour elles." Les bases de données sont gérées par des logiciels spécialisés appelés "systèmes de gestion de bases de données" (SGBD). 6 A quoi sert une base de données ? (1) Stocker les données de manière persistante – Les données ne sont pas volatiles et reste une fois les traitements terminés Accéder rapidement aux données et permettre de retrouver aisément les données – Les données sont rangées de manière ordonnée Partager les données – Plusieurs utilisateurs peuvent accéder simultanément aux données Etc. Où trouvons nous des bases de données ? Bibliothèque : livres, emprunts, … Université : étudiants, enseignants, cours, … Sécurité Sociale : dossiers, remboursements, … Cabinets médicaux : dossiers patients, traitements, … Sites de vente sur Internet : clients, produits, commandes, … Banques : clients, comptes, … Voyages : système de réservation de places d’avion et de train Sites Web personnels, … Et généralement en entreprise (vital pour la bonne marche des entreprises (RH, stocks, …) 8 Volume de quelques grandes bases de données Amazon (> 42 téraoctets) YouTube (> 45 téraoctets) AT&T (323 téraoctets) World Data Centre for Climate (220 téraoctets + 6 pétaoctets de données additionnelles) Google (... Po ? Eo ?) 1 gigaoctets (Go) = 1024 mégaoctets (Mo) 1 téraoctet (To) = 1024 gigaoctets (Go) 1 pétaoctet (Po) = 1024 téraoctets (To) 1 exaoctet (Eo) = 1024 pétaoctets (Po) A quoi ressemble une base de données ? (1) Petit exemple : extrait d'une base de données d'une bibliothèque AUTEUR numAuteur nom prenom dateNaissance OUVRAGE numOuvrage titre date ECRIT #numAuteur #numOuvrage A quoi ressemble une base de données ? (2) ECRIT AUTEUR numAuteur nom prenom dateNaissance numAuteur numOuvrage 12354 Zola Emile 02/04/1840 12354 1860113156148 15789 Maupassant Guy 05/08/1850 15789 1561183795267 19355 Camus Albert 07/11/1913 12354 2826158319643 OUVRAGE numOuvrage titre date 1860113156148 Germinal 1885 1561183795267 2826158319643 Une vie L'Assommoir 1883 1878 De quoi est composée une base de données ? Une BD relationnelle est une collection de données structurées en relations. – Relations/Tables : un ensemble de données (exemple : OUVRAGE) – Attributs/Champs/Colonnes d'une relation (exemple : numOuvrage, titre, date) – n-uplets/Tuples/Enregistrements/Lignes : un n-uplets est une liste de valeurs d'une ligne d'une relation (exemple : <1860113156148, Germinal, 1885> ) 12 A quoi sert une base de données ? (2) ECRIT AUTEUR numAuteur nom prenom dateNaissance numAuteur numOuvrage 12354 Zola Emile 02/04/1840 12354 1860113156148 15789 Maupassant Guy 05/08/1850 15789 1561183795267 19355 Camus Albert 07/11/1913 12354 2826158319643 OUVRAGE numOuvrage titre date 1860113156148 Germinal 1885 1561183795267 2826158319643 Une vie L'Assommoir 1883 1878 Nom et date de naissance de chaque auteur ? Nombre d'ouvrages écrits par chacun des auteurs ? Systèmes de Gestion de Bases de Données SGBD : Systèmes de Gestion de Bases de Données (DataBase Management Systems - DBMS) Outil logiciel spécialisé servant à gérer plusieurs bases de données. Gérer l’insertion, la modification, la suppression et la recherche efficace de données dans une grande masse d’informations partagée par de multiples utilisateurs. MySQL, PostgreSQL, ORACLE, SQLServer, DB2, … 14 Caractéristiques des SGBD Persistance des données – Les données sont persistantes si elles survivent à l’exécution des programmes (et pas seulement si elles sont sauvegardées sur un support persistant) Centralisation des informations Efficacité des accès Repose sur des algorithmes performants (transparents pour l’utilisateur) Cohérence des données Vérification de contraintes d’intégrité. 15 Caractéristiques des SGBD Partage des données Un SGBD permet à plusieurs personnes d’accéder simultanément aux données tout en donnant l’illusion d’être seul exploitant Sécurité des données Chaque utilisateur possède certains droits sur les données Reprise sur panne Restauration de la BD dans un état cohérent 16 Caractéristiques des SGBD Langage de requêtes Consultation/modification des données de la BD à l’aide d’un langage Indépendance physique Un SGBD permet de manipuler des données sans se soucier de la façon dont sont stockées physiquement ces données Indépendance logique Un SGBD permet de présenter sous différentes vues les mêmes données (différents groupes de travail) 17 Langage d’interrogation et de manipulation de bases de données Définition et manipulation d’une BD via un langage déclaratif. Le plus connu et le plus utilisé de ces langages est SQL (Structured Query Langage). Modes d’utilisation : intégré dans un langage hôte (C, Java, PHP, …), autonome. 18 SQL Exemple 1 AUTEUR numAuteur nom prenom dateNaissance 12354 Zola Emile 02/04/1840 15789 Maupassant Guy 05/08/1850 19355 Camus Albert 07/11/1913 Nom et date de naissance de chaque auteur ? SELECT nom, dateNaissance FROM AUTEUR; Réponse : <Zola, 02/04/1840>, <Maupassant, 05/08/1850> et <Camus, 07/11/1913> 19 SQL Exemple 2 ECRIT AUTEUR numAuteur nom prenom dateNaissance numAuteur numOuvrage 12354 Zola Emile 02/04/1840 12354 1860113156148 15789 Maupassant Guy 05/08/1850 15789 1561183795267 19355 Camus Albert 07/11/1913 12354 2826158319643 Nombre d'ouvrages écrits par chacun des auteurs ? SELECT nom, COUNT(numOuvrage) FROM Auteur LEFT JOIN Ecrit ON Auteur.numAuteur=Ecrit.numAuteur GROUP BY nom; Réponse : <Zola, 2>, <Maupassant, 1>, <Camus, NULL> Architecture globale selon l'utilisation On distingue 3 grands types d’architecture selon l'utilisation : Architecture centralisée, Architecture client-serveur, Architecture trois-tiers. 21 Architecture centralisée 22 Architecture client-serveur Serveur : - logiciel installé sur l'ordinateur où sont stockées les données - il attend des requêtes des clients, accède à la base de données pour exécuter la requête du client et lui envoyer une réponse. Client : logiciel installé sur un ordinateur qui se connecte par l'intermédiaire d'un réseau au serveur pour effectuer une requête. 23 Architecture client-serveur 24 Architecture trois tiers 25 Qui intervient sur une base de données ? Administrateur (une personne ou une équipe) : conçoit la BD et la fait évoluer. fixe les paramètres de l’organisation physique de façon à optimiser les performances. gère les droits d’accès et les mécanismes de sécurité. Développeurs/Programmeurs : construisent les programmes qui alimentent ou exploitent la BD en vue d’applications particulières. utilisent le langage de bases de données du SGBD, éventuellement couplé avec un langage de programmation classique. Utilisateurs finaux : accèdent à la BD au travers des outils construits par les programmeurs d’applications ou pour les plus avertis au travers du langage de 26 requêtes. Quel SGBD choisir ? Différents facteurs/critères : la politique sécuritaire le budget à disposition la politique de l'entreprise concernant ses fournisseurs les compétences déjà acquises en terme de développement et d'administration, et au besoin le prix de la formation l'attente vis-à-vis du support technique … la richesse fonctionnelle du SGBD le système d'exploitation hébergeant les ressources (disques, mémoire, CPU(s), transactions par secondes, nombre de connexions simultanées) 27 … Bref historique Jusqu'aux années 60 : organisation classique (systèmes de gestion de fichiers) Fin des années 60 : apparition des 1er SGBD (systèmes réseaux et hiérarchiques) A partir de 1970 : 2ème génération de SGBD (systèmes relationnels) Fin 70 et années 1980 : apparition des SGBDR sur le marché (SystemR d'IBM, ORACLE, Ingres, Informix, DB2, dBase, Sybase, …) Début 90 : 3ème génération de SGBD - systèmes orientés objets (Gemstone, O2, Orion, Objectstore, Versant, Matisse...) Aujourd’hui : relationnel-objet, semi-structuré, multimédia,28… Petite chronologie 1970……………… 1978……….. E.F. Codd DB2 (BD relationnelle) ORACLE 1981……… 1984……. Informix Sybase IBM langage SEQUEL 1986……………. Norme SQL86 1989……………… SQLServer (Microsoft) 1996……………. PostgreSQL MySQL (public) 1999…….….. Norme SQL99 2000…............…… SQLite 1.0 2003……………. Norme SQL2003 29 Modèle relationnel 30 Modèle relationnel E.F. CODD en 1970 (IBM) Basé sur des fondements mathématiques Algèbre relationnelle Logique des prédicats Organisation des données en relations (tables) n-uplets (ou tuples ou enregistrements ou lignes) attributs (ou champs ou colonnes) 31 BD Relationnelle Une Base de Données Relationnelle (BDR) est constituée par : un ensemble de domaines, un ensemble de relations, un ensemble de contraintes d’intégrité. 32 Domaine Un domaine est un ensemble de valeurs atomiques Domaines prédéfinis chaîne de caractères, entier, flottant, … Domaines définis en extension couleur = {"rouge", "vert", "bleu", "jaune"} en intention mois = {m | m ∈ entier et 1 ≤ m ≤ 12} 33 Relation Une relation est identifiée par un nom et est constituée par : son schéma et son extension. Le schéma d’une relation R est une expression de la forme (A1:D1, A2:D2,…, An:Dn) chaque Ai est un attribut ; chaque Di est un domaine. L’extension d’une relation R de schéma (A1:D1, A2:D2,…, An:Dn) est un ensemble de n-uplets <a1,…,an> où, pour chaque ai, on a ai∈Di 34 Relation : Exemple Nom AUTEUR Schéma (numAuteur:Entier, nom:Chaîne, prenom:Chaîne, dateNaissance:date) Extension <12354, Zola, Emile, 02/04/1840> <15789, Maupassant, Guy, 05/08/1850> <19355, Camus, Albert, 07/11/1913> 35 Relation : Exemple Relation (table) : AUTEUR noms des attributs numAuteur nom prenom dateNaissance 12354 Zola Emile 02/04/1840 15789 Maupassant Guy 05/08/1850 19355 Camus Albert 07/11/1913 n-uplets 36 Contraintes d’intégrité Une contrainte d’intégrité (CI) est une contrainte qui s’applique sur les données de la BD et qui doit être vérifiée à tout instant. Une BD dont les données ne vérifient pas une ou plusieurs CI est dite incohérente. Il existe plusieurs types de CI : les contraintes de domaine les clés (primaires ou étrangères) les autres. 37 Clé primaire Clé primaire d’une relation Un ou plusieurs attributs permettant d’identifier, de façon unique, chaque n-uplets de la relation Remarque : il peut éventuellement exister plusieurs clés pour une même relation. Dans ce cas, il faut : (1) Identifier les clés candidates (2) Choisir une clé primaire parmi les clés candidates Exemples : Auteur(numAuteur, nom, prenom, dateNaissance) Personne(idPersonne, nom, prenom, dateNaiss, numSecuSociale) Clé primaire 1 clé candidate 38 Clé étrangère Auteur(numAuteur, nom, prenom, dateNaissance) Ecrit(#numAuteur, #numOuvrage) L'attribut "numAuteur" de Ecrit, fait référence à "numAuteur" de Auteur. L'ensemble des valeurs de "numAuteur" dans Ecrit, est un sous-ensemble de (ou est égal à) l'ensemble des valeurs de "numAuteur" dans Auteur. (Les noms de ces 2 attributs n'ont pas à être identiques. Mais leurs domaines doivent être identiques.) 39 Exemple : bibliothèque AUTEUR(numAuteur, nom, prenom, dateNaissance) OUVRAGE(numOuvrage, titre, date) ECRIT numAuteur numOuvrage 12354 1860113156148 15789 1561183795267 12354 2826158319643 AUTEUR numAuteur nom prenom dateNaissance 12354 Zola Emile 02/04/1840 15789 Maupassant Guy 05/08/1850 19355 Camus Albert 07/11/1913 OUVRAGE numOuvrage titre date 1860113156148 Germinal 1885 1561183795267 2826158319643 Une vie L'Assommoir 1883 1878 ECRIT(#numAuteur, #numOuvrage) 40 Contraintes d’intégrité Précisions Le SGBD refusera toute modification de la BD qui violerait une ou plusieurs CI Il doit obligatoirement y avoir une (et une seule) clé primaire par relation Il n’est pas obligatoire de déclarer des clés étrangères, mais c’est recommandé. 41 Exemples de contraintes : Université Contraintes de domaine : "La fonction d’un enseignant à l’université prend sa valeur dans l’ensemble {Vacataire, Moniteur, ATER, MCF, Professeur, PRAG, PAST}" Contraintes d'unicité : "Un département a un nom unique (il n’y a pas deux départements de même nom)" Contraintes générales : "Un même examen ne peut pas avoir lieu dans deux salles différentes à la même date et à la même heure" 42 Initiation à la conception de bases de données 43 Motivation Voici un extrait du contenu de la base de données d'un groupe de bibliothèques : ISBN Bibliothèque Titre Editeur Nbre Eyrolles 2 Vuibert 3 2-100 Luminy C++ 2-101 St Charles Java 2-102 Luminy Maths Dunod 2-100 Toulon C++ 2 Eyrolles 1 A votre avis, est-ce que cette base de données a été bien conçue ? 44 Intérêt de la conception Cas complexes Évite la redondance des données Optimise les futurs requêtes Permet une modification et une maintenance aisée Permet une ré-exploitation plus facile 45 Étapes Analyser les besoins Modèle Conceptuel de Données (MCD) – Schéma entité-association, contraintes d'intégrité Valider le MCD avec le client/expert/utilisateurs/... Transformation en Modèle Logique de Données (MLD) – Schéma relationnel, contraintes d'intégrité 46 Analyse du problème et des besoins Quelles sont les informations à stocker ? Comment représenter ces informations ? Quelles sont les relations entre ces informations ? Qui aura accès aux informations ou à certaines informations ? … 47 Modèle conceptuel Schéma Entité-Association Simple et suffisamment puissant Schémas aisément compréhensibles par tous Description statique de la future BD, à l’aide : Entités Associations (avec leurs cardinalités) Attributs Domaine Pas de modélisation des traitements Langage Graphique 48 Exemple Bibliothèque On souhaite installer une base de données pour une petite bibliothèque contenant des ouvrages pouvant être empruntés : • Un ouvrage est caractérisé par un numéro identifiant, un titre, un ou plusieurs auteurs, et un éditeur. En outre, un ouvrage est décrit par un certain nombre de mots-clés qui indiquent les sujets qui y sont traités. La bibliothèque dispose d’un ou de plusieurs exemplaires de chaque ouvrage. • L’exemplaire, qui est en quelque sorte la matérialisation d’un ouvrage est identifié par un numéro et est caractérisé par sa position dans les rayonnages et sa date d’achat. Un exemplaire peut être emprunté par un emprunteur, qui peut en emprunter plusieurs. • Un emprunteur est identifié par un numéro et est caractérisé par son nom et son adresse. 49 Exemple Schéma entité-association (UML) Contraintes d'intégrité : ... 50 Passage du modèle conceptuel au modèle logique Passage du schéma entité-association au schéma relationnel en appliquant des règles : – Toute entité devient une relation (a ttributs colonnes ; clé clé primaire) – Association binaire (...* – ...*) : création d'une relation ayant comme colonnes les clés des 2 entités, et les éventuels attributs de l'association – Etc. 51 Exemple Schéma relationnel AUTEUR(numAuteur, nom, prenom) EDITEUR(numEditeur, nomEditeur, adresseEditeur) OUVRAGE(numOuvrage, titre, #numEditeur) ECRIT(#numAuteur, #numOuvrage) MOTCLE(numMot, mot) CARACTERISE(#numMot, #numOuvrage) EXEMPLAIRE(numExemplaire, position, dateAchat, #numOuvrage) EMPRUNTEUR(numEmprunteur, nomEmprunteur, adresseEmprunteur, telephone) EMPRUNTE(#numExemplaire, #numEmprunteur, dateEmprunt, dateRetour) 52 + contraintes d'intégrité. Comment améliorer une base de données existante ? Reprenons la base de données d'un groupe de bibliothèques : ISBN Bibliothèque Titre Editeur Nbre Eyrolles 2 Vuibert 3 2-100 Luminy C++ 2-101 St Charles Java 2-102 Luminy Maths Dunod 2-100 Toulon C++ 2 Eyrolles 1 → Normalisation... 53 Normalisation de schémas relationnels (Source : Jacques Le Maitre) Dépendances fonctionnelles (DF) X, Y : constituants de la relation R Il existe une DF entre X et Y si pour toute extension de R, à chaque valeur de X il correspond toujours la même valeur de Y. Alors X détermine fonctionnellement Y On note X Y 55 DF et Clés Une clé de R est un sous ensemble de ses attributs qui détermine tous les autres. Un constituant X de R(A1,…,An) est une clé de R ssi : X {A1,…,An}, Il n’existe pas de constituant Y inclus dans X tq Y {A1,…,An} Attribut clé = attribut qui appartient à cette clé. Super-clé (ou sur-clé) = un constituant qui inclut une clé. 56 1ère forme normale Tous les attributs ont une valeur atomique 57 2ème forme normale Il faut 1ère forme normale Chaque attribut non clé dépend totalement et non partiellement de la clé primaire 58 Exemple 2NF 59 Mise en 2ème forme normale On décompose en deux relations qui préservent les DF Remarque : une relation qui a une clé primaire monoattribut est en 2NF 60 Insuffisance de la 2 normale ème forme 3ème forme normale Il faut 2ème forme normale Pour chaque clé candidate, il n’existe pas de DF entre attributs n’appartenant pas à cette clé. 62 Exemple 3NF Comment mettre en 3NF ? 63 Mise en 3NF On décompose en deux relations (car ici 2 Dfs posent un problème) 64 Autre exemple 3NF Insuffisance de la 3 normale ème forme Forme normale de Boyce-Codd La forme normale de BC implique la 3NF BCNF : introduite pour tenir compte des dépendances entre parties de clé un attribut non clé et une partie de la clé Pour chaque DF non triviale X Y, X est une super-clé de R 67 Exemple BCNF Adresse(Rue, Ville, CodePostal) Avec dépendances fonctionnelles {Rue, Ville} CodePostal CodePostal Ville Clés candidates {Rue, Ville}, {Rue, CodePostal} CodePostal n’est pas une super-clé Comment mettre en BCNF ? 68 Mise en BCNF 4ème forme normale Il y a une dépendance multivaluée entre un constituant X et un constituant Y d’une relation R(X, Y, Z) si pour toute extension de R, à chaque valeur de X il correspond toujours le même ensemble de valeurs de Y et que cet ensemble de valeurs ne dépend pas des valeurs de Z. On dit que X multidétermine Y : X Y Exemple : livre(isbn, titre, auteur) Si un livre peut avoir plusieurs auteurs, la relation livre possède la dépendance multivaluée : isbn auteur 70 4ème forme normale Une dépendance multivaluée X Y d’une relation R est dite non triviale si : Y n’est pas un sous-ensemble de X, X union Y n’inclut pas tous les attributs de R. Une relation R est en 4e forme normale, si pour chaque dépendance multivaluée X Y non triviale, X est une super-clé de R. La 4e forme normale implique BCNF (puisqu’une dépendance fonctionnelle est un cas particulier de dépendance multivaluée). 71 Exemple 4NF 72 Bilan sur la normalisation Annexe Modèle conceptuel de données Le modèle Entité/Association Avec la notation UML 74 Entité Modélise un ensemble d'objets concrets ou abstraits de même nature Représentation graphique : rectangle Notre exemple : université étudiant université 75 Association Représente un lien entre deux ou plusieurs entités Généralement 2 : association binaire Exemple : l'association "est_dans" Représentation graphique : ligne étudiant est_dans université 76 Attributs Décrivent les entités et les associations Exemple : entité "étudiant" a pour attributs : nom, prénom, âge … entité "université" : nom, adresse, … association "est dans" : date arrivée, date départ étudiant université nom nom prénom age est_dans date_arrivée date_départ adresse 77 Clé (identifiant) d'une entité Un ou plusieurs attributs permettant d’identifier, de façon unique, chaque occurrence d’une entité Exemple: "idEtudiant" pour l'entité "étudiant" Chaque étudiant doit avoir un identifiant. Représentation graphique : attribut(s) souligné(s) étudiant université idEtudiant idUniversité nom nom prénom age est_dans date_arrivée date_départ adresse 78 Cardinalité Les cardinalités vont permettre de qualifier le type d'association entre deux entités Les entités participant aux associations ont des cardinalités minimales et maximales Cardinalité minimale : nombre minimum de fois qu’une occurrence d’une entité participe aux occurrences de l’association (0, 1, ...) Cardinalité maximale : nombre maximum de fois qu’une occurrence d’une entité participe aux occurrences de l’association (1, …, *) Exemples : "Une université a un ou plusieurs étudiants" "Un étudiant est dans une et une seule université" 79 Cardinalité Représentation graphique : couple de chiffres 0...1 ou 1...1 ou 0...* ou 1...* ou … ou n,m Nombre de gauche : cardinalité minimale Nombre de droite : cardinalité maximale Une université a un ou plusieurs étudiants étudiant idétudiant nom prénom age Sens de lecture 1...1 1...* est_dans date_arrivée date_départ Sens de lecture université iduniversité nom adresse Un étudiant est dans une et une seule université80 Associations spécifiques Associations réflexives Relie une entité à cette même entité Ajout de rôles (étiquettes) Associations n-aires Exemple : ternaire, l'association relie 3 entités 81 Exemple : gestion des hôpitaux d’un département "La direction départementale des Bouches du Rhône souhaite informatiser la gestion des hôpitaux du département. Chaque hôpital a des activités de soin dans les services médicaux et des activités de recherche dans les laboratoires. Les médecins employés sont obligatoirement rattachés à un seul hôpital. Ils ont le choix entre trois types de fonctions : consultant indépendant, médecin praticien, médecin chercheur. Les consultants indépendants ne sont rattachés à aucune structure interne de laboratoire ou de service. Les praticiens sont rattachés à un seul service. Les chercheurs sont rattachés à un laboratoire unique. Les fonctions de praticien et de chercheur peuvent être cumulées. Lorsqu’un médecin est consultant indépendant ou médecin praticien, il se voit confier la responsabilité d’un ou plusieurs patients. Dans certains cas nécessitant des traitements complexes, un même patient peut être suivi par plusieurs médecins. 82 … Exemple : schéma entitéassociation (UML) 83 Annexe Passage du MCD au MLD Passage d'un schéma Entité/Association à un schéma Relationnel 84 Conversion des entités Toute entité devient une relation (une table) Attributs Colonnes Clé Clé primaire Occurrences Lignes (n-uplets) MEDECIN(num_matricule, nom_medecin, adresse_medecin, specialite) 85 Association binaire ...* – ...* Création d'une table ayant comme colonnes les clés des 2 entités, et les éventuels attributs de l'association Clé primaire de la nouvelle table : concaténation des clés primaires (+ éventuellement des attributs) PATIENT(num_secu_sociale, nom, adresse, date_naissance) MEDECIN(num_matricule, nom, adresse, specialite) CONSULTE(#num_matricule, #num_secu_sociale) 86 Association binaire 1...1 – ...* Recopie de la clé de « HOPITAL » en tant que colonne de « LABORATOIRE » (clé étrangère) Migration des éventuels attributs de l’association « Rattaché » en tant que colonne de « LABORATOIRE » HOPITAL(code_hopital, nom, adresse) LABORATOIRE(code_laboratoire, nom, #code_hopital) 87 Association binaire 0...1 – ...* 2 solutions : Pas de création de table (traitement comme pour 1...1 – ...*) Création table (traitement comme ...* – ...* mais attention clé primaire…) LABORATOIRE(code_labo, …) MEDECIN(num_matricule, …, #code_labo, …) ou LABORATOIRE(code_labo, …) MEDECIN(num_matricule, …) CHERCHE(#num_matricule ,#code_labo) 88 Association binaire 0...1 – 1...1 La clé primaire de la table à la cardinalité 0...1 devient une clé étrangère dans la table à la cardinalité 1...1 ANIMATEUR (id_animateur, nom_animateur) GROUPE (id_groupe, nom_groupe, #id_animateur) 89 Association n-aire Création d'une table ayant comme clé primaire la concaténation des clés des entités (+ possibles attributs) Attributs de l'association colonnes de la nouvelle table ETUDIANT (id_etudiant, nom_etudiant) NIVEAU (id_niveau, nom_niveau) LANGUE (id_langue, nom_langue) PARLE (#id_etudiant, #id_niveau, #id_langue) 90 Association réflexive La Clé primaire de l'entité se dédouble et devient une clé étrangère dans la table (ou une nouvelle table). (exactement comme si entité dédoublée et association binaire 0...1 – 0...*) EMPLOYE (Numéro, Nom, #Numéro_patron) où #Numéro_patron correspond au Numéro du patron de l'employé considéré. 91