Vous n'êtes pas identifié(e).
Bonjour,
Je vais poser une question sans doute bête et naïve , mais je n’ai pas trouvé de réponse claire (et je débute, merci d’être indulgent !).
Admettons que j’aie 2 tables :
Termes (id_terme, terme)
Synonymes (id_syn, synonyme)
Les champs id_terme et id_syn sont des INT.
Les champs terme et synonyme sont des VARCHAR.
Etant donné qu’il y a une relation n,n entre les 2 tables, je vais créer une table associative faisant correspondre les ID des 2 tables : Assoc(id_terme, id_syn)
Jusque là OK. Et là, tout à coup, je me dis : mais après tout, qu’est-ce qui m’empêche de créer une table associative contenant les termes et les synonymes ? Ce sera peut-être moins performant (un peu moins ou beaucoup moins… telle est la question !), mais en cas de problème, j’y verrais plus clair. Ca donnerait ça : Assoc(terme, synonyme)
Est-ce que c’est vraiment une solution à proscrire absolument (en termes de performances) ou pas forcément ?
Merci pour vos réponses.
Pascal
Hors ligne
Bonjour pascalpa,
Vous pouvez créer la table Assoc
Dans cette table il faudrait mettre
id_Assoc
id_terme
id_syn
Dans cette table, il est possible de mettre plusieurs synonymes pour chaque thermes.
Hors ligne
Bonjour,
Etant donné qu’il y a une relation n,n entre les 2 tables, je vais créer une table associative faisant correspondre les ID des 2 tables : Assoc(id_terme, id_syn)
Il s'agit bien en effet au niveau bases de données de la façon correcte de représenter une relation n,n au sens de l'algèbre relationnelle. Elle sera performante tant que ces ids resteront représentés par des entiers à valeur purement technique. Selon le SGBDR utilisé, l'ordre du doublet {id_terme,id_syn} ou {id_syn,id_terme} aura quant à lui un impact au niveau indexation (notion d'index couvrant), et donc au niveau performances, selon votre contexte d'exploitation.
Bonne journée.
Dernière modification par Jc (09-06-2015 14:13:16)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne