Formation avancé en SGBD

Formation avancé en SGBD de A a Z
...
2.2 Que doit-on savoir pour utiliser un SGBD ?
L’utilisation d’un SGBD suppose de comprendre (et donc de savoir utiliser) les fonctionnalités sui- vantes :
- Définition du schéma de données en utilisant les modèles de données du SGBD.
- Opérations sur les données : recherche, mises-à-jour, etc.
- Partager les données entre plusieurs utilisateurs. (Mécanisme de transaction).
- Optimiser les performances, par le réglage de l’organisation physique des données. Cet aspect relève plutôt de l’administration et ne sera évoqué que dans l’introduction.
Reprenons dans l’ordre ces différents points.
2.2.1 Définition du schéma de données
Un schéma est simplement la description des données contenues dans la base. Cette description est conforme à un modèle de données qui propose des outils de description (structures, contraintes et opé- rations). En fait, dans un SGBD, il existe plusieurs modèles plus ou moins abstraits des mêmes objets,
e.g. :
– Le modèle conceptuel : la description du système d’information
– Le modèle logique : interface avec le SGBD
– Le modèle physique : fichiers.
Ces différents modèles correspondent aux niveaux dans l’architecture d’un SGBD. Prenons l’exemple du modèle conceptuel le plus courant : le modèle Entité/Association. C’est essentiellement une description très abstraite qui présente les avantages suivants :
– l’analyse du monde réel
– la conception du système d’information
– la communication entre différents acteurs de l’entreprise
En revanche, il ne propose pas d’opérations. Or définir des structures sans disposer d’opérations pour agir sur les données stockées dans ces structures ne présente pas d’intérêt pratique pour un SGBD. D’où, à un niveau inférieur, des modèles dits “logiques” qui proposent :
- Un langage de définition de données (LDD) pour décrire la structure, incluant des contraintes.
- Un langage de manipulation de données (LMD) pour appliquer des opérations aux données.
Ces langages sont abstraits : le LDD est indépendant de la représentation physique des données, et le LMD est indépendant de l’implantation des opérations. On peut citer une troisième caractéristique : oute les structures et les opérations, un modèle logique doit permettre d’exprimer des contraintes d’intégrité sur les données. Exemple :
nom character 15, not null; âge integer between 0 and 120; débit = crédit;
...
12 CHAPITRE 2. PRÉSENTATION GÉNÉRALE
Bien entendu, le SGBD doit être capable de garantir le respect de ces contraintes.
Quand on conçoit une application pour une BD, on tient compte (plus ou moins consciemment) de cette architecture en plusieurs niveaux. Typiquement : (1) On décide la structure logique, (2) on décide la structure physique, (3) on écrit les programmes d’application en utilisant la structure logique, enfin (4) Le SGBD se charge de transcrire les commandes du LMD en instructions appropriées appliquées à la représentation physique.
Cette aproche offre de très grands avantages qu’il est important de souligner. Tout d’abord elle ouvre l’utilisation des SGBD à de utilisateurs non-experts : les langages proposés par les modèles logiques sont plus simples, et donc plus accessibles, que les outils de gestion de fichiers. Ensuite, on obtient une carac- téristique essentielle : l’indépendance physique. On peut modifier l’implantation physique sans modifier les programmes d’application. Un concept voisin est celui d’indépendance logique : on peut modifier les programmes d’application sans toucher à l’implantation.
Enfin le SGBD décharge l’utilisateur, et en grande partie l’administrateur, de la lourde tâche de contrô- ler la sécurité et l’intégrité des données.
2.2.2 Les opérations sur les données
Il existe 4 opérations classiques (ou requêtes) :
- La création (ou insertion).
- La modification (ou mise-à-jour).
- La destruction.
- La recherche.
Ces opérations correspondent à des commandes du LMD. La plus complexe est la recherche en raison de la variété des critères.
Pour l’utilisateur, une bonne requête a les caractéristiques suivantes. Tout d’abord elle s’exprime facile- ment : l’idéal serait de pouvoir utiliser le langage naturel, mais celui-ci présente trop d’ambiguités. Ensuite le langage ne devrait pas demander d’expertise technique (syntaxe compliquée, structures de données, im- plantation particulière ...). Il est également souhaitable de ne pas attendre trop longtemps (à charge pour le SGBD de fournir des performances acceptables). Enfin , et peut-être surtout, la réponse doit être fiable.
Une bonne partie du travail sur les SGBD consiste à satisfaire ces besoins. Le résultat est ce que l’on ap- pelle un langage de requêtes, et constitue à la fois un sujet majeur d’étude et une caractéristique essentielle de chaque SGBD. Le langage le plus répandu à l’heure actuelle est SQL.
2.2.3 Optimisation
L’optimisation (d’une requête) s’appuie sur l’organisation physique des données. Les principaux types d’organisation sont les fichiers séquentiels, les index (denses. secondaires, arbres B) et le regroupement des données par hachage.
Un module particulier du SGBD, l’optimiseur, tient compte de cette organisation et des caractéristiques de la requête pour choisir le meilleur séquencement des opérations.
2.2.4 Concurrence d’accès
Plusieurs utilisateurs doivent pouvoir accéder en même temps aux mêmes données. Le SGBD doit savoir :
– Gérer les conflits si les deux font des mises-à-jour.
– Offrir un mécanisme de retour en arrière si on décide d’annuler des modifications en cours.
– Donner une image cohérente des données si l’un fait des requêtes et l’autre des mises-à-jour. Le but : éviter les blocages, tout en empéchant des modifications anarchiques.
2.3. LE PLAN DU COURS 13
2.3 Le plan du cours
Le cours comprend trois parties consacrées successivement à la conception d’une base de données relationnelles, aux langages de requêtes relationnels, enfin à la pratique d’un SGBD relationnel.
Conception d’un schéma relationnel
Le cours présente d’abord la technique classique de conception à l’aide du modèle entité/association, suivie de la transcription du schéma obtenu dans le modèle relationnel. On obtient un moyen simple et courant de créer des schémas ayant de bonnes propriétés. Les concepts de ’bon’ et de ’mauvais’ schémas sont ensuite revus plus formellement avec la théorie de la normalisation.
Langages relationnels
Les langages d’interrogation et de manipulation de données suivants sont présentés : l’algèbre rela- tionnelle qui fournit un petit ensemble d’opérateurs permettant d’exprimer des requêtes complexes et le langage SQL, norme SQL2.
Pratique d’un SGBD relationnel
Cette partie reprend et étend les sujets précédents et développe leur mise en pratique dans l’environne- ment d’un SGBD relationnel. Elle comprend :
- Une revue complète du langage de définition de données SQL2 pour la création de schémas relation- nels, incluant l’expression de contraintes, les vues et les triggers.
- Une introduction au développement d’applications avec SQL.
- Une introduction à la concurrence d’accès et à ses implications pratiques.
- Une série de travaux pratiques et d’exercices avec le SGBD Oracle.
14 CHAPITRE 2. PRÉSENTATION GÉNÉRALE
Première partie
Modèles et langages
Chapitre 3
Le modèle Entité/Association
Ce chapitre présente le modèle Entité/Association (E/A) qui est utilisé à peu près universellement pour la conception de bases de données (relationnelles principalement). La conception d’un schéma correct est essentielle pour le développement d’une application viable. Dans la mesure où la base de données est le fondement de tout le système, une erreur pendant sa conception est difficilement récupérable par la suite. Le modèle E/A a pour caractéristiques d’être simple et suffisamment puissant pour représenter des structures relationnelles. Surtout, il repose sur une représentation graphique qui facilite considérablement sa compréhension.
Le modèle E/A souffre également de nombreuses insuffisances : la principale est de ne proposer que des structures. Il n’existe pas d’opération permettant de manipuler les données, et pas (ou peu) de moyen d’exprimer des contraintes. Un autre inconvénient du modèle E/A est de mener à certaines ambiguités pour des schémas complexes.
La présentation qui suit est délibérement axée sur l’utilité du modèle E/A dans le cadre de la conception d’une base de données. Ajoutons qu’il ne s’agit pas de concevoir un schéma E/A (voir un cours sur les systèmes d’information), mais d’être capable de le comprendre et de l’interpréter. Dans tout ce chapitre nous prenons l’exemple d’une base de données décrivant des films, avec leur metteur en scène et leurs acteurs, ainsi que les cinémas où passent ces films. Nous supposerons également que cette base de données est accessible sur le Web et que des internautes peuvent noter les films qu’ils ont vus.
3.1 Principes généraux
La méthode permet de distinguer les entités qui constituent la base de données, et les associations entre ces entités. Ces concepts permettent de donner une structure à la base, ce qui s’avère indispensable. Nous commençons par montrer les problèmes qui surviennent si on traite une base relationnelle comme un simple fichier texte, sans se soucier de lui donner une structure correcte.
18 CHAPITRE 3. LE MODÈLE ENTITÉ/ASSOCIATION
3.1.1 Bons et mauvais schémas
Considérons une table FilmSimple stockant des films avec quelques informations de base, dont le met- teur en scène. Voici une représentation de cette table.
...
Même pour une information aussi simple, il est facile d’énumérer tout un ensemble de problèmes potentiels. Tous ou presque découlent d’un grave défaut de la table ci-dessus : il est possible de représenter la même information plusieurs fois.
Anomalies lors d’une insertion
Rien n’empêche de représenter plusieurs fois le même film. Pire : il est possible d’insérer plusieurs fois le film Vertigo en le décrivant à chaque fois de manière différente, par exemple en lui attribuant une fois comme réalisateur Alfred Hitchcock, puis une autre fois John Woo, etc.
Une bonne question consiste d’ailleurs à se demander ce qui distingue deux films l’un de l’autre, et à quel moment on peut dire que la même information a été répétée. Peut-il y avoir deux films différents avec le même titre par exemple ? Si la réponse est non, alors on devrait pouvoir assurer qu’il n’y a pas deux lignes dans la table avec la même valeur pour l’attribut titre. Si la réponse est oui, il reste à déterminer quel est l’ensemble des attributs qui permet de caractériser de manière unique un film.
Anomalies lors d’une modification
La redondance d’information entraîne également des anomalies de mise à jour. Supposons que l’on modifie l’année de naissance de Hitchcock pour la ligne Vertigo et pas pour la ligne Psychose. On se retrouve alors avec des informations incohérentes.
Les mêmes questions que précédemment se posent d’ailleurs. Jusqu’à quel point peut-on dire qu’il n’y a qu’un seul réalisateur nommé Hitchcock, et qu’il ne doit donc y avoir qu’une seule année de naissance pour un réalisateur de ce nom ?
Anomalies lors d’une destruction
On ne peut pas supprimer un film sans supprimer du même coup son metteur en scène. Si on souhaite, par exemple, ne plus voir le film Titanic figurer dans la base de données, on va effacer du même coup les informations sur James Cameron.
3.1.2 La bonne méthode
Une bonne méthode évitant les anomalies ci-dessus consiste à ;
- être capable de représenter individuellement les films et les réalisateurs, de manière à ce qu’une action sur l’un n’entraîne pas systématiquement une action sur l’autre ;
- définir une méthode d’identification d’un film ou d’un réalisateur, qui permette d’assurer que la même information est représentée une seule fois ;
- préserver le lien entre les films et les réalisateurs, mais sans introduire de redondance.
3.1. PRINCIPES GÉNÉRAUX 19
Commençons par les deux premières étapes. On va d’abord distinguer la table des films et la table des réalisateurs. Ensuite on décide que deux films ne peuvent avoir le même titre, mais que deux réalisateurs peuvent avoir le même nom. Afin d’avoir un moyen d’identifier les réalisateurs, on va leur attribuer un numéro, désigné par id. On obtient le résultat suivant, les identifiants (ou clés) étant en gras.
...
Premier progrès : il n’y a maintenant plus de redondance dans la base de données. Le réalisateur Hitch- cock, par exemple, n’apparaît plus qu’une seule fois, ce qui élimine les anomalies de mise à jour évoquées précédemment.
Il reste à représenter le lien entre les films et les metteurs en scène, sans introduire de redondance. Maintenant que nous avons défini les identifiants, il existe un moyen simple pour indiquer quel est le metteur en scène qui a réalisé un film : associer l’identifiant du metteur en scène au film. On ajoute un attribut idMES dans la table Film, et on obtient la représentation suivante.
...
Cette représentation est correcte. La redondance est réduite au minimum puisque seule la clé identifiant un metteur en scène a été déplacée dans une autre table (on parle de clé étrangère). On peut vérifier que toutes les anomalies que nous avons citées ont disparu.
Anomalie d’insertion. Maintenant que l’on sait quelles sont les caractéristiques qui identifient un film, il est possible de déterminer au moment d’une insertion si elle va introduire ou non une redondance. Si c’est le cas on doit interdire cette insertion.
Anomalie de mise à jour. Il n’y a plus de redondance, donc toute mise à jour affecte l’unique instance de la donnée à modifier.
Anomalie de destruction. On peut détruire un film sans affecter les informations sur le réalisateur.
Ce gain dans la qualité du schéma n’a pas pour contrepartie une perte d’information. Il est en effet facile de voir que l’information initiale (autrement dit, avant décomposition) peut être reconstituée intégralement. En prenant un film, on obtient l’identité de son metteur en scène, et cette identité permet de trouver l’unique ligne dans la table des réalisateurs qui contient toutes les informations sur ce metteur en scène. Ce processus de reconstruction de l’information, dispersée dans plusieurs tables, peut s’exprimer avec SQL.
La modélisation avec un graphique Entité/Association offre une méthode simple pour arriver au résultat ci-dessus, et ce même dans des cas beaucoup plus complexes.
20 CHAPITRE 3. LE MODÈLE ENTITÉ/ASSOCIATION
3.2 Le modèle E/A : Présentation informelle
Un schéma E/A décrit l’application visée, c’est-à-dire une abstraction d’un domaine d’étude, pertinente relativement aux objectifs visés. Rappelons qu’une abstraction consiste à choisir certains aspects de la réalité perçue (et donc à éliminer les autres). Cette sélection se fait en fonction de certains besoins qui doivent être précisément définis.
Par exemple, pour notre base de données Films, on n’a pas besoin de stocker dans la base de données l’intégralité des informations relatives à un internaute, ou à un film. Seules comptent celles qui sont im- portantes pour l’application. Voici le schéma décrivant cete base de données Films (figure 3.1). Sans entrer dans les détails pour l’instant, on distingue
- des entités, représentées par des rectangles, ici Film, Artiste, Internaute et Pays ;
- des associations entre entités représentées par des liens entre ces rectangles. Ici on a représenté par exemple le fait qu’un artiste joue dans des films, qu’un internaute note des films, etc.
Chaque entité est caractérisée par un ensemble d’attributs, parmi lesquels un ou plusieurs forment l’identifiant unique (en gras). Comme nous l’avons exposé précédemment, il est essentiel de dire ce qui caractérise de manière unique une entité, de manière à éviter la redondance d’information.
FIG. 3.1 – Le schéma de la base de données Films
Les associations sont caractérisées par des cardinalités. La notation 0..* sur le lien Réalise, du côté de l’entité Film, signifie qu’un artiste peut réaliser plusieurs films, ou aucun. La notation 0..1 du côté Artiste signifie en revanche qu’un film ne peut être réalisé que par au plus un artiste. En revanche dans l’association Donne une note, un internaute peut noter plusieurs films, et un film peut être noté par plusieurs internautes, ce qui justifie l’a présence de 0..* aux deux extrêmités de l’association.
Le choix des cardinalités est essentiel. Ce choix est aussi parfois discutable, et constitue donc l’aspect le plus délicat de la modélisation. Reprenons l’exemple de l’association Réalise. En indiquant qu’un film est réalisé par un seul metteur en scène, on s’interdit les – rares – situations où un film est réalisé par plusieurs personnes. Il ne sera donc pas possible de représenter dans la base de données une telle situation. Tout est ici question de choix et de compromis : est-on prêt en l’occurrence à accepter une structure plus complexe (avec 0..* de chaque côté) pour l’association Réalise, pour prendre en compte un nombre minime de cas ?
Les cardinalités sont notées par deux chiffres. Le chiffre de droite est la cardinalité maximale, qui vaut en général 1 ou *. Le chiffre de gauche est la cardinalité minimale. Par exemple la notation 0..1 entre
3.3. LE MODÈLE 21
Artiste et Film indique qu’on s’autorise à ne pas connaître le metteur en scène d’un film. Attention : cela ne signifie pas que ce metteur en scène n’existe pas. Une base de données, telle qu’elle est décrite par un schéma E/A, n’est qu’une vision partielle de la réalité. On ne doit surtout pas rechercher une représentation exhaustive, mais s’assurer de la prise en compte des besoins de l’application.
La notation 1..1 entre Film et Pays indique au contraire que l’on doit toujours connaître le pays producteur d’un film. On devra donc interdire le stockage dans la base d’un film sans son pays.
Les cardinalités minimales (également appelées contraintes de participation ) sont moins importantes que les cardinalités maximales, car elles ont un impact moindre sur la structure de la base de données et peuvent plus facilement être remises en cause après coup. Il faut bien être conscient de plus qu’elles ne représentent qu’un choix de conception, souvent discutable. Dans la notation UML que nous présentons ici, il existe des notations abrégées qui donnent des valeurs implicites aux cardinalités minimales :
- La notation * est équivalente à 0..* ;
- la notation 1 est équivalente à 1..1 .
Outre les propriétés déjà évoquées (simplicité, clarté de lecture), évidentes sur ce schéma, on peut noter aussi que la modélisation conceptuelle est totalement indépendante de tout choix d’implantation. Le schéma de la figure 3.1 ne spécifie aucun système en particulier. Il n’est pas non plus question de type ou de structure de données, d’algorithme, de langage, etc. En principe, il s’agit donc de la partie la plus stable d’une application. Le fait de se débarrasser à ce stade de la plupart des considérations techniques permet de se concentrer sur l’essentiel : que veut-on stocker dans la base ?
Une des principales difficultés dans le maniement des schémas E/A est que la qualité du résultat ne peut s’évaluer que par rapport à une demande qui est souvent floue et incomplète. Il est donc souvent difficile de valider (en fonction de quels critères ?) le résultat. Peut-on affirmer par exemple que :
- toutes les informations nécessaires sont représentées ;
- qu’un film ne sera jamais réalisé par plus d’un artiste ;
- qu’il n’y aura jamais deux films avec le même titre.
Il faut faire des choix, en connaissance de cause, en sachant toutefois qu’il est toujours possible de faire évoluer une base de données, quand cette évolution n’implique pas de restructuration trop importante. Pour reprendre les exemples ci-dessus, il est facile d’ajouter des informations pour décrire un film ou un internaute ; il serait beaucoup plus difficile de modifier la base pour qu’un film passe de un, et un seul, réalisateur, à plusieurs. Quant à changer la clé de Film, c’est une des évolutions les plus complexes à réaliser. Les cardinalités et le choix des clés font vraiment partie des des aspects décisifs des choix de conception.
3.3 Le modèle
Le modèle E/A, conçu en 1976, est à la base de la plupart des méthodes de conception. La syntaxe employée ici est celle de la méthode UML, reprise à peu près à l’identique de celle de la méthode OMT. Il existe beaucoup d’autres notations, dont celle de la méthode MERISE principalement utilisée en France. Ces notations sont globalement équivalentes. Dans tous les cas la conception repose sur deux concepts complémentaires, entité et association.
3.3.1 Entités, attributs et identifiants
Il est difficile de donner une définition très précise des entités. Les points essentiels sont résumés ci- dessous.
Definition 3.1 (Entité) On désigne par entité tout objet identifiable et pertinent pour l’application.
22 CHAPITRE 3. LE MODÈLE ENTITÉ/ASSOCIATION
Comme nous l’avons vu précédemment, la notion d’identité est primordiale. C’est elle qui permet de distinguer les entités les unes des autres, et donc de dire qu’une information est redondante ou qu’elle ne l’est pas. Il est indispensable de prévoir un moyen technique pour pouvoir effectuer cette distinction entre entités au niveau de la base de données : on parle d’identifiant ou de clé.
La pertinence est également essentielle : on ne doit prendre en compte que les informations nécessaires pour satisfaire les besoins. Par exemple :
- le film Impitoyable ;
- l’acteur Clint Eastwood ; sont des entités pour la base Films.
La première étape d’une conception consiste à identifier les entités utiles. On peut souvent le faire en considérant quelques cas particuliers. La deuxième est de regrouper les entités en ensembles : en général on ne s’intéresse pas à un individu particulier mais à des groupes. Par exemple il est clair que les films et les acteurs sont des ensembles distincts d’entités. Qu’en est-il de l’ensemble des réalisateurs et de l’ensemble des acteurs ? Doit-on les distinguer ou les assembler ? Il est certainement préférable de les assembler, puisque des acteurs peuvent aussi être réalisateurs.
Attributs
Les entités sont caractérisées par des propriétés : le titre (du film), le nom (de l’acteur), sa date de naissance, l’adresse, etc. Ces propriétés sont dénotées attributs dans la terminologie du modèle E/A. Le choix des attributs relève de la même démarche d’abstraction qui a dicté la sélection des entités : il n’est pas question de donner exhaustivement toutes les propriétés d’une entité. On ne garde que celles utiles pour l’application.
Un attribut est désigné par un nom et prend ses valeurs dans un domaine énumérable comme les entiers, les chaînes de caractères, les dates, etc. On peut considérer un nom d’atribut comme une fonction définie sur un ensemble d’entités et prenant ses valeurs dans un domaine . On note alors la valeur de l’attribut pour une entité .
Considérons par exemple un ensemble de films et les attributs titre et année. Si est le film Impitoyable, tourné par Clint Eastwood en 1992, on aura :
titre ( ) = Impitoyable ; année ( ) = 1992
Il est très important de noter que selon cette définition un attribut prend une valeur et une seule. On dit que les attributs sont atomiques. Il s’agit d’une restriction importante puisqu’on ne sait pas, par exemple, définir un attribut téléphones d’une entité Personne, prenant pour valeur les numéros de téléphone d’une personne. Certaines méthodes admettent (plus ou moins clairement) l’introduction de constructions plus complexes :
- les attributs multivalués sont constitués d’un ensemble de valeurs prises dans un même domaine ; une telle construction permet de résoudre le problème des numéros de téléphones multiples ;
- les attributs composés sont constitués par agrégation d’autres atributs ; un attribut adresse peut par exemple être décrit comme l’agrégation d’un code postal, d’un numéro de rue, d’un nom de rue et d’un nom de ville.
Nous nous en tiendrons pour l’instant aux attributs atomiques qui, au moins dans le contexte d’une modélisation orientée vers un SGBD relationnel, sont suffisants.
Types d’entités
Il est maintenant possible de décrire un peu plus précisément les entités par leur type.
Definition 3.2 (Type d’entité) Le type d’une entité est composé des éléments suivants :
- son nom ;
3.3. LE MODÈLE 23
- la liste de ses attributs avec, – optionnellement – le domaine où l’attribut prend ses valeurs : les entiers, les chaînes de caractères ;
- l’indication du (ou des) attribut(s) permettant d’identifier l’entité : ils constituent la clé.
On dit qu’un entité est une instance de son type . Enfin, un ensemble d’entités instance d’un même type est une extension de .
Il reste à définir plus précisément la notion de clé.
Definition 3.3 (Clé) Soit un type d’entité et l’ensemble des attributs de . Une clé de est un sous-ensemble minimal de permettant d’identifier de manière unique une entité parmi n’importe quelle extension de .
Prenons quelques exemples pour illustrer cette définition. Un internaute est caractérisé par plusieurs attributs : son email, son nom, son prénom, la région où il habite. L’email constitue une clé naturelle puis- qu’on ne trouve pas, en principe, deux internautes ayant la même adresse électronique. En revanche l’iden- tification par le nom seul paraît impossible puisqu’on constitureait facilement un ensemble contenant deux internautes avec le même nom. On pourrait penser à utiliser la paire (nom,prénom), mais il faut utiliser avec modération l’utilisation d’identifiants composés de plusieurs attributs, quoique possible, peut poser des problèmes de performance et complique les manipulations par SQL.
Il est possible d’avoir plusieurs clés pour un même ensemble d’entités. Dans ce cas on en choisit une comme clé primaire, et les autres comme clés secondaires. Le choix de la clé (primaire) est déterminant pour la qualité du schéma de la base de données. Les caractéristiques d’une bonne clé primaire sont les suivantes :
– sa valeur est connue pour toute entité ;
– on ne doit jamais avoir besoin de la modifier ;
– enfin, pour des raisons de performance, sa taille de stockage doit être la plus petite possible.
Il n’est pas toujours évident de trouver un ensemble d’attributs satisfaisant ces propriétés. Considérons l’exemple des films. Le choix du titre pour identifier un film serait incorrect puisqu’on aura affaire un jour ou l’autre à deux films ayant le même titre. Même en combinant le titre avec un autre attribut (par exemple l’année), il est difficile de garantir l’unicité.
Dans la situation, fréquente, où on a du mal à déterminer quelle est la clé d’une entité, on crée un identifiant abstrait indépendant de tout autre attribut. On peut ainsi ajouter dans le type d’entité Film un attribut id, corespondant à un numéro séquentiel qui sera incrémenté au fur et à mesure des insertions. Ce choix est souvent le meilleur, dès lors qu’un attribut ne s’impose pas de manière évidente comme clé. Il satisfait notamment toutes les propriétés énoncées précédemment (on peut toujours lui attribuer une valeur, il ne sera jamais nécessaire de la modifier, et elle a une représentation compacte).
On représente graphiquement un type d’entité comme sur la figure 3.2 qui donne l’exemple des types
Internaute et Film. L’attribut (ou les attributs s’il y en a plusieurs) formant la clé sont en gras.
Internaute
Nom du type
email Identifiant nom
prénom
région
Attributs
FIG. 3.2 – Représentation des types d’entité
Il est essentiel de bien distinguer types d’entités et entités. La distinction est la même qu’entre schéma et base dans un SGBD, ou entre type et valeur dans un langage de programmation.
24 CHAPITRE 3. LE MODÈLE ENTITÉ/ASSOCIATION
3.3.2 Associations binaires
La représentation (et le stockage) d’entités indépendantes les unes des autres est de peu d’utilité. On va maintenant décrire les relations (ou associations) entre des ensembles d’entités.
Definition 3.4 Une association binaire entre les ensembles d’entités et est un ensemble de couples, avec et .
C’est la notion classique de relation en théorie des ensembles. On emploie plutôt le terme d’association pour éviter toute confusion avec le modèle relationnel. Une bonne manière d’interpréter une association entre des ensembles d’entités est de faire un petit graphe où on prend quelques exemples, les plus généraux possibles.
Les réalisateurs Les liens "Réalise" Les films
FIG. 3.3 – Association entre deux ensembles.
Prenons l’exemple de l’association représentant le fait qu’un réalisateur met en scène des films. Sur le graphe de la figure 3.3 on remarque que :
- certains réalisateurs mettent en scène plusieurs films ;
- inversement, un film est mis en scène par au plus un réalisateur.
La recherche des situations les plus générales possibles vise à s’assurer que les deux caractéristiques ci-dessus sont vraies dans tout les cas. Bien entendu on peut trouver 1% des cas où un film a plusieurs réalisateurs, mais la question se pose alors : doit-on modifier la structure de notre base, pour 1% des cas. Ici, on a décidé que non. Encore une fois on ne cherche pas à représenter la réalité dans toute sa complexité, mais seulement la partie de cette réalité que l’on veut stocker dans la base de données.
Ces caractéristiques sont essentielles dans la description d’une association entre des ensembles d’entités.
Definition 3.5 (Cardinalité) Soit une association entre deux types d’entités. La cardinalité de l’association pour , est une paire [min, max] telle que :
- Le symbole max (cardinalité maximale) désigne le nombre maximal de fois où une une entité de peut intervenir dans l’association.
En général, ce nombre est 1 (au plus une fois) ou (plusieurs fois, nombre indeterminé), noté par le symbole * .
- Le symbole min (cardinalité minimale) désigne le nombre minimal de fois où une une entité de peut intervenir dans la relation. En général, ce nombre est 1 (au moins une fois) ou 0.
Les cardinalités maximales sont plus importantes que les cardinalités minimales ou, plus précisément, elles s’avèrent beaucoup plus difficiles à remettre en cause une fois que le schéma de la base est constitué. On décrit donc souvent une association de manière abrégée en omettant les cardinalités minimales. La notation * , en UML, est l’abréviation de 0..* , et 1 est l’abréviation de 1..1 . On caractérise également une association de manière concise en donnant les cardinalités maximales aux deux extrêmités, par exemple 1:n (association de un à plusieurs) ou n:n (association de plusieurs à plusieurs).
Les cardinalités minimales sont parfois désignées par le terme contraintes de participation . La valeur 0 indique qu’une entité peut ne pas participer à l’association, et la valeur 1 qu’elle doit y participer.
Insistons sur le point suivant : les cardinalités n’expriment pas une vérité absolue, mais des choix de conception. Elles 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’appécier la qualité du modèle.
Il existe plusieurs manières de noter une association entre types d’entités. Nous utilisons ici la nota- tion de la méthode UML, qui est très proche de celle de la méthode OMT. En France, on utilise aussi couramment – de moins en moins... – la notation de la méthode MERISE que nous ne présenterons pas ici.