Manuel complet sur les systèmes de gestion de bases de données
LES SYSTEMES DE GESTION DE BASES DE DONNEES
Préface
Ce document est un support pour les cours en informatique des classes de 13CG. La structure et le contenu des chapitres de ce document ont été synchronisés avec le contenu du programme établi par la CNPI. Le cours met l'accent sur les concepts et techniques fondamentaux des bases de données relationnelles, ainsi que sur la conception et l'implémentation de systèmes informatiques élémentaires de gestion.
Le cours est subdivisé en trois parties:
PARTIE 1 : Modélisation d'un système d'information (chapitres 1 – 4)
PARTIE 2 : Exploitation des bases de données relationnelles (chapitres 5 – 9)
PARTIE 3 : Protection des données (chapitre 10)
Ce cours n'est pas du tout un manuel d'utilisation de MS-Access, de Win'Design respectivement d'un autre logiciel. Le cours se limite aux concepts importants en relation avec le sujet.
Symboles utilisés à l'intérieur de cet ouvrage:
Symboles utilisés à l'intérieur de cet ouvrage:
Paragraphe important
Exercice
1.Analyse des systèmes d'information 8
1.1Introduction 8
1.2Définition de l'information et des systèmes d'information 9
1.3Les données, les traitements et les informations 10
1.4La représentation informatique des données 11
2.Démarche de modélisation des données 12
2.1Le groupe d'étude (angl. Project group) 12
2.2Les étapes 13
2.3Sources d'information 14
3.Méthode de modélisation des données 15
3.1Définition 15
3.2Pourquoi modéliser ? 17
3.3Le modèle conceptuel des données (MCD)
3.3.1 Définition
3.3.2 La notion de classe
3.3.3 La notion d'attribut
3.3.4 La notion d'identifiant
3.3.5 La notion d'association
3.3.5.1 Définition
3.3.5.2 Les multiplicités d'une association
3.3.5.3 Classe-association
3.3.6 Exemple "KaafKaaf"
3.3.7 Exemple "Gestion d'école"
3.3.8 L’utilisation d’une association ternaire
3.3.9 Exercices
3.3.10 Cas particuliers du MCD
3.3.10.1 Plusieurs associations différentes entre deux classes
3.3.10.2 Association réflexive et rôle
3.3.10.3 Agrégation de composition
3.3.11 Exercices 19
.4Le modèle logique des données (MLD)
3.4.1 Définition
3.4.2 Règles de transformation du MCD au MLD 55
55 57
Table des matières:
3.4.2.1 Transformation des classes 57
3.4.2.2 Transformation des associations binaires du type (x..*) – (x..1) 57
3.4.2.3 Transformation des associations binaires du type (x..1) – (x..1) 58
3.4.2.4 Transformation des associations binaires du type (x..*) – (x..*) 59
3.4.2.5 Transformation des associations ternaires 59
3.4.2.6 Transformation de plusieurs associations entre 2 classes 60
3.4.2.7 Transformation des associations réflexives 60
3.4.3 Exemple "KaafKaaf"
3.4.4 Exercices 62 63
3.5Le modèle physique des données (MPD)
3.5.1 Définition
3.5.2 Passage du MLD au MPD 65
65 65
3.4.2.8 Transformation de l'agrégation de composition 61
- Utilisation d'un outil de modélisation 69
4.1Définition 69
4<.2Fonctionnalités 70
- Les systèmes de gestion de bases de données 72
5.1 Définitions 72
5.2 Un peu d'histoire 74
5.3 Les composants d'une base de données relationnelle 76
5.4 Structures physiques et logiques 78
5.5 Les réseaux informatiques 80
5.6 L'approche Client/Serveur 84
5.6.1 La période des ordinateurs du type "Mainframe" 84
5.6.2 L'approche Client/Serveur 86
- Les tables (angl. tables) 88
6.1Définition 88
6.2Les champs d'une table 90
6.3Clé primaire 92
6.4Relations entre tables - clé étrangère 95
6.5Index 96
- Les requêtes (angl. queries) 98
7.1 Définition 98 7.2 Introduction au langage SQL 100
7.2.1 Généralités 100
7.2.2 Syntaxe SQL de base 101
7.2.3 Les critères de sélection 104
7.2.4 Comparaison à un filtre 106
7.2.5 Les opérateurs logiques 107
7.2.6 Valeur zéro, chaîne vide et valeur indéterminée (NULL) 110
7.2.7 Comparaison à une fourchette de valeurs 112
7.2.8 Comparaison à une liste de valeurs 113
7.2.10 Les valeurs calculées
7.2.11 Les fonctions d'agrégation
7.2.12 Requêtes sur les groupes
7.2.12.1 La clause GROUP BY
7.2.12.2 La clause HAVING
7.2.13 Exercices 117
118
120
120 123 125
7.3Les requêtes SQL multitable
7.3.1 La jointure
7.3.1.1 Exemple d'introduction
7.3.1.2 Création d'une jointure
7.3.2 Auto- jointure
7.3.3 Les requêtes imbriquées
7.3.3.1 La requête imbriquée renvoie une seule valeur
7.3.3.2 La requête imbriquée renvoie un ensemble de valeurs
7.3.4 Exercices SQL 139
7.2.9 Définir l'ordre d'une requête de sélection 114
7.4 La méthode QBE 166
7.5 Les contraintes d'intégrité 168
7.5.1 Définition 168
7.5.2 Les types de contraintes d'intégrité 168
7.5.2.1 La contrainte d'intégrité des tables (angl. Table Integrity Constraint) 168
7.5.2.2 La contrainte d'intégrité référentielle (angl. Referential Integrity Constraint)169
7.5.2.3 La contrainte d'intégrité générale (angl. General Integrity Constraint) 169
7.5.3 Exercices 170
- Les formulaires (angl. forms) 175
8.1 Définition 1758.2Types de formulaires 1798.3Création d'un formulaire 181
- Les rapports (angl. reports) 183
9.1 Définition 1839.2Création d'un rapport 189
- Sécurité des données 191
10.1 Définition 191 10.2 Les manipulations malveillantes 191
10.2.1 Définition 191
10.2.2 La protection contre les manipulations malveillantes 192
10.3 Les accès non autorisés 193
10.3.1 Définition 193
10.3.2 La protection contre les accès non autorisés 193
10.3.2.1 Mot de passe 193
10.3.2.2 Droits d'accès aux objets d'une BD 193
10.3.2.3 Sécurisation du système d'exploitation 196
10.4Les incohérences et pertes de données accidentelles 197
10.4.1 Définition 197
10.4.2 La protection contre les incohérences et pertes de données accidentelles 198
10.4.2.1 Les pertes provoquées par des erreurs humaines 199
10.4.2.2 Les pertes des données en mémoire interne (RAM) 199
10.4.2.3 Les pertes des données stockées sur disque dur 199
10.4.3 Les mesures de prévention contre la perte de données 200
10.4.3.1 La sauvegarde des données (angl. backup) 200
10.4.3.2 La réplication du disque dur (angl. mirroring) 202
10.4.3.3 Réplication du serveur (angl. Backup server) 202
10.4.3.4 Les systèmes RAID-5 202
Annexes 203
11.1Bibliographie 20411.2Sites sur Internet 20611.3Index 207
Partie 1 : Modélisation d'un système d'information
- Analyse des systèmes d'information
1.1 Introduction
La compétitivité d'une entreprise ainsi que sa valeur sur le marché sont déterminées par plusieurs éléments, d'une importance différente selon le secteur d'activité. On peut généralement regrouper ces éléments en deux classes:
- Les éléments matériels
- • L'infrastructure
- • Les supports financiers
- Les éléments intellectuels
- • La compétence des employés
- • La motivation des employés
- • Le recueil et l'exploitation optimale des informations utiles
Depuis quelques années, les responsables des entreprises (banques, assurances, industrie etc. ) ont davantage reconnu et admis que la gestion et l'exploitation des informations sont un facteur de compétitivité à ne pas négliger.
Le développement rapide de l'informatique a donné aux entreprises la possibilité d'utiliser des moyens avancés et puissants pour gérer et exploiter de très grands volumes de données. Il y a quelques années, le domaine de la gestion informatique des données était réservé aux informaticiens. Actuellement, les tendances à l'intérieur des entreprises ont changé de façon à ce que tous les employés soient de plus en plus impliqués dans les différents procédés liés à la gestion et l'exploitation des données. De cette façon, un certain niveau de connaissance des principes et des outils standard de l'informatique est aujourd'hui requis pour la plupart des postes disponibles dans les entreprises.
Toutefois, il ne suffit pas d'utiliser les ressources informatiques les plus sophistiquées pour exploiter au mieux les données. En parallèle avec les outils informatiques utiles pour gérer des données, tels que les ordinateurs de plus en plus puissants et les logiciels adaptés (SGBD, Tableur etc.), ont été développées des méthodes d'analyse et de conception de systèmes d'information. Ces méthodes nous offrent la possibilité d'analyser un système d'information naturel, tel que par exemple la gestion des livres d'une librairie ou la gestion des sinistres d'une compagnie d'assurances, de concevoir ensuite un modèle qui représente ce système et d'implémenter finalement un système informatique, basé sur ce modèle.
1.2 Définition de l'information et des systèmes d'information
Une information est un élément qui permet de compléter notre connaissance sur une personne, un objet, un événement …
Exemple: Le nom d'une personne est une information concernant cette personne.
La couleur d'une voiture est une information concernant cette voiture.
La date de la fête scolaire est une information concernant cet événement.
Un système d'information est constitué par l'ensemble des informations relatives à un domaine bien défini..
Exemple: Toutes les informations relatives à la gestion d'une librairie constituent le système d'information de cette librairie. Ce système peut couvrir le simple stockage des livres, mais également la gestion des commandes, des ventes et même des clients.
Un système d'information ne doit pas nécessairement être informatisé. Bien que la plupart des systèmes actuels se basent sur la technologie de l'informatique, il existe encore des systèmes d'information où l'information est stockée, manipulée et communiquée à l'aide de moyens "traditionnels" tels que armoires, classeurs, calculatrices, fiches sur papier etc. .
Un système d'information existe indépendamment des techniques informatiques.
Le système d'information ne doit pas être confondu avec le système informatique qui est constitué des éléments suivants:
- • Les ordinateurs
- • Les programmes
- • Les structures de données (Fichiers, Bases de données)
Dans ce chapitre nous allons découvrir une démarche d'informatisation, qui nous permet de modéliser un système d'information et de le représenter à l'aide d'un système informatique. Le but de cette démarche est de concevoir des systèmes stables et optimisés en termes de performance, de fiabilité et de convivialité.
1.3 Les données, les traitements et les
informations
Bien que les deux termes "informations" et "données" soient souvent utilisés comme synonymes, il existe une différence subtile entre eux.
Prenons un exemple:
Dans une librairie, un client demande au vendeur si le livre "L'étranger" (Albert Camus) est disponible en stock. Le vendeur conseille la base de données de la librairie à l'aide de son ordinateur et confirme au client que le livre est disponible. Le vendeur a donc donné au client l'information que le livre est en stock. Afin de pouvoir donner cette information, le vendeur a dû consulter les données qui représentent le stock de la librairie. Le fait de consulter le stock constitue un traitement sur les données du stock.
Nous pouvons généraliser:
Un système d'information contient les données et les traitements nécessaires pour assimiler et stocker les informations entrantes et produire les informations sortantes.
Dans les systèmes d'information nous retrouvons généralement les traitements suivants:
• Consultation des données;
• Ajout de données;
• Suppression de données;
• Modification de données.
Exemple:
Le propriétaire d'une vidéothèque reçoit une livraison avec des nouvelles cassettes vidéo. Pour chaque cassette vidéo, il lit le titre, la langue ainsi que la durée et sauvegarde ces informations dans la base de données de la vidéothèque. Il a donc utilisé un traitement d'ajout de données afin de transformer les informations entrantes (titre, langue, durée) en données.
1.4 La représentation informatique des données
Les données d'un système d'information peuvent être stockées et manipulées à l'aide d'un outil informatique spécialisé dans ce domaine. Actuellement les Systèmes de Gestion de Bases de Données (SGBD) constituent le type de logiciel le mieux adapté pour implémenter la plupart des systèmes d'information. Sachant que les tables forment la base de stockage d'une base de données, on peut représenter n'importe quel système d'information par un ensemble de tables dont chacune contient un certain nombre de champs de données. Nous allons voir qu'on peut même définir des liens entre ces tables via des champs communs.
Exemples deSGBD:
- Démarche de modélisation des données
2.1 Le groupe d'étude (angl. Project group)
Un système d'information qui n'est pas trop complexe et volumineux en terme d'informations, peut facilement être informatisé par une seule personne, qui ne doit pas nécessairement être un informaticien. Il suffit d'être un peu familiarisé avec une méthode de modélisation, et de savoir manipuler un SGBD pour réaliser une implémentation informatique, cohérente et fonctionnelle, d'un tel système d'information.
Dès que le système d'information atteint une certaine envergure (par exemple: informatiser la gestion des sinistres d'une compagnie d'assurances), un groupe d'étude est généralement créé.
Ce groupe ne devra en aucun cas contenir seulement des informaticiens mais également:
- • Un ou plusieurs représentants des futurs utilisateurs du système informatisé (Par exemple: Un employé du service qui gère les sinistres) ;
- • Un ou plusieurs représentants de chaque département impliqué
(Par exemple: Un employé du service des contrats ) ;
- • Un représentant de la direction.
Généralement, un responsable du groupe (angl. Project Manager) est nommé, afin de coordonner les travaux effectués par le groupe et de suivre le déroulement à partir de l'analyse jusqu'à la mise en place du système informatisé.
2.2 Les étapes
Chaque projet d'informatisation, qu'il soit exécuté par une seule personne, ou géré par un groupe d'étude, prévoit plusieurs étapes.
En général, nous avons les étapes suivantes:
- Analyse de la situation existante et des besoins
- Création d'une série de modèles qui permettent de représenter tous les aspects importants
- A partir des modèles, implémentation d'une base de données
2.3 Sources d'information
La première étape de chaque projet est donc l'analyse de l'existant et des besoins. Afin de pouvoir réaliser une analyse correcte sur laquelle on peut baser la suite du projet, il faut d'abord identifier les sources d'information, et puis collectionner exactement les informations importantes pour le projet.
Sources d'information primaires:
- • L'interview avec les utilisateurs;
- • L'étude de documents provenant du système d'information actuel (Rapports, Bons de commandes, Factures …).
Pour les projets d'une certaine envergure s'ajoutent:
- • L'interview avec les responsables des services impliqués;
- • Pourvu que la tâche d'analyse soit partagée entre plusieurs membres du groupe d'études, il faut coordonner les actions et comparer les résultats avec les autres membres.
Pour les projets qui se basent sur un système déjà partiellement informatisé s'ajoute:
- • L'étude de l'application informatique existante.
- Méthode de modélisation des données
3.1 Définition
Nous avons vu que la démarche classique d'un projet informatique comprend les étapes suivantes:
- Analyse de la situation existante et des besoins;
- Création d'une série de modèles, qui permettent de représenter tous les aspects importants;
- A partir des modèles, implémentation d'une base de données.
En ce qui concerne la première étape, nous n'allons pas introduire de vraies règles, mais simplement utiliser nos connaissances de gestion d'une entreprise, notre esprit ouvert et même notre fantaisie pour analyser correctement la situation existante et les besoins des utilisateurs. Le résultat de l'analyse est généralement un ou plusieurs documents, qui contiennent les indications principales sur le fonctionnement désiré du système informatisé. Le document d'analyse contient souvent déjà des prototypes de certains documents importants, que le futur système devra être capable de produire.
Une fois que l'analyse est terminée, il s'agit d'élaborer une série de modèles, basés sur le document d'analyse. Ces modèles nous permettront plus tard d'implémenter une base de données, qui contiendra toutes les informations nécessaires au bon fonctionnement du système informatisé.
Le développement de ces modèles se fait selon une méthode qui prévoit une conception par niveaux.Nous retenons 3 niveaux essentiels:
- Le niveau conceptuel, qui se base directement sur l'analyse, décrit l'ensemble des données du système d'information, sans tenir compte de l'implémentation informatique de ces données. Ce niveau, qui représente donc la signification des données, se traduit par un formalisme que nous appelons:
Modèle conceptuel des données (MCD)
2. Le niveau logique, qui se base sur le modèle conceptuel des données, prend en considération l'implémentation du système d'information par un SGBD. 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)
3. Le niveau physique, qui se base sur le modèle logique des données, contient finalement les tables définies à l’aide d’un SGBD spécifique (p.ex. MS Access, MySQL, Oracle …). Ce niveau est représenté par le:
Modèle physique des données (MPD)
Voici donc les 4 étapes nécessaires pour traduire un système d'information naturel en une base de données:
3.2 Pourquoi modéliser ?
Nous avons vu qu’une base de données est constituée par un ensemble de tables qui contiennent toutes les données de la base. Une méthode de modélisation nous permet de trouver le bon nombre de tables pour une base de données et de déterminer quelles données sont représentées à l’intérieur de quelle table.
Pour l’instant, il nous suffit de savoir qu’une table est un ensemble d’enregistrements, dont chacun est composé par les mêmes champs de données. On pourrait comparer une table à une liste en MS-Excel. Les tables sont étudiées en détail dans le chapitre 6.
Voici un exemple d’une table :
de données Un champ
A l’aide d’un exemple précis, nous allons voir pourquoi il est important de bien réfléchir sur le nombre de tables d’une base de données et sur la structure de chaque table.
Il s’agit de créer une base de données pour une caisse de maladie. On veut stocker tous les employés-membres de la caisse avec leur société-employeur. Afin de faciliter l’exercice, nous allons uniquement stocker les informations suivantes pour chaque employé:
- • le numéro de l’employé • le nom de l’employé
- • le prénom de l’employé
- • le numéro de son entreprise
- • le nom de son entreprise
- • la localité où se trouve l’entreprise
A première vue, la solution suivante s’impose :
NoEmp |
Nom_Emp |
Prénom_Emp |
NoEntr |
Nom_Entr |
Localité |
102 |
Boesch |
Emil |
1 |
Schaffgaer S.à r.l. |
Differdange |
103 |
Midd |
Erny |
2 |
Gudjär |
Colmar Berg |
104 |
Witz |
Evelyne |
1 |
Schaffgaer S.à r.l. |
Differdange |
105 |
Kuhl |
Menn |
1 |
Schaffgaer S.à r.l. |
Differdange |
106 |
Super |
Jhemp |
2 |
Gudjär |
Colmar Berg |
Nous voyons ici uniquement quelques enregistrements. Une caisse de maladie ayant des miliers de membres, et cette table possédant un enregistrement par membre, on peut bien s’imaginer la taille réelle de la table.
Or, bien que cette solution soit correcte dans le sens le plus large du terme, elle nous impose un certain nombre de problèmes .
Exercice 1
Essayez de trouver en discussion quelques problèmes qui peuvent se manifester lors du travail journalier avec cette table.
Exercice 2
Comment est-ce qu’on pourrait éviter ces problèmes sans toutefois perdre des informations ?
3.3 Le modèle conceptuel des données (MCD)
3.3.1 Définition
En se basant sur un document d'analyse, le modèle conceptuel des données (MCD) fait référence à tous les objets du système d'information et à des relations entre ces objets.
Le formalisme utilisé dans ce modèle est celui du langage de modélisation UML (Unified Modeling Language).
A l'aide de ce langage nous pouvons créer un diagramme de classes qui se base autour de 3 concepts principaux, les classes, les associations et les attributs.
Voici par exemple un MCD / Diagramme de classes qui représente une entreprise avec ses employés.
Pour la suite de ce cours, MCD et diagramme de classes sont synonymes.
3.3.2 La notion de classe
Une classe permet de modéliser un ensemble d'objets concrets ou abstraits de même nature.
Dans l'exemple du chapitre précédent, la classe Entreprise spécifie donc l'ensemble des entreprises, qui nous intéressent dans le contexte de notre système d'information. De même, la classe Employé représente tous les employés de notre système d'information.
Chacun de ces clients représente un objet ou une instanciation de la classe Client.
3.3.3 La notion d'attribut
Un attribut représente une donnée élémentaire d'une classe.
Un attribut est unique dans un MCD et ne peut ainsi pas être rattaché à plusieurs classes différentes.
Représentation graphique d'un attribut:
Le nom de l'attribut est indiqué à l'intérieur de la classe à laquelle il est rattaché
Voici quelques exemples d'attributs:
Pour une classe Client:
- • Nom du client
- • NoTél du client
Pour une classe Salarié:
- • Nom du salarié
- • NoMatricule
- • Salaire mensuel
Pour une classe Contrat d'assurance:
- • NoContrat
- • Type d'assurance
- • Montant assuré
A l'intérieur des objets (des instanciations) d'une classe, les attributs prennent des valeurs
Exemple:
La classe Client est définie par les attributs suivants:
A l'intérieur de chaque objet, chaque attribut prend une valeur, qui est dans la plupart des cas une valeur numérique, une valeur sous forme de texte ou encore une date.
L'attribut Nom prend p.ex. les valeurs "Meier", "Muller" et "Weber" dans les 3 objets cidessus.
A l’intérieur de chaque objet, chaque attribut ne prend qu’une seule valeur au maximum.
Le client 002 par exemple ne peut pas avoir 2 adresses.
3.3.4 La notion d'identifiant
Afin de pouvoir distinguer les différents objets d'une même classe, la classe doit être dotée d'un identifiant. L'identifiant est composé d'un ou de plusieurs attributs de la classe. Chaque objet d’une classe doit avoir une valeur différente pour l’identifiant
Comme choix pour l'identifiant d'une classe nous distinguons généralement 3 possibilités:
- Un attribut naturel
Exemple: Le nom d'un pays pour une classe Pays
- Un attribut artificiel qui est inventé par le créateur du MCD
Exemple: Le numéro d'un client pour une classe Client
- Un identifiant composé de plusieurs attributs naturels
Exemple: Le nom et la localité pour une classe Entreprise
Représentation graphique de l'identifiant d'une classe:
Le ou les attributs qui constituent l'identifiant d'une classe sont écrits en couleur et suivis de l'indication {id)
Exercice
Indiquez graphiquement les classes qui représentent :
- les passagers d’une société aérienne.
- les résultats sportifs de l’entraînement d’un coureur ;
- les médicaments d’une pharmacie.
3.3.5 La notion d'association
3.3.5.1 Définition
Une association décrit un lien entre deux ou plusieurs classes. Chaque association possède un nom, généralement un verbe à l'infinitif.
Nous distinguons deux types d'associations:
• les associations binaires, qui sont liées à 2 classes;
• les associations ternaires, qui sont liées à 3 classes.
Exemple d'une association binaire:
L'instanciation d'une association est représentée par les instanciations des classes liées à l'association.
Voici quelques instanciations de l'association Ecrire.
Cette instanciation de l'association écrire p.ex. nous dit que l'auteur Twain a écrit le livre Tom Sawyer. Cette instanciation peut être identifiée par l'identifiant composé A002/L003
Bien qu'une association n'ait pas d'identifiant propre, elle peut implicitement être identifiée par les identifiants des classes auxquelles elle est liée. Pour chaque instanciation d’une association, l’identifiant doit être unique.
Sur les extrémités d'une association on indique les multiplicités.
Les multiplicités expriment le nombre minimum et maximum d'objets d'une classe qui peuvent être associés à des objets de l'autre classe.
Exemple 1:
Se lit: Un client passe au minimum 1 et au maximum plusieurs commandes
Se lit: Une commande est passée au minimum par un et au maximum par un client
Les multiplicités concernant une classe sont inscrites à l'extrémité opposée de l'association.
Exemple 2:
Interprétez les multiplicités concernant la classe Employé.
Interprétez les multiplicités concernant la classe Ordinateur.
Y a-t-il des employés qui n'utilisent pas d'ordinateurs ?
Y a-t-il des ordinateurs qui ne sont pas du tout utilisés ?
Y a-t-il des employés qui utilisent plusieurs ordinateurs ?
Y a-t-il des ordinateurs utilisés par plusieurs employés ?
De façon générale, on peut dire:
La multiplicité minimale indique si un objet d'une classe peut exister sans participer à l'association. Cette multiplicité est 0 ou 1.
• Multiplicité minimale = 0 : Un objet de la classe concernée peut exister sans participer à l'association.
• Multiplicité minimale = 1 : Un objet de la classe participe au moins une fois à l'association.
La multiplicité maximale indique si un objet d'une classe peut participer plusieurs fois à l'association. Cette multiplicité est 1 ou *, avec * représentant une valeur >1 mais non connue à priori.
• Multiplicité maximale = 1 : Un objet de la classe participe au maximum une seule fois à l'association.
• Multiplicité maximale = * : Un objet de la classe peut participer plusieurs fois à l'association.