Bonjour,
Je dispose d’une base de donnée comportant deux groupes de tables distincts (en fait, il s’agissait historiquement de deux bases indépendantes association et bibliographie)
Le premier groupe de tables (association) assure la gestion interne d’une association, et contient une table t_membre (id_membre, nom, prenom, etc1.).
Le second groupe de tables (bibliographie) gère une bibliographie et contient une table t_auteur (id_auteur, nom, prenom, etc2.)
Les auteurs peuvent être, ou non, membres de l’association, mais ce n’est renseigné nulle part dans ce groupe de table.
Aujourd’hui, il nous devient nécessaire de pouvoir accéder aux informations contenues dans le groupe de tables association depuis le groupe bibliographie et vice versa.
Par exemple,
- accéder aux informations internes à l’association (cotisation, adresses...) d’un auteur (si il est membre) à partir d’une recherche de ce qu’il a écrit,
ou inversement,
- accéder aux publications d’un membre à partir d’une recherche dans les infos présentes coté association.
L’idée serait de
- créer une liaison/relation entre les deux groupes de tables via ces deux tables t_membre et t_auteur
- éviter les redondances et les aberrations : actuellement, l’identité d’un membre auteur est renseignée sous deux id différentes dans chacune des deux tables (id_membre et id_auteur)
Une solution envisagée serait de créer une table de relation t_individu entre t_membre et t_auteur, après avoir supprimé de la table t_auteur toutes les lignes dont l’auteur est aussi membre de l’association. Cette table serait alimentée à chaque nouvelle saisie d’un auteur, qu’il soit membre ou non.
t_individu
id_individu (pk, auto incrementée)
id_membre (fk t-membre, NULL si is_membre est FALSE)
id_auteur (fk t_auteur, NULL si is_membre est TRUE)
is_membre (booléen)
Cette solution est-elle optimale ?
Y-a-t-il mieux à faire ? (passer par CREATE VIEW par exemple ?)
Merci d’alimenter ma réflexion !
P.s.
Je travaille avec MariaDB / mysql php
Pour des raisons sur lesquelles je ne m’entendrai pas, il n’est pas question de toucher à la table t_membre
Hormis les informations des deux tables d’identité t_membre et t_auteur, aucune information issue des deux groupes de tables n’est redondante.
Ma connaissance en matière de base de donnée est empirique et ma méthodologie est issue de celle du bon professeur "Al. Harasch"![]()
Partager