IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DBDesigner Discussion :

Clés étrangères et relations entre tables


Sujet :

DBDesigner

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Clés étrangères et relations entre tables
    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.

  2. #2
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut erf
    Ok, je me répond à moi-même... l'unique problème était que j'utilisais des relations de type "identifying" qui ajoute automatiquement toutes les clés de la table cible dans l'index primaire.

    Je suis assez dubitatif quant à l'utilité de cette fonctionnalité (à part quelques cas hyper spécifiques)... mais bon, avec les relations mises en non-identifying, tout rentre dans l'ordre.

    Excellente journée à tous
    Marc H.

  3. #3
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Je suis en train de finaliser la traduction de la documentation html en ligne de DBDesigner et je t'avoue que la partie explicative des types de relations me pose quelques soucis.
    Ainsi, l'exemple et l'explication de la relation de type 1:n (Non Identifying), me semble tout sauf claire et explicite.
    J'ai, comme toi, fait l'expérience à l'utilisation qu'il vaut mieux l'utiliser que l'autre relation 1:n.
    Dans la vie professionnelle j'ai rencontré un cas, sous DBM, dans lequel un empilement quasi hiérarchique de tables faisait qu'on se retrouvait avec un identifiant composé de six rubriques (CROUS, CAMPAGNE, INE, RANGVOEU, IDAIDE, MOISDEPAIEMENT) dans la table LIGNECREANCE, clés étrangères des parents des différents étages.
    On m'a expliqué alors qu'il s'agissait d'une 'optimisation' afin d'éviter des jointures dans certaines requêtes.
    Je pense que cette partie de la traduction va nécessiter une [NDT] pour tenter de mieux expliciter la problématique.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

Discussions similaires

  1. [AC-2007] Relations entre tables contenant plusieurs clés primaires
    Par AnnaPouet dans le forum Modélisation
    Réponses: 7
    Dernier message: 12/07/2010, 11h39
  2. Relation entre tables et clés primaires
    Par Nashe dans le forum Modélisation
    Réponses: 3
    Dernier message: 19/08/2009, 22h43
  3. Relation entre tables avec clés différentes
    Par lylandra6 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/09/2008, 23h01
  4. relations entre tables
    Par ilyassou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/11/2005, 07h48
  5. Lister toutes les clés étrangères de toutes le tables
    Par Samish dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/08/2005, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo