Au cours de l'une des dernières leçons à l'université (je suis étudiant), le professeur nous a demandé de développer une base de données (MySQL Server si c'est important) et une petite application cliente qui consommerait la base de données comme source de données.
L'une des exigences était que la colonne d'identité (qui est le PK dans chaque table) doit être séquentielle, car c'est une bonne pratique (selon les mots du conférencier). Autrement dit, lorsque la ligne du tableau est supprimée, son PK doit être réutilisé dans les insertions suivantes. J'ai une connaissance moyenne des SGBDR, des PK et des colonnes d'identité. D'après ce que je comprends, cette colonne d'identité est juste un moyen de laisser DB générer automatiquement des PK lors de l'insertion de lignes et rien de plus. Et la valeur de la colonne d'identité ne doit en aucun cas être liée aux attributs de ligne (tant qu'elle n'est pas une clé naturelle).
Cette exigence (colonne d'identité strictement séquentielle) était suspecte pour moi. J'ai essayé de demander au conférencier ce qui ne va pas si l'identité n'est pas séquentielle (avec des lacunes causées par des suppressions), mais j'ai obtenu une réponse très abstraite comme "c'est pratique pour les utilisateurs et utile pour les administrateurs de base de données qui maintiennent la base de données". Pas d'exemples précis. L'argument «pratique pour les utilisateurs» semble idiot, car il n'a aucune signification dans le domaine des affaires.
Je suis donc curieux de savoir si ces raisons sont réelles? Je ne peux penser qu'à un cas où le réamorçage de la colonne d'identité est requis - lorsque l'espace d'identité est épuisé. Mais il s'agit davantage d'un problème de conception lorsque le type de colonne d'identité a été mal choisi, par exemple simple int
au lieu de bigint
ou uniqueidentifier
lorsque la table contient des milliards de lignes. Supposons qu'une colonne d'identité soit un index clusterisé: les lacunes dans la colonne d'identité peuvent-elles affecter les performances de l'index? Peut-être existe-t-il d'autres raisons réelles de réamorcer automatiquement la colonne d'identité après chaque suppression, je ne suis pas au courant?
Merci d'avance!