Ne pas modifier un identifiant ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ne pas modifier un identifiant ?

Re: Ne pas modifier un identifiant ?

par abelthorne » 12 août 2009, 22:19

Ok, merci pour la réponse. Je vais regarder cette histoire d'index unique de plus près. Bon, ce n'est de toute façon pas difficile de tester si un login existe déjà avec mon système mais je ne voyais pas trop en quoi ça pouvait poser problème globalement. Bêtement, je n'avais pas pensé aux tables associées.

Re: Ne pas modifier un identifiant ?

par zeus » 12 août 2009, 22:08

Comme je le dit dans le tuto en question, un identifiant ne doit pas être une valeur que l'utilisateur connait.

Ton exemple est une illustration parfaite : tu as une table "utilisateur". Immagine que tu mettes à disposition une table "message" qui sont associés à un utilisateur. Dans cette table, il faut que tu mettes la clé primaire de la table utilisateur.
Si tu utilises le login comme clé primaire de la table "utilisateur", lorsque quelqu'un va vouloir changer son login, il va falloir que tu modifies tous les enregistrements de la table "message" pour qu'ils pointent sur le bon enregistrement.

Donc, il faut que tu utilises un identifiant qui est inconnu du public, qui ne peut pas etre modifié, et qui sera le garant à travers le temps de l'identification d'un enregistrement.

Par contre, si ton soucis, c'est de faire en sorte que ta table ne puisses avoir 2 login identiques, il existe la solution des index unique (je t'ai donné le lien vers MySQL, mais c'est implémenté dans tout les SGBD).

Ne pas modifier un identifiant ?

par abelthorne » 12 août 2009, 19:39

Bonsoir,
En parcourant les tutos, je vois qu'il y en a un PHP/SQL qui conseille de ne jamais modifier les identifiants des données.

Et justement, je me posais une question il y a quelques jours : dans le cas d'une table d'utilisateurs qui sont identifiés par un login qui doit être unique (deux utilisateurs ne doivent pas avoir le même login), est-ce qu'il vaut mieux utiliser un id numérique pour chaque utilisateur ou utiliser le champ login comme clé unique de la table ?