Bonjour,
Quelle clé primaire primaire utiliser pour identifier une personne ?
Je vois sur tous les forums qu'il est déconseillé d’utiliser le Numéro de Sécurité Sociale ...
Merci.
Version imprimable
Bonjour,
Quelle clé primaire primaire utiliser pour identifier une personne ?
Je vois sur tous les forums qu'il est déconseillé d’utiliser le Numéro de Sécurité Sociale ...
Merci.
Salut CliffeCSTL.
Dans quel contexte utilisez-vous cette personne ?
Quand on ne sait pas quoi mettre comme clef primaire, on utilise un incrément :
Ceci permet de rendre chaque ligne de votre table identifiable d'une manière unique.Code:`id` integer unsigned not null auto_increment primary key,
A chaque fois que vous insérez une nouvelle, la colonne 'id' est incrémenté de +1.
--> http://sqlpro.developpez.com/cours/clefs/
Il n'y a pas de bonnes ou de mauvaises solutions. Tout dépend de ce que vous cherchez à faire, avec cette clef !Citation:
Envoyé par CliffeCSTL
Une clef dite primaire, doit être unique, ne doit pas changer de signification au cours du temps, et surtout doit être courte.
Une autre clef pouvant presque répondre à cette définition, serait de mettre un timestamp. L'inconvénient est sa longueur.
Ce que je vous ai donné ci-dessus, est une clef technique, porteuse d'aucune information particulière.
Plus généralement, il vous faut un point d'entré dans votre base de données. Cette clef incrémentale est la solution idéale.
Le débat entre une clef porteuse d'informations et une clef purement technique n'est toujours pas tranché.
@+
Il ne faut pas confondre non plus clé fonctionnelle, ou clé candidate, et clé technique.
Ici le N° de sécurité sociale est une très bonne clé candidate, permettant d'identifier une personne de manière plus fiable que son Nom-Prénom mais ne doit pas être utilisé comme clé primaire, déjà parce qu'il n'est pas certain que toute personne présente dans la table en possède un et surtout parce que 15 caractères pour un identifiant que l'on reportera dans toutes les les tables l'utilisant en clé étrangère, c'est très lourd.
Donc un identifiant fonctionnel, N° SS pourquoi pas, mais impérativement un identifiant technique, entier auto-incrémenté - géré par le SGBD et non par l'application.
Bonjour à toutes et à tous
Je vais peut-être relancer un débat, mais j'avais compris qu'une clé primaire ne devait pas avoir de sens.
Est-ce que je débloque?
Pierre
Salut Pier.antoine.
Je te retourne la question : à quoi te sert une clef primaire dans une table ?
Et quel est l'usage que tu vas en faire ?
@+
Pas tout à fait, mais quasiment :
La contrainte est la stabilité de la clef primaire, sa valeur ne doit jamais changer, car si c'était le ce cas, les modifications en cascade sur les tables liées peuvent mettre par terre une base de données volumineuse.
Or la meilleure façon d'avoir une valeur stable, est d'avoir une valeur technique dénuée de sens, typiquement un chrono attribué par le système.
L'autre intérêt d'un chrono, est de permettre l'utilisation de format integer, beaucoup plus concis et performant que tout autre format de données pour les calculs dans la plupart des moteurs de bases de données.