Limites du modèle relationnel pour un graphe non orienté

Le modèle relationnel nous oblige à créer des rôles pour la table associative, ci-dessous à droite, en opposition à notre volonté de modéliser un graphe non orienté.

Au niveau conceptuel, le modèle ci-dessus à gauche, représente le fait qu’il existe ou pas une route entre deux villes ; si cette route existe, elle peut être parcourue dans les deux sens.

Au niveau logique, le modèle relationnel nous oblige à donner un rôle à chacune des villes. La mise en place de ces rôles, Vil_RouteA et Vil_RouteB, va être source de confusion. Dans un premier temps, nous enregistrons, dans la table ROUTES, une relation de la ville A à la ville B en associant la ville A à la colonne de clé étrangère Vil_RouteA_num et la ville B à la colonne Vil_RouteB_num. Dans un deuxième temps, nous recherchons s’il existe une route entre les villes A et B. Nous obtiendrons une réponse positive si nous associons les deux colonnes de clés étrangères aux mêmes villes que pour la saisie. Si nous les inversons, nous obtiendrons une réponse négative.

Pour supprimer la notion de rôle introduite par la transformation, nous pouvons proposer deux solutions :

Dans un souci de minimisation des risques de bruit introduit par une redondance de données, nous préconisons la deuxième solution. L’utilisation d’une vue permet de « voir » les arcs du graphe sans orientation tout en ayant une base de données sans redondance.