Comment représenter la multiplicité (cardinalité) n-n ?

a marqué ce sujet comme résolu.

Bonjour,

Je me pose une question concernant les multiplicité qu'on trouve dans les diagrammes de classe ou ceux représentant une base de donnée. Concrètement, comment peut-on représenter une relation N-N ?

Par exemple, imaginons la relation "Personne <—> Personne". Une personne est amie avec N personne. Comment cela se passerait en base de données pour connaître l'ensemble des amis de X ?

Dans la table users, je vois mal un champ "friends" contenant une liste d'id séparés par une virgule ou que sais-je.

Je vous remercie d'avance :)

C'est pas énorme, les SGBD savent parfaitement gérer ça.

Par contre pour que ça fonctionne correctement, il faut que :

  1. Les 2 champs ensemble soient une clé primaire (donc chaque paire est unique, sachant que (A, B) ≠ (B, A)).
  2. Il y a une contrainte de clé étrangère entre chaque colonne et l'ID correspondant dans la table ciblée.

Attention à ton exemple, il ne contient pas de doublon ! Si la relation est « est ami » :

  • (A, B) signifie « A est ami avec B » (mais pas l'inverse)
  • (B, A) signifie « B est ami avec A » (mais pas l'inverse)

La notion d'amitié est un mauvais exemple parce qu'elle est généralement réciproque, ce qui n'est pas le cas d'une relation N..M en général.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte