Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/10/2006, 07h52   #1
Invité régulier
 
Inscription : octobre 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 23
Points : 8
Points : 8
Par défaut Différence entre clé candidate, clé primaire et clé unique.

Bonjour,

Je n'arrive pas a comprendre la différence entre une clé candidate, clé primaire et clé unique.

Je trouve que ce sont tous des synonymes et je n'arrive pas a faire la différence ?

Une aide serait appreciée.

Merci.
West01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2006, 09h58   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 793
Points : 17 793
Un clef candidate est un concept au niveau modélisation. Ce sont n'importe quels attributs d'une relation capable de retrouver un élément unique de la relation (tuple) par leur(s) valeur(s).

Une clef primaire est un concept au niveau du modèle mais aussi des SGBDR.
La clef primaire est une clef choisit parmi les clef candidates.

Une clef unique, cela n'existe pas. En revanche il existe des CONTRAINTES D'UNICITÉ. (SGBDR).

Petit exemple :

SALARIÉ(Nom, Prenom, DateNaissance, Matricule, N°Sécu)

Clef candidate : Matricule ou N°Sécu
Si je prends comme clef primaire de ma relation le Matricule, alors la relation devient :
SALARIÉ(N°Sécu, Nom, Prenom, DateNaissance, Matricule)

Lorsque je vais traduire cela en tables, j'aurais intérêt à définir en sus de la clef primaire une contrainte d'unicité sur la colonne Matricule, afin d'éviter que l'on ne saisisse par erreur un même matricule à deux employés différents.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2006, 10h26   #3
Invité régulier
 
Inscription : octobre 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 23
Points : 8
Points : 8
Par défaut ouf...

Merci pour la reponse.

Mais je ne comprends pas toujours le concept de clé candidate . Je trouve trop abstrait la definition que vous m'avez envoyé. (Ca ressemble a la definition que j'ai dans mon livre).

Est-ce possible d'avoir un exemple concret.


Pour ce qui est des autres clés, ca va.

Merci.
West01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2006, 14h15   #4
Membre du Club
 
Inscription : septembre 2003
Messages : 70
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 70
Points : 59
Points : 59
Envoyer un message via ICQ à Zelphalya Envoyer un message via AIM à Zelphalya Envoyer un message via MSN à Zelphalya Envoyer un message via Yahoo à Zelphalya
Si je comprends bien (me corriger si je me trompe) :

Imaginons que je définisse une contrainte d'unicité sur le trio "Nom", "Prenom", "dateNaissance". Ce trio est une clef candidate ? (car il me permet de retrouver une unique entrée)
Zelphalya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2006, 00h01   #5
Xo
Expert Confirmé
 
Avatar de Xo
 
Inscription : janvier 2005
Messages : 2 701
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2005
Messages : 2 701
Points : 3 237
Points : 3 237
Envoyer un message via Skype™ à Xo
Citation:
Envoyé par West01

Mais je ne comprends pas toujours le concept de clé candidate .
Pour une voiture, une clé candidate pourrait être son n° d'immatriculation, ou son n° de série, qui sont censés être uniques.
Pour une personne, son numéro de sécu (en France) est une clé candidate. Son adresse mail peut en être une autre (si toutes les personnes gérées ont un mail)
Pour des livres, le n° d'ISBN est une clé candidate

Citation:
Envoyé par Zelphalya
Si je comprends bien (me corriger si je me trompe) :

Imaginons que je définisse une contrainte d'unicité sur le trio "Nom", "Prenom", "dateNaissance". Ce trio est une clef candidate ? (car il me permet de retrouver une unique entrée)
Hum, presque, mais avoir des doublons sur cette combinaison reste possible, bien que assez improbable en fonction de la population que tu veux gérer
__________________
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau

"Expliquer empêche de comprendre si cela dispense de chercher"

Quiz Oracle : venez tester vos connaissances !

La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Xo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 17h40   #6
Membre du Club
 
