Lien entre plusieurs items d'une même table

Bonjour à tous,

Je cherche à lier un item d’une table à d’autres items de cette même table.

Pour exemple, ma structure de données en Swift :

struct Fungus: Identifiable, Codable {
    var id: Int = 0
    var scientificName: String = ""
    var commonName: String = ""
    var confusion: [Fungus] = []
}

Quel type de relation dois-je créer dans Directus ? Une many to many sur la même table ? Je suis pas certain que ce soit possible …

Merci pour vos conseils !!

Si c’est un item sur d’autres items, c’est du One-To-Many normalement
Si c’est plusieurs items sur d’autres items, c’est du Many-To-Many.

Il me semble que ça te crééé une table spécifique entre les 2 tables pour gérer les liens entre les items.

Justement il y a pas deux tables dans cet exemple. C’est une table sur elle même. Alors je suis pas certain qu’une relation many to many ne va pas poser problème …

Je comprends pas bien du coup ce que tu veux faire et des tables dont tu disposes.
si tu dois faire tu one-to-many, et que tu pars sur une table qui contient tout, il faut revoir cette architecture. Est-ce que sur cette table, je peux effectuer les opérations ou non?
Et si je dois reprendre l’architecture, dois-je modifier la base actuelle pour repartir sur un schéma différent? C’est en gros le raisonnement que j’ai dans ce genre de situation. en essayant de prévoir ce que je pourrais ajouter ou ce que j’aurai besoin comme possible Features.

Avant de monter les tables, je passe par un dessin/schéma de mes tables possibles et je modifie tout sur ‹ papier ›. ensuite, je monte les tables et je teste.

J’ai une seule table où je décris les espèces de champignon.
Dans cette même table, j’ai un champs qui liste les probables confusions avec d’autres champignons.
Pour exemple, j’ai un bolet qui peut être confondu avec un autre bolet. Ces deux champignons sont dans la même table. Comment j’arrive à les relier ?

Plusieurs solutions je pense.
Tu peux prendre une table qui liste les champignons, puis une deuxième qui liste d’autres champignons et les relier.
Ou plutôt, si tu sors des listes, prendre une table qui liste les champignons, une deuxième qui liste les champinons aussi, et une 3e table qui fait le lien entre les champignons (en listant par exemple Champignons A plusieurs fois, si il est relié à plusieurs champignons). Tu lis ainsi la table du milieu pour ressortir quels champignons va avec quels autres. En gros le principe du Many-to-many.

Je pense à une table qui contient tes infos sur les champignons et ses colonnes (couleur, présence de volve, hauteur, saison, comestible, etc…) puis tu crées une table à deux colonnes, une qui contient l’id des champignons et l’autre qui contient l’id ou les id(s) d’un ou des champignons avec le(s)quel(s) il y aurait une confusion. Eventuellement une colonne String supplémentaire contenant + d’infos sur l’incompatibilité. Un petit SELECT du genre pour le champignon id = 126 pour récupérer les incompatibles dans un tableau.
« SELECT * FROM « tableDesIncompatilites » WHERE id = 126 » - à récupérer dans un tableau.
Dans la table de recherche lors de la construction, il ne faudra pas mettre les doublons (126 - 206 = 206 - 126) ça divisera le poids de la table par 2.

Merci pour vos solutions !! J’ai fouillé la doc directus en parallèle et j’ai vu ce petit paragraphe dans les relations M2M :

Self-Referencing

You can also have a M2M relationship that connects items within the same collection. An example of this is « Related Articles », where an article might relate to many other articles.

Je vais tenter de voir ce que ca donne. Je vous tiens au jus !

Hello,

Après mes premiers tests, ca marche très bien. Il suffit de créer une relation M2M sur la même table. Je n’ai pas coché le lien inverse puisque on restait sur la même table.

Je suis maintenant capable de lier 2 items d’une même table :slight_smile:

1 « J'aime »