Bonjour tout le monde,
J'aurais une petite question à vous soumettre. Je suis en train de concevoir une base de données MySQL via DB designer 4... et l'un de ses comportements me semble quelque peu étrange (c'est peut-être un simple problème d'incompréhension dû à mon inexpérience).
Soit trois tables: A, B et C, possédant uniquement une clé primaire chacune. J'ai des relations entre ces tables tel que:
A 1->n B 1->n C
Étant donné ces relations, DB designer (en mode MySQL) va automatiquement créer pour la table B, une clé étrangère vers la clé primaire de C. Jusque là rien d'anormal... Sauf qu'il va également prendre la liberté d'ajouter cette nouvelle clé étrangère dans le PRIMARY index de la table B (qui sera dès lors composé de la clé primaire initial de B et de cette clé étrangère vers C).
De la même manière depuis la table A, une clé étrangère sera ajoutée pour tous les champs faisant partis du PRIMARY index de B. A se retrouvera donc avec deux clés étrangères supplémentaires, l'une pointant vers la clé primaire de B, et l'autre vers la clé étrangère contenu dans B (et qui va elle-même vers C)...
Ces deux clés étrangères sont également intégrées dans le PRIMARY index de A qui se retrouve composé de 3 clés en tout, et ainsi de suite... Ce comportement est également observable dans les cas de généralisation.
Maintenant que j'approche d'une vingtaine de tables, certaines d'entre-elles se retrouvent avec 8 clés étrangères (dont la moitié ne seront probablement jamais accédées dans le cadre de nos requêtes). DB designer refuse de les supprimer sans supprimer également la relation auxquelles elles se rattachent.
Ma question est la suivante: pourquoi DB designer rajoute il autant de clé étrangères que de clés présentes (primaires ou étrangères) dans le PRIMARY index de la table cible. Est-ce un comportement propre à MySQL qui les créera de toute façon automatiquement ? Ou est-ce une technique de normalisation que je ne connaîtrai pas ?
Toutes les réponses/conseils sont les bienvenus
Merci Beaucoup
Marc H.
Partager