-
Clé primaire
Bonjours,
je débute en conception de base de données, et je voudrais savoir quel type de clé primaire faut-il employer pour mes tables ?
Par exemple, j'ai une table CLIENT qui est représenté par un code client alphanumérique. Vaut-il mieux mettre le code client comme clé primaire, ou un entier long auto incrémenté ?
Apparemment un entier auto incrémenté accèlère les recherches. Mais que se passe-t-il lorsque cet entier dépasse sa valeur maximale ? Il réécrase les trous laissés pour d'autres enregistrements (lors d'un archivage par exemple) ?
Merci pour votre aide.
-
Un entier normal (INTEGER) vous permet 4 milliards de clients, soit 55% de la population terrestre. A raison d'une insertion par seconde votre application va résister 65 ans. Pour ce qui est de l'entier long (BIGINT) de mémoire il va falloir attendre quelques centaines de milliards d'années pour voir le phénomène se produire. Avant cela je vous conseille de prendre vôtre retraite pour éviter les ennuis !
A +
-
:D oui je pense mon application sera à la poubelle d'ici là ...
Mais qu'en est-il du gain de performance entre une clé primaire de type entier autoincrémenté et une chaine de 15 caractères par exemple ?
Merci.
-
Un Integer fait 4 octets soit 32 bit, donc la lecture se fait en un cicle d'horloge par contre pour une chaine de 15 caractères, il faut au minimum 4 cicles d'horloge pour un char, varchar .. et 8 cicles pour les caractères unicodes.
Voilà un peu à quoi cela ressemble. Et le choix est clair !
-