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

Requêtes MySQL Discussion :

Problème définition d'une relation ayant 3 clefs primaires


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Problème définition d'une relation ayant 3 clefs primaires
    Problème définition d'une relation ayant 3 clefs primaires

    Bonjour,
    Je sais qu'il n'est pas possible d'avoir 3 clefs primaires distinctes dans une même relation. Or je me retrouve face à un problème. Pour une relation détaillant les caracts d'un objet j'ai 3 clefs qui peuvent le définir de façon unique, une ref_intern,une ref_constructeur,une ref_societe_annexe.

    Ce qui me donne en plus une relation cyclique entre les références car à chaque référence correspond un couple unique des deux autres références

    ref_intern -> ref_constructeur -> ref_societe_annexe -> ref_intern

    Chaque ref me permet d'obtenir les caractéristiques de mon objet. Dois-je creer 3 relations distinctes ? Comme par exemple
    R1 : ref_inter -> caract_objet R2 : Ref_constructeur -> ref_intern R3 : ref_societe_annexe -> ref_intern

    Bref je suis un peu déboussolé, je ne suis jamais tombé dans un cas pareil.
    Merci d'avance pour vos réponses

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    Par défaut
    Si vous modélisiez au niveau conceptuel avec un schéma entité association, la solution vous sauterais aux yeux !

    Pensez à poster dans le forum adéquat (modélisation) ici :
    http://www.developpez.net/forums/f62...sation/schema/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    Citation Envoyé par Chana38
    Problème définition d'une relation ayant 3 clefs primaires
    Non, vous ne pouvez pas avoir trois clef primaires ! Une table accepte qu'une et une seule clef primaire.
    Mais votre clef primaire peut avoir trois colonnes qui la compose.
    Par contre, vous pouvez créer des "unique index" autant que vous le désirez dans une table.

    Citation Envoyé par Chana38
    Pour une relation détaillant les caracts d'un objet j'ai 3 clefs qui peuvent le définir de façon unique, une ref_intern, une ref_constructeur, une ref_societe_annexe.
    Dans ce cas, vous définissez en tant que clef primaire l'une de vos trois clefs, et pour les deux autres, vous définissez un "index unique".

    Citation Envoyé par Chana38
    Ce qui me donne en plus une relation cyclique entre les références car à chaque référence correspond un couple unique des deux autres références
    Si j'ai bien compris, vous avez ceci :
    --> clef_A = (col_1 ; col_2)
    --> clef_B = (col_1 ; col_3)
    --> clef_C = (col_2 ; col_3)

    Citation Envoyé par Chana38
    ref_intern -> ref_constructeur -> ref_societe_annexe -> ref_intern
    Là par contre, je ne comprends pas ce que vous nommez cyclique !

    Citation Envoyé par Chana38
    Chaque ref me permet d'obtenir les caractéristiques de mon objet.
    Oui car chacune de vos trois clefs définissent d'une manière unique une ligne de votre table.

    Citation Envoyé par Chana38
    Dois-je creer 3 relations distinctes ? Comme par exemple
    R1 : ref_inter -> caract_objet
    R2 : Ref_constructeur -> ref_intern
    R3 : ref_societe_annexe -> ref_intern
    C'est le symbole "->" que je ne comprends pas bien dans votre façon de voir votre problème.

    Il me faudrait un exmple un peu plus parlant, car je ne comprends pas ce que vous appelez "cyclique" ni votre façon de lier ce que vous nommez "référence".
    Donnez un jeu d'essai complet et indiquez sur un exemple le problème que vous rencontrez et donnez nous le descriptif de votre table actuel.

    A priori, c'est un problème de modélisation de votre base de données.
    Pour définir les accès à une table, je ne voie que deux solutions possibles dans votre cas et si j'ai bien compris votre problème :
    --> soit définir une clef primaire sur vos trois colonnes.
    --> Soit définir une clef primaire sur (Col_1 ; Col_2) et les deux autres "unique index" sur (Col_2 ; Col_3) et (Col_1 ; Col_3).

    C'est tout ce que je peux dire en l'état de vos explications.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/06/2012, 11h00
  2. Relation oneToOne sur clef primaire
    Par hebus44 dans le forum Doctrine2
    Réponses: 2
    Dernier message: 26/02/2012, 15h49
  3. Réponses: 2
    Dernier message: 15/10/2008, 15h49
  4. [mld]Définition d'une relation
    Par new_wave dans le forum Schéma
    Réponses: 4
    Dernier message: 09/11/2007, 00h17

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