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

Schéma Discussion :

Déterminer la clé primaire


Sujet :

Schéma

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Points : 51
    Points
    51
    Par défaut Déterminer la clé primaire
    Bonjour,
    j'ai des soucis pour déterminer la clé primaire en fonctions de dépendances fonctionnelles.

    J'ai une table (classe) ayant 7 attributs.
    Voici les dépendances fonctionnelles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a1 -> a2, a3
    a2,a3,a6 -> a4,a5
    a5 -> a7
    Je ne sais pas si prendre comme clé primaire: a1,a6
    ou prendre: a1,a2,a3,a6

    Merci d'avance

  2. #2
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 104
    Points
    1 104
    Par défaut
    Bonsoir,

    Citation Envoyé par alex2746 Voir le message
    j'ai des soucis pour déterminer la clé primaire en fonctions de dépendances fonctionnelles.
    Pour commencer il faut définir ce qu'est une clé primaire.
    En SQL il ne peut y avoir qu'une seule clé primaire par table. La clé primaire est choisi au hasard parmi l'ensemble des clés candidates.

    Une clé candidate est sous-type de surclé.
    La clé candidate en plus de posséder la propriété d'unicité (comme la surclé), vérifie aussi la propriété d'irréductibilité.

    Pour les définitions précises de ces concepts voyez par exemple ce message d'fsmrel :
    http://www.developpez.net/forums/d75...e/#post4355727

    Citation Envoyé par alex2746 Voir le message
    Je ne sais pas si prendre comme clé primaire: a1,a6
    ou prendre: a1,a2,a3,a6
    Ces ensembles d'attributs sont des surclés puisqu'ils déterminent tous les attributs de la table.
    DF1: { A1, A2, A3, A6 } { A1, A2, A3, A4, A5, A6, A7 }
    DF2: { A1, A6 } { A1, A2, A3, A4, A5, A6, A7 }

    Le membre gauche de la DF1 ne peut peut être une clé candidate puisqu'il n'est pas irréductible. C'est une surclé de l'ensemble d'attribut {A1, A6} qui lui est irréductible.

    Donc, c'est le couple { A1, A6 } qui devrait être la clé primaire de votre table.

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut Les règles d'Armstrong : c'est parti.
    Bonsoir,


    Avant de parler de clé primaire, on parle d’abord de clé candidate (ou encore plus simplement de clé). La clé primaire d’une table T n’est qu’une clé (peut-être la seule) parmi l’ensemble des clés candidates de cette table.

    Soit K un sous-ensemble d’attributs de T. Si deux lignes de T ne peuvent pas avoir la même valeur pour K, alors K est une surclé de T. On dit encore que K vérifie ce qu’on appelle la règle d’unicité des surclés.

    Cette règle équivaut à dire que K détermine fonctionnellement chaque attribut de T :
    K {A1, A2, A3, A4, A5, A6, A7}
    (Notez l’emploi des accolades, car dans une dépendance fonctionnelle, le déterminant et le dépendant sont des ensembles).

    Pour affirmer que la paire {A1, A6} est une surclé, il faut donc démontrer que
    {A1, A6} {A1, A2, A3, A4, A5, A6, A7}.
    Pour cela, il faut en passer par les règles d’Armstrong :

    Soient X, Y, Z, W des sous-ensembles quelconques d'attributs de T. Notons XY l'union de X et de Y.

    Les trois premières règles sont les suivantes:
    1. Réflexivité : si Y est un sous-ensemble (non nécessairement strict) de X, alors X Y.
    2. Augmentation : si X Y, alors XZ YZ.
    3. Transitivité : si X Y et Y Z alors X Z.

    Règles que l'on peut compléter par les suivantes qui en sont inférées :
    4. Union : si X Y et X Z alors X YZ.
    5. Décomposition : si X YZ alors X Y et X Z.
    6. Pseudo-transitivité : si X Y et YW Z alors XW Z.

    En avant.

    Les dépendances fonctionnelles connues sont les suivantes :
    DF1 : {A1} {A2, A3}
    DF2 : {A2, A3, A6} {A4, A5}
    DF3 : {A5} {A7}
    Montrons que le sous-ensemble {A1, A6} est une surclé.

    En vertu de la règle d’augmentation appliquée à DF1 :
    {A1} {A6} {A2, A3} {A6}
    Que l’on note encore ainsi :
    DF4 : {A1, A6} {A2, A3, A6}
    En vertu de la règle de transitivité appliquée à DF4 et DF2, on produit :
    DF5 : {A1, A6} {A4, A5}
    En vertu de la règle d’augmentation appliquée à DF3 :
    DF6 : {A4, A5} {A4, A7}
    En vertu de la règle de transitivité appliquée à DF5 et DF6, on produit :
    DF7 : {A1, A6} {A4, A7}
    En vertu de la règle d’union appliquée à DF4, DF5 et DF7 (et non pas DF6, merci JPhi33 !), on produit :
    DF8 : {A1, A6} {A2, A3, A4, A5, A6, A7}
    Et finalement, par augmentation :
    DF9 : {A1, A6} {A1, A2, A3, A4, A5, A6, A7}

    Ainsi, la paire {A1, A6} est une surclé. Est-ce une clé candidate ?

    Une clé candidate est une surclé K qui en plus de vérifier la règle d’unicité imposée aux surclés, vérifie en plus une règle dite règle d’irréductibilité, selon laquelle il n’existe pas de sous-ensemble K’ strictement inclus dans K qui vérifie lui aussi la règle d’unicité.

    Les sous-ensembles de la paire {A1, A6} sont les singletons {A1} et {A6}, or au mieux on a :
    {A1} {A1, A2, A3}
    {A6} {A6}
    Ces singletons ne vérifient pas la règle d’unicité et ne peuvent constituer des clés candidates. En conséquence, la paire {A1, A6} vérifie la règle d’irréductibilité outre celle d’unicité : elle constitue bien une clé candidate. Dans le contexte SQL, elle peut donc être retenue comme clé primaire.

    Qu’en est-il du quadruplet {A1, A2, A3, A6} ?
    Selon la méthode appliquée ci-dessus, on montre qu’il représente une surclé :
    {A1, A2, A3, A6} {A1, A2, A3, A4, A5, A6, A7}
    Mais il inclut le sous-ensemble strict {A1, A6} qui, comme on l'a vu, vérifie lui aussi la règle d’unicité : le quadruplet {A1, A2, A3, A6} ne vérifie pas la règle d'irréductibilité et ne constitue donc pas une clé candidate (et a fortiori il ne peut être retenu comme clé primaire).

    That's all.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    @Oishiiii

    Je n'avais pas vu votre réponse. Mais je vois que nous sommes en phase.


    Bonne nuit...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  5. #5
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 104
    Points
    1 104
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Je n'avais pas vu votre réponse. Mais je vois que nous sommes en phase.
    Oui, cette fois-ci je suis en phase avec vous.
    Alex2746 pourra directement se rendre à votre message très complet avec une belle démonstration.

    Pour être honnête je n'ai pas réussi à retrouver tout seul les surclés en partant des DF.
    J'ai un peu triché avec une petite application. J'ai implémenté en Java l'algorithme qui calcul la fermeture d'un ensemble d'attributs par rapport à un ensemble de DF.
    Je vais essayer d'en faire quelque chose d'assez complet (aller jusqu'à vérifier si une relation est en BCNF?) avec une interface graphique sympa pour la partager avec ceux que ça intéresse.

    J'ai encore énormément à apprendre, que ce soit les DF, la normalisation, ou la Théorie Relationnelle de manière générale, c'est tout à fait passionnant.

    J'attends d'ailleurs avec impatience la suite de votre article sur la normalisation qui - j'en suis conscient - représente un travail pharaonique.

    A bientôt.

  6. #6
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut
    Bonjour,

    Je vais encore jouer les rabat-joie...
    Citation Envoyé par fsmrel Voir le message
    DF4 : {A1, A6} {A2, A3, A6}
    En vertu de la règle de transitivité appliquée à DF4 et DF2, on produit :
    DF5 : {A1, A6} {A4, A5}
    En vertu de la règle d’augmentation appliquée à DF3 :
    DF6 : {A4, A5} {A4, A7}
    En vertu de la règle de transitivité appliquée à DF5 et DF6, on produit :
    DF7 : {A1, A6} {A4, A7}
    En vertu de la règle d’union appliquée à DF4, DF5 et DF6, on produit :
    DF8 : {A1, A6} {A2, A3, A4, A5, A6, A7}
    C'est DF7, non ?

    (preuve que j'ai tout lu ! )
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par JPhi33

    C'est DF7, non ?
    Vous avez parfaitement raison. Ach ! Fichue coquille... C’eut été ballot de calculer DF7 pour ne pas s’en servir...
    J’ai modifié mon précédent message en conséquence.

    Merci à vous !
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

Discussions similaires

  1. Déterminer une clé primaire sur une table inconnue
    Par Gillou6772 dans le forum DB2
    Réponses: 4
    Dernier message: 06/10/2012, 16h07
  2. Déterminer le CPUID
    Par ZuZu dans le forum Assembleur
    Réponses: 9
    Dernier message: 21/05/2008, 13h09
  3. Réponses: 5
    Dernier message: 25/03/2003, 17h27
  4. déterminer la version de Winsock installée
    Par BlueX_scf dans le forum Web & réseau
    Réponses: 7
    Dernier message: 24/02/2003, 10h23
  5. Déterminer l'adresse d'une application en mémoire
    Par Gib dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 11/06/2002, 14h27

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