Inscription : septembre 2003
Messages : 70
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 70
Points : 59
Points : 59
Envoyer un message via ICQ à Zelphalya Envoyer un message via AIM à Zelphalya Envoyer un message via MSN à Zelphalya Envoyer un message via Yahoo à Zelphalya
Comment avoir des doublons si j'ai défini une contrainte d'unicité (comme j'ai dit)
Zelphalya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 18h26   #7
Xo
Expert Confirmé
 
Avatar de Xo
 
Inscription : janvier 2005
Messages : 2 701
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2005
Messages : 2 701
Points : 3 237
Points : 3 237
Envoyer un message via Skype™ à Xo
Citation:
Envoyé par Zelphalya
Comment avoir des doublons si j'ai défini une contrainte d'unicité (comme j'ai dit)
Si tu définis une telle contrainte, tu n'auras pas de doublons dans tes données.

Ma remarque portait sur la pertinence de la définition d'une telle contrainte, il est possible de trouver des homonymes nés à la même date in the real life
__________________
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau

"Expliquer empêche de comprendre si cela dispense de chercher"

Quiz Oracle : venez tester vos connaissances !

La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Xo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2006, 20h38   #8
Membre du Club
 
Inscription : septembre 2003
Messages : 70
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 70
Points : 59
Points : 59
Envoyer un message via ICQ à Zelphalya Envoyer un message via AIM à Zelphalya Envoyer un message via MSN à Zelphalya Envoyer un message via Yahoo à Zelphalya
Je suis tout à fait d'accord à ce niveau, mais bon c'était pour travailler sur l'exemple déjà donné
Zelphalya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 16h15   #9
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 2 886
Détails du profil
Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 2 886
Points : 5 128
Points : 5 128
Par défaut Vous avez dit "clé candidate" ?

Bonjour West01,

Voici ce qu’écrivait en 1971 Ted Codd, père du Modèle Relationnel de Données (je traduis) :
Citation:
Clés candidates

Chaque clé candidate K d’une relation R (sous-entendez table) est par définition une combinaison d’attributs de R (à la limite un attribut unique) possédant les propriétés P1 et P2 suivantes :

P1 : (Unicité) Pour chaque tuple de R (sous-entendez ligne), la valeur de K identifie (de manière unique) ce tuple ; c’est-à-dire R.K --> R.OMEGA, OMEGA représentant la collection de l’ensemble des attributs de la R ;

P2 : (Non redondance) Aucun attribut de K ne peut en être évacué sans détruire la propriété P1.

Évidemment, il existe toujours au moins une clé candidate, parce que la combinaison de l’ensemble des attributs de R possède la propriété P1. Reste le problème de chercher les sous-ensembles ayant la propriété P2.
Mon commentaire personnel : la dernière affirmation peut être infirmée si un des attributs de R peut être NULL. Bon, ça n’est pas le problème, à la limite on crée un attribut non NULL dont le rôle est d’être clé primaire, cf. ci-dessous.


Un peu plus loin :
Citation:
Pour chaque relation R d’une base de données, une de ses clés candidates est arbitrairement désignée comme clé primaire de R. La distinction habituelle que l’on fait entre la clé primaire et les autres clés candidates (s’il y en a d’autres) est qu’un tuple ne peut comporter de valeur indéfinie pour les composants de cette clé, alors que les composants hors la clé peuvent être indéfinis.
Cette restriction est imposée à cause du rôle vital joué par la clé primaire dans les algorithmes de recherche....
Pour imager, je dirais que la clé primaire est aux clés candidates non retenues ce qu’est Miss France pour ses dauphines...

Une clé candidate non retenue comme clé primaire est encore appelée clé alternée ou encore de rechange (Alternate key)

Référence :
E. F. Codd: Further Normalization of the Data Base Relational Model. IBM Research Report RJ 909, San Jose, California: (1971)

Bonne quête...
__________________
_
Faites simple, mais pas plus simple ! (A. Einstein)
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 (Bonne lecture !)
fsmrel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h10.


 
 
 
 
Partenaires

Hébergement Web