Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
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 24/07/2006, 15h11   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 88
Points : 31
Points : 31
Par défaut Primary Key absurde?

Désolé pour le titre mais je ne savais pas comment l'intituler...

Ces temps si je croise bcp d'applications dont les tables ont des champs auto-incrémentés désignés en PRIMARY KEY,

Je me pause la question de savoir si c'est judicieux???
car l'unicité de l'enregistrement est assuré...

qqun pourrait me dire comment l'interpréter....

Merci
papawemba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 15h25   #2
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Tout d'abord, l'AUTO_INCREMENT n'oblige en rien d'utiliser la séquence de numérotation automatique. Il est tout à fait possible de fournir une valeur à la colonne qui a l'attribut AUTO_INCREMENT. Donc l'unicité n'est pas gérée automatiquement juste en spécifiant AUTO_INCREMENT.

Ensuite, si l'AUTO_INCREMENT dépasse la valeur maximal d'un type (ex : il arrive à 256 pour un TINYINT UNSIGNED), MySQL adapte par défaut cette valeur pour qu'elle soit valide (256 transformé en 255). S'il n'y avait pas de contrainte d'unicité, tu te retrouves avec deux champs qui ont le même ID !

Et enfin, mettre PRIMARY KEY crée automatiquement un index, et ça c'est judicieux pour un identifiant.
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 15h55   #3
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 88
Points : 31
Points : 31
ben je ne vois plus l'interet d'un champ auto incrément si on peut le modifier alors???

je serais content d'avoir un exemple concret ;o|
papawemba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 17h02   #4
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
L'intérêt de l'attribut AUTO_INCREMENT est que si tu ne fournies pas de valeur à la colonne (NULL ou 0), MySQL calcule automatiquement la valeur suivante de sa séquence. Donc tu n'as pas besoin de te soucier de l'identifiant numérique de tes lignes.

C'est quand même plus pratique que spécifier une valeur non ? Mais comme je le disais, rien ne t'oblige à spécifier la valeur suivante de l'auto increment (ex : tu as fait un DELETE pour ID=5, et tu décides de réutiliser l'identifiant 5).

Personnellement, je conseille d'utiliser toujours l'incrémentation automatique si on a spécifié AUTO_INCREMENT. Et tanpis pour les DELETE qui font des "trous" dans la séquence.
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 09h04   #5
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 88
Points : 31
Points : 31
Ok merci je n'avais pas vu ça comme ça,
mais maintenant je comprend mieux l'architecture des appli,

Merci pour ces éclaircissements ;o)
papawemba est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h42.


 
 
 
 
Partenaires

Hébergement Web